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

基于【CentOS7+Ambari2.7.0+HDP3.0】搭建HAWQ数据仓库01——准备环境,搭建本地仓库,安装ambari...

一、集群软硬件环境准备:操作系统:centos7x86_64.1804Ambari版本:2.7.0HDP版本:3.0.0HA

一、集群软硬件环境准备:

操作系统:  centos 7 x86_64.1804

Ambari版本:2.7.0

HDP版本:3.0.0

HAWQ版本:2.3.0
5台PC作为工作站:

ep-bd01ep-bd02ep-bd03ep-bd04ep-bd05

  其中ep-bd01作为主节点,用于安装ambari-server。

二、配置操作系统,安装必备软件

1,安装CentOS 7操作系统:环境配置,安装必备软件。

2,安装配置NTP服务,保证集群时间保持同步,以防止由于时间不同而造成掉线故障。

详细看随笔:基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库之——安装配置NTP服务,保证集群时间保持同步
见《安装配置NTP服务》

3,安装MariaDB Server用于Ambari server以及Hue和Hive

详细过程,参见:基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库之一 —— MariaDB 安装配置

 4,安装yum priorities plugin

yum install yum-plugin-priorities -y

 

三、搭建本地仓库:

1,下载软件包:

cd /root
mkdir downloads
cd downloads
wget http://public-repo-1.hortonworks.com/HDP-GPL/centos7/3.x/updates/3.0.0.0/HDP-GPL-3.0.0.0-centos7-gpl.tar.gz
wget http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.0.0/hdp.repo
wget http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.0.0/HDP-3.0.0.0-1634.xml
wget http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.0.0/ambari.repo
wget http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7/HDP-UTILS-1.1.0.22-centos7.tar.gz
wget http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.0.0/HDP-3.0.0.0-centos7-rpm.tar.gz
wget http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.0.0/ambari-2.7.0.0-centos7.tar.gz

 

2、搭建本地仓库:

安装并开启Apache HTTP服务

yum install httpd -y
systemctl enable httpd
systemctl start httpd

安装HTTPD服务

确保/var/www/html目录存在,没有的话创建。

mkdir -p /var/www/html

 创建HDP,HDF子目录

cd /var/www/html
mkdir hdp hdf

解开下载的软件包:

cd /var/www/html
tar -zxvf /root/downloads/ambari-2.7.0.0-centos7.tar.gz -C .
tar -zxvf /root/downloads/HDP-3.0.0.0-centos7-rpm.tar.gz -C ./hdp
tar -zxvf /root/downloads/HDP-GPL-3.0.0.0-centos7-gpl.tar.gz -C ./hdp
tar -zxvf /root/downloads/HDP-UTILS-1.1.0.22-centos7.tar.gz -C ./hdp

 修改下载的ambari.repo,

vim ambari.repo

安装如下内容修改,[注意版本号,需要根据具体下载的版本不同修改,解压后自己查看一下]:

#VERSION_NUMBER=2.7.0.0-897

[ambari-2.7.0.0]
#json.url = http://public-repo-1.hortonworks.com/HDP/hdp_urlinfo.json
name=ambari Version - ambari-2.7.0.0
baseurl=http://ep-bd01/ambari/centos7/2.7.0.0-897
gpgcheck=1
gpgkey=http://ep-bd01/ambari/centos7/2.7.0.0-897/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

 

复制到/etc/yum.repos.d

cp ambari.repo /etc/yum.repos.d/ambari.repo

修改下载的hdp.repo,

vim hdp.repo

安装如下内容修改,[注意版本号,需要根据具体下载的版本不同修改,解压后自己查看一下]:

#VERSION_NUMBER=3.0.0.0-1634
[HDP-3.0]
name=HDP Version - HDP-3.0.0.0
baseurl=http://ep-bd01/hdp/HDP/centos7/3.0.0.0-1634
gpgcheck=1
gpgkey=http://ep-bd01/hdp/HDP/centos7/3.0.0.0-1634/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

[HDP-3.0-GPL]
name=HDP GPL Version - HDP-GPL-3.0.0.0
baseurl=http://ep-bd01/hdp/HDP-GPL/centos7/3.0.0.0-1634
gpgcheck=1
gpgkey=http://ep-bd01/hdp/HDP-GPL/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://ep-bd01/hdp/HDP-UTILS/centos7/1.1.0.22
gpgcheck=1
gpgkey=http://ep-bd01/hdp/HDP-UTILS/centos7/1.1.0.22/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

保存退出,复制到/etc/yum.repos.d/

