热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hadoop集群离线化搭建(利用HDP快速搭建大数据集群)

一ansible的离线安装链接:https:pan.baidu.coms1dKlwtLWSOKoMkanW900n9Q提取码:ansi相关安装方法详见

一 ansible的离线安装

链接:https://pan.baidu.com/s/1dKlwtLWSOKoMkanW900n9Q
提取码:ansi

相关安装方法详见本人的另一个博客:ansible2.9.18 centos7 x86_64系统下的完全rpm离线安装按照以上博客安装即可 ,本例安装在192.168.0.16上
首先需要说明的是,本次安装教程使用三台虚vm拟机搭建Hadoop集群,相关服务器的具体信息如下:

192.168.0.164G内存,4CPU,100G硬盘
192.168.0.174G内存,4CPU,100G硬盘

192.168.0.184G内存,4CPU,100G硬盘

Hadoop集群的部署计划为:192.168.0.16设置为主节点,192.168.0.17和192.168.0.18设置为副节点。主节点安装ambari,并安装Hadoop的hbase,hdfs,zookeeper,kafka,从节点安装hbase,hdfs,zookeeper,kafka

二,集群搭建前的注意事项和相关安装包的下载

**(1)三台服务器的防火墙和selinux的关闭
在三台服务器上都执行以下命令:

systemctl disable firewalld && systemctl stop firewalld
编辑 /etc/selinux/config
将该文件的SELINUX=enforcing这一行修改为SELINUX=disabled

如果是使用ansible,那么,命令是这样的(在192.168.0.16):

[root@master html]# ansible all -m shell -a 'systemctl disable firewalld'
192.168.0.18 | CHANGED | rc=0 >>
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
192.168.0.17 | CHANGED | rc=0 >>192.168.0.16 | CHANGED | rc=0 >>
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@master html]# ansible all -m shell -a 'systemctl stop firewalld'
192.168.0.17 | CHANGED | rc=0 >>192.168.0.18 | CHANGED | rc=0 >>192.168.0.16 | CHANGED | rc=0 >>

(2)ambari和HDP的下载链接
ambari和HDP
提取码:hado
下载的文件上传到主服务器192.168.0.16的root目录下,以作备用

三,集群的免密配置和ansible的配置以及域名的设定

(1)ansible的配置
vim /etc/ansible/hosts 在文件末尾添加如下内容:

[hadoopcluster]
192.168.0.16
192.168.0.17
192.168.0.18

(2)免密配置
这个配置有点意思了,我们要达到的效果是三台服务器任意一台登录其它服务器都是免密状态,因此,配置思路是在每一台服务器上生成公私钥,然后将三个authorized_keys的内容合并到一起就可以了,具体操作如下:
在192.168.0.16 这台服务器上,先生成公私钥,然后ssh-copy-id 到自身,也就是执行这么两个命令:
ssh-keygen -t rsa
ssh-copy-id 192.168.0.16
此时,我们观察vim ~/.ssh/authorized_keys,可以看到只有一台服务器的信息。在其余两台服务器同样操作后,将authorized_keys 的内容合并(建议使用xshell复制),最终的vim ~/.ssh/authorized_keys内容应该如下(可以看到包含有root@master,root@slave1,root@slave2就可以了):

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkAAuVE1YSwR6aBTpfaOK5PsG3p+FBs4w0/L6pe7lPu/yGAR7TtJgYA/5u9Vf8wIdVtrnZlDXq7bUkgR4U6tWJJDXxxE3kd4MUOT1XNpJwzPjdlIEkB0iDwZPMJhDWuEVrP/ITMkurz1RgUnhfRdFcJa/fWCRiKgNiqT6/OA9iqjCA/I1Yr/iiPVKufmEn31IL7vzsXGDtDD87wXgVySBC1H5xSfO0QG/OIasBiRjg/1ugYH0jKEL69n9i8jK/A8IEki0Y4K2GqeFsYvsVHpKkdz0juNQbQDa7NXYlcCdIccpfvMxlpp+SePWZzZTILdLtCH9hmalJ8jIna+dw75BR root@master
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzgFsUC4wlM8L9lKit2o6vuJU3i4qC53OfY2Tx9T+jTCx9R0Qf7chtLyIB49d29fVKYvu4/e4nD7thrPLFosh05fuhjb+NmaIq1XLcz14Qta6DcZMJqdhlOXjg4bKZ1QXQ/0GRgBZ0jcaIHQpQVFRFaD/WWZ1o4/d7tpPn6OxAKtL+WDXZbBhCaUUG8M9ESlF6ukGGIqUoUNFS1ejSLzxNMNcpp8TJ5l8w6i5XMPthGq64muMbnM3TiO0qNse9a2vTLncY6Jg5VrQbv7JOqUHwVcLu75xaGqD15Z6HOb5P8cIkm90Km0wZA9OVli9Gb+DzSMdLljj7BhcnByybGAV3 root@slave1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrYMcgQBPP8iyk7DuJqX8rdYE6GNiwZQWdztzhcVqYj15ZqVtEN7IUc7IlDKWF5X730aqCP7+7ag1vOxpP8+pryW74y0uMVOfLfkTiFUfseQdsFrCBfuPVooloee5uxVls+0cmoNwTehylkqCyKhoW/xUsD3iVuumSQ8jRyBsktOXjsND4scxkxA1gAl+h9xGEr+sWOe2tdzUR2tWQHHG91BfM9FzHGmKK24hjKg1Ugp2Qlw2E5S/d/vKM+1ReSIqvG1hquiY/vBSC95GW2r9PVCYEB8L7I2kKY5o7KdLMI6faHzR1PwThpFdGdA0mkiz4tixEEYSDxkJwsv4+S/dt root@slave2

将192.168.0.16的authorized_keys文件scp覆盖即可实现免密登录,当然,此时需要每一个服务器互相间都ssh免密登录一下,以将免密信息写入~/.ssh/known_hosts这个文件内。
此时的ssh登录应该是这样的:(每个服务器都可以这样互相之间免密)

[root@master ~]# ssh master
Last login: Sat Jun 26 05:45:47 2021 from 192.168.0.111
[root@master ~]# logout
Connection to master closed.
[root@master ~]# ssh slave1
Last login: Sat Jun 26 05:45:54 2021 from 192.168.0.16
[root@master ~]# logout
Connection to slave1 closed.
[root@master ~]# ssh slave2
Last login: Sat Jun 26 05:46:03 2021 from 192.168.0.16
[root@master ~]# logout
Connection to slave2 closed.
**(3)域名的固定
在192.168.0.16 这台服务器上编辑文件:
vim /etc/hosts 内容应该如下:
```powershell
192.168.0.16 master myhadoop.com
192.168.0.16 slave1
192.168.0.16 slave2

将该文件scp到其它两个服务器上,我这里绑定了一个局域网内域名 myhadoop.com 到192.168.0.16, 这个是后面安装的时候可以用到。

四 本地Hadoop离线仓库的搭建

不管是使用官方仓库还是自己挂载系统安装ISO文件先做一个仓库,安装httpd以及需要的各种依赖。保证可执行以下命令即可:
yum install gcc gcc-c++ openssl openssl-devel zlib-devel bzip2-devel httpd -y
httpd安装完毕后,启动httpd:
systemctl enable httpd && systemctl start httpd
第二步所下载的文件假设是在root目录下,安装两个RPM包,解压四个压缩文件到 /var/www/html 目录下,
cd ambari/
rpm -ivh libtirpc-0.2.4-0.16.el7.src.rpm --force
rpm -ivh libtirpc-devel-0.2.4-0.16.el7.x86_64.rpm --nodeps --force
tar zxf ambari-2.7.0.0-centos7.tar.gz -C /var/www/html/
tar zxf HDP-3.0.0.0-centos7-rpm.tar.gz -C /var/www/html/
tar zxf HDP-UTILS-1.1.0.22-centos7.tar.gz -C /var/www/html/
tar zxf HDP-GPL-3.0.0.0-centos7-ppc-gpl.tar.gz -C /var/www/html/
编写三个仓库文件,三个仓库文件内容分别为:

[root@master ~]# cat /etc/yum.repos.d/ambari.repo
[ambari]
name=ambari
baseurl=http://192.168.0.16/ambari/centos7/2.7.0.0-897/
gpgcheck=1
gpgkey=http://192.168.0.16/ambari/centos7/2.7.0.0-897/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enable=1
priority=1[root@master ~]# cat /etc/yum.repos.d/hdp.gpl.repo
#VERSION_NUMBER=3.0.0.0-1634
[HDP-GPL-3.0.0.0]
name=HDP-GPL Version - HDP-GPL-3.0.0.0
baseurl=http://192.168.0.16/HDP-GPL/centos7-ppc/3.0.0.0-1634/
gpgcheck=1
gpgkey=http://192.168.0.16/HDP-GPL/centos7-ppc/3.0.0.0-1634/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
[root@master ~]# cat /etc/yum.repos.d/hdp.repo
#VERSION_NUMBER=3.0.0.0-1634
[HDP-3.0.0.0]
name=HDP Version - HDP-3.0.0.0
baseurl=http://192.168.0.16/HDP/centos7/3.0.0.0-1634/
gpgcheck=1
gpgkey=http://192.168.0.16/HDP/centos7/3.0.0.0-1634/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1[HDP-UTILS-1.1.0.22]
name=HDP-UTILS Version - HDP-UTILS-1.1.0.22
baseurl=http://192.168.0.16/HDP-UTILS/centos7/1.1.0.22
gpgcheck=1
gpgkey=http://192.168.0.16/HDP-UTILS/centos7/1.1.0.22/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

拷贝三个仓库文件到从节点:

[root@master yum.repos.d]# scp ambari.repo slave1:/etc/yum.repos.d/
ambari.repo 100% 326 225.3KB/s 00:00
[root@master yum.repos.d]# scp hdp.gpl.repo slave1:/etc/yum.repos.d/
hdp.gpl.repo 100% 272 529.9KB/s 00:00
[root@master yum.repos.d]# scp hdp.repo slave1:/etc/yum.repos.d/
hdp.repo 100% 484 366.7KB/s 00:00
[root@master yum.repos.d]# scp ambari.repo slave2:/etc/yum.repos.d/
ambari.repo 100% 326 192.0KB/s 00:00
[root@master yum.repos.d]# scp hdp.gpl.repo slave2:/etc/yum.repos.d/
hdp.gpl.repo 100% 272 365.1KB/s 00:00
[root@master yum.repos.d]# scp hdp.repo slave2:/etc/yum.repos.d/
hdp.repo 100% 484 680.2KB/s 00:00

五,时间服务器的搭建

**1. 在192.168.0.16服务器上,编辑 /etc/ntp.conf,确保文件中有如下两行内容: server 127.127.1.0
prefer fudge 127.127.1.0 stratum 10

  1. 然后执行如下命令,启动服务: systemctl enable ntpd && systemctl start ntpd

  2. 在192.168.0.17服务器上,编辑
    /etc/ntp.conf,确保文件中有如下一行内容: server 192.168.0.16 然后执行如下命令:
    ntpdate 192.168.0.16,该命令的输出应该为:
    [root@slave2 ~]# ntpdate
    192.168.0.16 26 Jun 19:42:55 ntpdate[2970]: adjust time server 192.168.0.16 offset -0.000098 sec**

  3. 等待大概5-到10分钟后,在17和18服务器上,执行以下命令应该有如下输出:
    [root@slave2 ~]# ntpstat synchronised to NTP server
    (192.168.0.16) at stratum 12 time correct to within 20 ms

    polling server every 64 s [root@slave2 ~]# ntpq -p

    remote refid st t when poll reach delay offset jitter
    ============================================================================
    master LOCAL(0) 11 u 54 64 377 0.684 0.237 0.184


六 正式安装ambari server 和ambari agent


  1. 在192.168.0.16上执行: yum install ambari-server -y
    在192.168.0.17和192.168.0.18上执行 yum install ambari-agent -y

    2. 在192.168.0.16上初始化ambari-server,执行命令:ambari-server setup 详细输入如下::

[root@master yum.repos.d]# ambari-server setup
Using python /usr/bin/python
Setup ambari-server
Checking SELinux...
SELinux status is 'disabled'
Customize user account for ambari-server daemon [y/n] (n)? y
Enter user account for ambari-server daemon (root):
Adjusting ambari-server permissions and ownership...
Checking firewall status...
Checking JDK...
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Custom JDK
==============================================================================
Enter choice (1): 2
WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts.
WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts.
Path to JAVA_HOME: /usr/local/jdk1.8.0_20/
Validating JDK on Ambari Server...done.
Check JDK version for Ambari Server...
JDK version found: 8
Minimum JDK version is 8 for Ambari. Skipping to setup different JDK for Ambari Server.
Checking GPL software agreement...
GPL License for LZO: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
Enable Ambari Server to download and install GPL Licensed LZO packages [y/n] (n)? y
Completing setup...
Configuring database...
Enter advanced database configuration [y/n] (n)?
Configuring database...
Default properties detected. Using built-in database.
Configuring ambari database...
Checking PostgreSQL...
Running initdb: This may take up to a minute.
Initializing database ... OKAbout to start PostgreSQL
Configuring local database...
Configuring PostgreSQL...
Restarting PostgreSQL
Creating schema and user...
done.
Creating tables...
done.
Extracting system views...
ambari-admin-2.7.0.0.897.jar
....
Ambari repo file contains latest json url http://public-repo-1.hortonworks.com/HDP/hdp_urlinfo.json, updating stacks repoinfos with it...
Adjusting ambari-server permissions and ownership...
Ambari Server 'setup' completed successfully.
[root@master yum.repos.d]# ambari-server start
Using python /usr/bin/python
Starting ambari-server
Ambari Server running with administrator privileges.
Organizing resource files at /var/lib/ambari-server/resources...
Ambari database consistency check started...
Server PID at: /var/run/ambari-server/ambari-server.pid
Server out at: /var/log/ambari-server/ambari-server.out
Server log at: /var/log/ambari-server/ambari-server.log
Waiting for server start...............................................
Server started listening on 8080DB configs consistency check: no errors and warnings were found.
Ambari Server 'start' completed successfully.

4. **在17和18上启动ambari-agent,执行命令 ambari-agent restart**

[root@slave2 yum.repos.d]# ambari-agent restart
Restarting ambari-agent
Verifying Python version compatibility...
Using python /usr/bin/python
Found ambari-agent PID: 5817
Stopping ambari-agent
Removing PID file at /run/ambari-agent/ambari-agent.pid
ambari-agent successfully stopped
Verifying Python version compatibility...
Using python /usr/bin/python
Checking for previously running Ambari Agent...
Checking ambari-common dir...
Starting ambari-agent
Verifying ambari-agent process status...
Ambari Agent successfully started
Agent PID at: /run/ambari-agent/ambari-agent.pid
Agent out at: /var/log/ambari-agent/ambari-agent.out
Agent log at: /var/log/ambari-agent/ambari-agent.log

七 安装完成后,浏览器里的样子


用户名和密码都是admin,登陆即可。

八 正式开始安装啦!!

在这里插入图片描述
在这里插入图片描述
新建集群,名字为myhadoop,点击右下角的下一步

在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/202106261125312.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Fsd2F5c2JlZmluZQ==,size_16,color_FFFFFF,t_70
在这里插入图片描述
如果成功了,点击下一步即可。

在这里插入图片描述
选择你所需要的服务,请按需选择。然后下一步

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210626232212222.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Fsd2F5c2JlZmluZQ==,size_16,color_FFFFFF,t_70

在这里插入图片描述
点击下一步。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210626233214903.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Fsd2F5c2JlZmluZQ==,size_16,color_FFFFFF,t_70

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
下载postgresql的驱动重新初始化ambari

在这里插入图片描述
保持默认即可。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210627000417732.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Fsd2F5c2Jl
仍然默认。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210627001013546.png?x-oss-proc
密码设置为统一的,下一步。

!
下一步

在这里插入图片描述

*然后就是漫长的等待,我的浏览器崩溃了,无法截图,很无奈。最终的summer会告诉你是否安装成功,这次的经历告诉我,Hadoop安装的时候不要尝试开DOTA,否则系统会崩的~~~~*


推荐阅读
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 在VMware虚拟机中部署带有中文图形界面的CentOS 7 Linux系统
    本文详细介绍了在VMware虚拟机中部署带有中文图形界面的CentOS 7 Linux系统的步骤。首先,通过“文件”菜单选择“新建虚拟机”并进入自定义设置。接着,在硬盘兼容性选项中选择默认设置。为了更好地进行Linux操作系统的安装练习,建议选择稍后安装操作系统,并在虚拟机安装完成后,根据实际需求删除不必要的硬件组件。此外,本文还提供了详细的配置参数和注意事项,帮助用户顺利完成整个部署过程。 ... [详细]
  • 使用虚拟机配置服务器
    本文详细介绍了如何使用虚拟机配置服务器,包括购买云服务器的操作步骤、系统默认配置以及相关注意事项。通过这些步骤,您可以高效地配置和管理您的服务器。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在 CentOS 6.7 系统维护中,常用的巡检命令包括:`uname -a` 用于查看内核、操作系统和 CPU 信息;`head -n 1 /etc/issue` 用于查看操作系统的版本;`cat /proc/cpuinfo` 用于获取详细的 CPU 信息;`hostname` 用于显示当前主机名;`ls` 命令则用于列出目录内容。这些命令可以帮助系统管理员快速了解系统的运行状态和配置信息,确保系统的稳定性和安全性。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • 在 CentOS 6.6 系统中搭建 MONO 和 Jexus 以支持 ASP.NET 及 MVC 应用的运行环境配置指南
    本文提供了在 CentOS 6.6 系统上配置 MONO 和 Jexus 以支持 ASP.NET 及 MVC 应用的详细步骤。首先,确保本机环境为 CentOS 6.6,并使用阿里云的 YUM 源来安装必要的软件包,包括 gcc、gcc-c++、bison、pkgconfig 和 glib2-devel。这些软件包是构建和运行 MONO 环境的基础,确保系统能够顺利支持 ASP.NET 和 MVC 应用的部署和运行。 ... [详细]
author-avatar
青烟_I乀n-a_396
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有