cp hdp.repo /etc/yum.repos.d/hdp.repo

四、主节点安装ambari server

1,使用刚才配置好的本地仓库,直接yum命令安装。

yum install ambari-server -y

2,查看ambari server 状态

systemctl status ambari-server ● ambari-server.service - LSB: ambari-server daemonLoaded: loaded (/etc/rc.d/init.d/ambari-server; bad; vendor preset: disabled)Active: inactive (dead)Docs: man:systemd-sysv-generator(8)

看到ambari server已成功安装了。

3,配置mariadb,建立用户和数据库供ambari使用

建立数据库用户ambari

mysql -uroot -p

MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> grant all privileges on *.* to 'ambari'@'%' identified by 'ambari';
Query OK, 0 rows affected (0.06 sec)

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]>

建立数据库ambari,并运行ambari数据库建表sql命令文件。

MariaDB [mysql]> create database ambari;
Query OK,
1 row affected (0.01 sec)MariaDB [mysql]> use ambari;
Database changed
MariaDB [ambari]
> source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;
Query OK,
0 rows affected (0.01 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.06 sec)Query OK, 0 rows affected (0.00 sec)
Statement prepared
... ...

4,配置ambari server

执行命令

ambari-server setup

回答选择项,其中JDK选择“”Custom“”,给出系统安装目录,数据库一定要选择高级配置,指定mariadb数据库和用户,本人系统中详细过程如下:

Using python /usr/bin/python
Setup ambari
-server
Checking SELinux...
SELinux status is
'disabled'
Customize user account
for ambari-server daemon [y/n] (n)? n
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): 1
To download the Oracle JDK and the Java Cryptography Extension (JCE) Policy Files you must accept the license terms found at http:
//www.oracle.com/technetwork/java/javase/terms/license/index.html and not accepting will cancel the Ambari Server setup and you must install the JDK and JCE files manually.
Do you accept the Oracle Binary Code License Agreement [y/n] (y)? ^C
Aborting ... Keyboard Interrupt.
[root@ep
-bd01 downloads]# 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)? n
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:
^C
Aborting ... Keyboard Interrupt.
[root@ep
-bd01 downloads]# echo $JAVA_HOME
/usr/java/jdk1.8.0_181-amd64
[root@ep
-bd01 downloads]# $JAVA_HOME/bin/java -version
java version
"1.8.0_181"
Java(TM) SE Runtime Environment (build
1.8.0_181-b13)
Java HotSpot(TM)
64-Bit Server VM (build 25.181-b13, mixed mode)
[root@ep
-bd01 downloads]# 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)? n
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:
^C
Aborting ... Keyboard Interrupt.
[root@ep
-bd01 downloads]# 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)? n
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): 1
To download the Oracle JDK and the Java Cryptography Extension (JCE) Policy Files you must accept the license terms found at http:
//www.oracle.com/technetwork/java/javase/terms/license/index.html and not accepting will cancel the Ambari Server setup and you must install the JDK and JCE files manually.
Do you accept the Oracle Binary Code License Agreement [y/n] (y)? y
Downloading JDK from http:
//public-repo-1.hortonworks.com/ARTIFACTS/jdk-8u112-linux-x64.tar.gz to /var/lib/ambari-server/resources/jdk-8u112-linux-x64.tar.gz
ERROR: Exiting with exit code 1.
REASON: Downloading or installing JDK failed:
'Fatal exception: Failed to download JDK: . Please check that the JDK is available at http://public-repo-1.hortonworks.com/ARTIFACTS/jdk-8u112-linux-x64.tar.gz. Also you may specify JDK file location in local filesystem using --jdk-location command line argument., exit code 1'. Exiting.
[root@ep
-bd01 downloads]# 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)? n
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/java/jdk1.8.0_181-amd64
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)? n
Completing setup...
Configuring database...
Enter advanced database configuration [y
/n] (n)? y
Configuring database...
==============================================================================
Choose one of the following options:
[
1] - PostgreSQL (Embedded)
[
2] - Oracle
[
3] - MySQL / MariaDB
[
4] - PostgreSQL
[
5] - Microsoft SQL Server (Tech Preview)
[
6] - SQL Anywhere
[
7] - BDB
==============================================================================
Enter choice (
1): 3
Hostname (localhost): ep
-bd01
Port (
3306):
Database name (ambari): ambari
Username (ambari): ambari
Enter Database Password (bigdata):
Re
-enter password:
Configuring ambari database...
Should ambari use existing default jdbc
/usr/share/java/mysql-connector-java.jar [y/n] (y)? y
Configuring remote database connection properties...
WARNING: Before starting Ambari Server, you must run the following DDL against the database to create the schema:
/var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
Proceed with configuring remote database connection properties [y
/n] (y)? y
Extracting system views...
ambari
-admin-2.7.0.0.897.jar
....
Ambari repo
file doesn't contain latest json url, skipping repoinfos modification
Adjusting ambari-server permissions and ownership...
Ambari Server
'setup' completed successfully.

5,命令行方式设置mysql数据库连接库,用于oozie和ranger连接mariadb时使用(上面设置后不起作用,必须如下操作):

ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar

 

6,配置ambari-server自启动,启动ambari-server

[root@ep-bd01 downloads]# systemctl enable ambari-server
[root@ep
-bd01 downloads]# systemctl start ambari-server
[root@ep
-bd01 downloads]# systemctl status ambari-server
● ambari
-server.service - LSB: ambari-server daemonLoaded: loaded (/etc/rc.d/init.d/ambari-server; bad; vendor preset: disabled)Active: active (running) since Tue 2018-08-14 11:06:16 CST; 2min 36s agoDocs: man:systemd-sysv-generator(8)Process: 323056 ExecStart=/etc/rc.d/init.d/ambari-server start (code=exited, status=0/SUCCESS)CGroup: /system.slice/ambari-server.service└─323080 /usr/java/jdk1.8.0_181-amd64/bin/java -server -XX:NewRatio=3 -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -Dsun.zip.disableMemoryMapping=true -...Aug 14 11:05:58 ep-bd01 ambari-server[323056]: Organizing resource files at /var/lib/ambari-server/resources...
Aug
14 11:05:58 ep-bd01 ambari-server[323056]: Ambari database consistency check started...
Aug
14 11:05:58 ep-bd01 ambari-server[323056]: Server PID at: /var/run/ambari-server/ambari-server.pid
Aug
14 11:05:58 ep-bd01 ambari-server[323056]: Server out at: /var/log/ambari-server/ambari-server.out
Aug
14 11:05:58 ep-bd01 ambari-server[323056]: Server log at: /var/log/ambari-server/ambari-server.log
Aug
14 11:06:16 ep-bd01 ambari-server[323056]: Waiting for server start.....................
Aug
14 11:06:16 ep-bd01 ambari-server[323056]: Server started listening on 8080
Aug
14 11:06:16 ep-bd01 ambari-server[323056]: DB configs consistency check: no errors and warnings were found.
Aug
14 11:06:16 ep-bd01 ambari-server[323056]: Ambari Server 'start' completed successfully.
Aug
14 11:06:16 ep-bd01 systemd[1]: Started LSB: ambari-server daemon.systemctl status ambari-server
● ambari
-server.service - LSB: ambari-server daemonLoaded: loaded (/etc/rc.d/init.d/ambari-server; bad; vendor preset: disabled)Active: active (running) since Tue 2018-08-14 11:06:16 CST; 2min 36s agoDocs: man:systemd-sysv-generator(8)Process: 323056 ExecStart=/etc/rc.d/init.d/ambari-server start (code=exited, status=0/SUCCESS)CGroup: /system.slice/ambari-server.service└─323080 /usr/java/jdk1.8.0_181-amd64/bin/java -server -XX:NewRatio=3 -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -Dsun.zip.disableMemoryMapping=true -...Aug 14 11:05:58 ep-bd01 ambari-server[323056]: Organizing resource files at /var/lib/ambari-server/resources...
Aug
14 11:05:58 ep-bd01 ambari-server[323056]: Ambari database consistency check started...
Aug
14 11:05:58 ep-bd01 ambari-server[323056]: Server PID at: /var/run/ambari-server/ambari-server.pid
Aug
14 11:05:58 ep-bd01 ambari-server[323056]: Server out at: /var/log/ambari-server/ambari-server.out
Aug
14 11:05:58 ep-bd01 ambari-server[323056]: Server log at: /var/log/ambari-server/ambari-server.log
Aug
14 11:06:16 ep-bd01 ambari-server[323056]: Waiting for server start.....................
Aug
14 11:06:16 ep-bd01 ambari-server[323056]: Server started listening on 8080
Aug
14 11:06:16 ep-bd01 ambari-server[323056]: DB configs consistency check: no errors and warnings were found.
Aug
14 11:06:16 ep-bd01 ambari-server[323056]: Ambari Server 'start' completed successfully.
Aug
14 11:06:16 ep-bd01 systemd[1]: Started LSB: ambari-server daemon.

ok,Ambari-server安装完成。浏览器访问ambari-server服务:

http://ep-bd01:8080

默认用户名/密码为:admin/admin,登陆后界面如下:

 五、所有主机节点,安装ambari-agent,并配置自启动

yum install ambari-agent -y
systemctl enable ambari-agent
systemctl restart ambari-agent && systemctl status ambari-agent

 


转载于:https://www.cnblogs.com/dajianshi/p/9455980.html


推荐阅读
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 在本地环境中调试远程服务器上的网站代码执行问题,可以通过以下步骤实现:首先,在本地安装 Visual Studio 并配置远程调试工具。接着,确保服务器和本地机器之间的网络连接畅通,并正确设置防火墙规则以允许调试流量。最后,使用 Visual Studio 的远程调试功能连接到服务器,进行代码调试。这种方法不仅提高了开发效率,还减少了在服务器上直接操作的风险。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 如何高效地安装并配置 PostgreSQL 数据库系统?本文将详细介绍从下载到安装、配置环境变量、初始化数据库、以及优化性能的全过程,帮助读者快速掌握 PostgreSQL 的核心操作与最佳实践。文章还涵盖了常见问题的解决方案,确保用户在部署过程中能够顺利解决遇到的各种挑战。 ... [详细]
  • SQLite数据库CRUD操作实例分析与应用
    本文通过分析和实例演示了SQLite数据库中的CRUD(创建、读取、更新和删除)操作,详细介绍了如何在Java环境中使用Person实体类进行数据库操作。文章首先阐述了SQLite数据库的基本概念及其在移动应用开发中的重要性,然后通过具体的代码示例,逐步展示了如何实现对Person实体类的增删改查功能。此外,还讨论了常见错误及其解决方法,为开发者提供了实用的参考和指导。 ... [详细]
  • 在Ubuntu上安装MySQL时解决缺少libaio.so.1错误及libaio在MySQL中的重要性分析
    在Ubuntu系统上安装MySQL时,遇到了缺少libaio.so.1的错误。本文详细介绍了如何解决这一问题,并深入探讨了libaio库在MySQL性能优化中的重要作用。对于初学者而言,理解这些依赖关系和配置步骤是成功安装和运行MySQL的关键。通过本文的指导,读者可以顺利解决相关问题,并更好地掌握MySQL在Linux环境下的部署与管理。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • Dense Matrix Inversion Results in Segmentation Fault: Causes and Solutions ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • 在尝试为 Unity 编译一个简单的 Java 库时,运行 `ant jar` 命令后遇到了 Java I/O 异常。具体错误信息为“无法启动程序 ${aAPT},错误代码 2”,这通常表示指定的文件或目录不存在。此问题可能是由于环境配置不正确或路径设置有误导致的。建议检查相关路径和环境变量,确保所有依赖项都已正确安装和配置。 ... [详细]
  • 虚拟机网络设置与数据库远程连接优化指南
    本文针对个人计算机上虚拟机网络配置与数据库远程连接的问题,提供了一套详细的优化指南。在探讨远程数据库访问前,需确保网络配置正确,特别是桥接模式的设置。通过合理的网络配置,可以有效解决因虚拟机或网络问题导致的连接失败,提升远程访问的稳定性和效率。 ... [详细]
  • 本文深入探讨了使用Puppet进行软件包分发与管理的方法。首先介绍了fpm这一跨平台的软件包制作工具,其简便的操作流程使得软件包的创建变得轻松快捷。fpm的项目地址为:https://github.com/jordansissel/fpm。通过结合Puppet和fpm,可以实现高效、可靠的软件包管理和部署。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 基于域名、端口和IP的虚拟主机构建方案
    本文探讨了在单台物理服务器上构建多个Web站点的虚拟主机方案,详细介绍了三种主要的虚拟主机类型:基于域名、基于IP地址和基于端口的虚拟主机。每种类型的实现方式及其优缺点均进行了深入分析,为实际应用提供了全面的技术指导。 ... [详细]
  • MongoDB高可用架构:深入解析Replica Set机制
    MongoDB的高可用架构主要依赖于其Replica Set机制。Replica Set通过多个mongod节点的协同工作,实现了数据的冗余存储和故障自动切换,确保了系统的高可用性和数据的一致性。本文将深入解析Replica Set的工作原理及其在实际应用中的配置和优化方法,帮助读者更好地理解和实施MongoDB的高可用架构。 ... [详细]
author-avatar
儒雅的天麟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有