开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

centos 6.0最简化编译安装Nginx+Mysql+PHP+Zend

简介:
+关注继续查看
碎语:
Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler 站点开发的,已经在一些俄罗斯的大型网站上运行多年,相当的稳定。
  Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。
各种有点不说了!!!
闲言:
最近一直时间不太多,一直在学习路由技术,谁知道一个朋友喊我帮忙做下ras,做完了就想起了nginx,于是这篇文章诞生了,在这里我采用的是CentOS 6.0。安装时是默认的minimal安装,不带有任何非必要软件包的!装完不到1G!
至于操作系统的安装,图形化肯定挑战不了大家的智商,至于文本安装,辰逸的博客里有一篇redhat5文本安装全过程~这里就省略掉了!
安装前准备:
1:配置好IP dns 网关,确保xshell等工具可以连上去~咳咳!xshell是个好东西,使用linux就应该要会用xshell(个人见解,如需下载,可在本博客搜索!)
2:关闭SElinux
vi /etc/selinux/config 把SELINUX=enforcing 注释掉 添加一行为 SELINUX=disabled
3:关闭Iptables(不建议)
可为iptables 添加策略  允许80端口和3306端口! 相关知识可以在俺博客里参考一番!
 
安装所需软件包!!!有点小多。呵呵呵!
pcre-8.20.tar.gz (支持nginx伪静态)
nginx-1.0.6.tar.gz (目前的稳定版本)
mysql-5.1.59.tar.gz
php-5.2.17.tar.gz
php-5.2.17-fpm-0.5.14.diff.gz (支持PHP FastCGI模式)
ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
libmcrypt-2.5.7.tar.gz
 
下面的有好多好多需要安装的软件包(前面有提过,我用的mini安装,所以很多包需要手动打,个人感觉除了麻烦了一点,其实挺不错的)
kernel-headers-2.6.32-71.el6.i686.rpm
compat-glibc-headers-2.5-46.2.i686.rpm
compat-glibc-2.5-46.2.i686.rpm
compat-libstdc++-33-3.2.3-69.el6.i686.rpm
compat-libf2c-34-3.4.6-19.el6.i686.rpm
compat-libgcc-296-2.96-144.el6.i686.rpm
mpfr-2.4.1-6.el6.i686.rpm
cpp-4.4.4-13.el6.i686.rpm
glibc-headers-2.12-1.7.el6.i686.rpm
glibc-devel-2.12-1.7.el6.i686.rpm
libgomp-4.4.4-13.el6.i686.rpm
libstdc++-devel-4.4.4-13.el6.i686.rpm
ppl-0.10.2-11.el6.i686.rpm
cloog-ppl-0.15.7-1.2.el6.i686
gcc-4.4.4-13.el6.i686.rpm
compat-gcc-34-3.4.6-19.el6.i686.rpm
compat-gcc-34-c++-3.4.6-19.el6.i686.rpm
make-3.81-19.el6.i686.rpm
keyutils-libs-devel-1.4-1.el6.i686.rpm
libcom_err-devel-1.41.12-3.el6.i686.rpm
libsepol-devel-2.0.41-3.el6.i686.rpm
libselinux-devel-2.0.94-2.el6.i686.rpm
krb5-devel-1.8.2-3.el6.i686.rpm
zlib-devel-1.2.3-25.el6.i686.rpm
openssl-devel-1.0.0-4.el6.i686.rpm
libXpm-3.5.8-2.el6.i686.rpm
gd-2.0.35-10.el6.i686.rpm
freetype-2.3.11-5.el6.i686.rpm
libxml2-2.7.6-1.el6.i686.rpm
libxml2-devel-2.7.6-1.el6.i686.rpm
curl-7.19.7-16.el6.i686.rpm
libjpeg-devel-6b-46.el6.i686.rpm
libjpeg-6b-46.el6.i686.rpm
libjpeg-static-6b-46.el6.i686.rpm
libpng-1.2.44-1.el6.i686.rpm
libpng-devel-1.2.44-1.el6.i686.rpm
libpng-static-1.2.44-1.el6.i686.rpm
php-common-5.3.2-6.el6.i686.rpm
php-gd-5.3.2-6.el6.i686.rpm
gcc-c++-4.4.4-13.el6.i686.rpm
ncurses-devel-5.7-3.20090208.el6.i686.rpm
ncurses-term-5.7-3.20090208.el6.i686.rpm
ncurses-static-5.7-3.20090208.el6.i686.rpm
perl-Pod-Escapes-1.04-115.el6.i686.rpm
perl-libs-5.10.1-115.el6.i686.rpm
perl-version-0.77-115.el6.i686.rpm
perl-Module-Pluggable-3.90-115.el6.i686.rpm
perl-Pod-Simple-3.13-115.el6.i686.rpm
perl-5.10.1-115.el6.i686.rpm
autoconf213-2.13-20.1.el6.noarch.rpm
autoconf-2.63-5.1.el6.noarch.rpm
automake-1.11.1-1.2.el6.noarch.rpm
automake14-1.4p6-19.2.el6.noarch.rpm
automake16-1.6.3-18.el6.1.noarch.rpm
libtool-ltdl-2.2.6-15.5.el6.i686.rpm
libtool-ltdl-devel-2.2.6-15.5.el6.i686.rpm
libtool-2.2.6-15.5.el6.i686.rpm
patch-2.6-6.el6.i686.rpm
把这些软件包啊用xshell自带的文件传输功能传输 或者 flashfxp 的sftp传输过去!再或者你可以挂载镜像~~~
建议装上vim 如果你和我环境一样的话,呵呵
 
————————————————————邪恶的分割线————————————————————
 

正式开始安装咯~~

下面均是采用xshell操作~
按照顺序依次安装,如果你嫌麻烦可直接复制以下命令(如果你不嫌麻烦....呵呵呵)
rpm -ivh kernel-headers-2.6.32-71.el6.i686.rpm
rpm -ivh compat-glibc-headers-2.5-46.2.i686.rpm
rpm -ivh compat-glibc-2.5-46.2.i686.rpm
rpm -ivh compat-libstdc++-33-3.2.3-69.el6.i686.rpm
rpm -ivh compat-libf2c-34-3.4.6-19.el6.i686.rpm
rpm -ivh compat-libgcc-296-2.96-144.el6.i686.rpm
rpm -ivh mpfr-2.4.1-6.el6.i686.rpm
rpm -ivh cpp-4.4.4-13.el6.i686.rpm
rpm -ivh glibc-headers-2.12-1.7.el6.i686.rpm
rpm -ivh glibc-devel-2.12-1.7.el6.i686.rpm
rpm -ivh libgomp-4.4.4-13.el6.i686.rpm
rpm -ivh libstdc++-devel-4.4.4-13.el6.i686.rpm
rpm -ivh ppl-0.10.2-11.el6.i686.rpm
rpm -ivh cloog-ppl-0.15.7-1.2.el6.i686.rpm
rpm -ivh gcc-4.4.4-13.el6.i686.rpm
rpm -ivh compat-gcc-34-3.4.6-19.el6.i686.rpm
rpm -ivh compat-gcc-34-c++-3.4.6-19.el6.i686.rpm
rpm -ivh make-3.81-19.el6.i686.rpm
rpm -ivh keyutils-libs-devel-1.4-1.el6.i686.rpm
rpm -ivh libcom_err-devel-1.41.12-3.el6.i686.rpm
rpm -ivh libsepol-devel-2.0.41-3.el6.i686.rpm
rpm -ivh libselinux-devel-2.0.94-2.el6.i686.rpm
rpm -ivh krb5-devel-1.8.2-3.el6.i686.rpm
rpm -ivh zlib-devel-1.2.3-25.el6.i686.rpm
rpm -ivh openssl-devel-1.0.0-4.el6.i686.rpm
rpm -ivh libXpm-3.5.8-2.el6.i686.rpm
rpm -ivh gd-2.0.35-10.el6.i686.rpm
rpm -ivh freetype-2.3.11-5.el6.i686.rpm
rpm -ivh libxml2-2.7.6-1.el6.i686.rpm
rpm -ivh libxml2-devel-2.7.6-1.el6.i686.rpm
rpm -ivh curl-7.19.7-16.el6.i686.rpm
rpm -ivh libjpeg-devel-6b-46.el6.i686.rpm
rpm -ivh libjpeg-6b-46.el6.i686.rpm
rpm -ivh libjpeg-static-6b-46.el6.i686.rpm
rpm -ivh libpng-1.2.44-1.el6.i686.rpm
rpm -ivh libpng-devel-1.2.44-1.el6.i686.rpm
rpm -ivh libpng-static-1.2.44-1.el6.i686.rpm
rpm -ivh php-common-5.3.2-6.el6.i686.rpm
rpm -ivh php-gd-5.3.2-6.el6.i686.rpm
rpm -ivh  gcc-c++-4.4.4-13.el6.i686.rpm
rpm -ivh  ncurses-devel-5.7-3.20090208.el6.i686.rpm
rpm -ivh  ncurses-term-5.7-3.20090208.el6.i686.rpm
rpm -ivh  ncurses-static-5.7-3.20090208.el6.i686.rpm
rpm -ivh  --nodeps perl-Pod-Escapes-1.04-115.el6.i686.rpm
rpm -ivh  --nodeps perl-libs-5.10.1-115.el6.i686.rpm
rpm -ivh  --nodeps perl-version-0.77-115.el6.i686.rpm
rpm -ivh  --nodeps perl-Module-Pluggable-3.90-115.el6.i686.rpm
rpm -ivh  --nodeps perl-Pod-Simple-3.13-115.el6.i686.rpm
rpm -ivh  --nodeps perl-5.10.1-115.el6.i686.rpm
rpm -ivh autoconf213-2.13-20.1.el6.noarch.rpm
rpm -ivh autoconf-2.63-5.1.el6.noarch.rpm
rpm -ivh automake-1.11.1-1.2.el6.noarch.rpm
rpm -ivh automake14-1.4p6-19.2.el6.noarch.rpm
rpm -ivh automake16-1.6.3-18.el6.1.noarch.rpm
rpm -ivh libtool-ltdl-2.2.6-15.5.el6.i686.rpm
rpm -ivh libtool-ltdl-devel-2.2.6-15.5.el6.i686.rpm
rpm -ivh libtool-2.2.6-15.5.el6.i686.rpm
rpm -ivh patch-2.6-6.el6.i686.rpm
————————————————————邪恶的分割线————————————————————————
安装Mysql
解包mysql  并进行预配置
[root@itchenyi chenyi]# tar -zxf mysql-5.1.59.tar.gz 
[root@itchenyi chenyi]# cd mysql-5.1.59
[root@itchenyi mysql-5.1.59]# ./configure --prefix=/usr/local/mysql  --localstatedir=/usr/local/mysql/data/ --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static  --with-unix-socket-path=/tmp/mysql.sock --with-shared --without-debug --with-extra-charsets=all --without-embedded-server --enable-profiling  --enable-assembler --enable-thread-safe-client --with-server-suffix=-community --with-extra-charset=utf8,gbk
 
编译 并 安装
[root@itchenyi mysql-5.1.59]# make && make install
  更多精彩:转到www.itchenyi.com
特别注意:在执行make install编译的过程中,如果你看到屏幕突然不动了,卡在那里,很久都过不去,你一定认为编译错误了,或者服务器闹情绪了,但是往往需要坚持,耐心的等待几分钟,就会编译成功!Mysql编译安装告诉我们,任何事情,只要坚持下去,终会成功!
 
对文件夹设置相应权限|建立配置文件|添加为系统服务
[root@itchenyi mysql-5.1.59]# chown -R root:mysql /usr/local/mysql/
[root@itchenyi mysql-5.1.59]# cd /usr/local/mysql/
[root@itchenyi mysql]# cp share/mysql/my-huge.cnf /etc/my.cnf
[root@itchenyi mysql]# cp share/mysql/mysql.server /etc/init.d/mysqld
 
编辑  /etc/profile 在末行加入一下命令~
export PATH=$PATH:/usr/local/mysql/bin
 
下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。
[root@itchenyi mysql]# ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
[root@itchenyi mysql]# ln -s /usr/local/mysql/include/mysql /usr/include/mysql
 
生成mysql系统数据库~~
[root@itchenyi mysql]# /usr/local/mysql/bin/mysql_install_db --user=mysql &
 
启动mysql | 设置开机自启并给它来个密码~~~~
[root@itchenyi mysql]# chkconfig mysqld on
[root@itchenyi mysql]# /etc/rc.d/init.d/mysqld start
[root@itchenyi mysql]# mysqladmin -u root -p password 'chenyi'
 
mysql安装完毕~你可以mysql -u root -p回车输入密码测试一番了~
 
 
安装pcre
解包|预配置
[root@itchenyi chenyi]# tar zxf pcre-8.20.tar.gz 
[root@itchenyi chenyi]# mkdir /usr/local/pcre
[root@itchenyi chenyi]# cd pcre-8.20
[root@itchenyi pcre-8.20]# ./configure --prefix=/usr/local/pcre/
 
编译|安装
[root@itchenyi pcre-8.20]# make && make install
 
安装nginx
解包|预配置
[root@itchenyi chenyi]# tar zxf nginx-1.0.6.tar.gz 
[root@itchenyi chenyi]# cd nginx-1.0.6
[root@itchenyi nginx-1.0.6]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/usr/local/src/pcre-8.20
 
注:--with-openssl=/usr/ --with-pcre=/usr/local/src/pcre-8.20 指向的路径是源码包解包的路径,并非其安装路径~~~否则会报错的哦!
 
编译|安装
[root@itchenyi nginx-1.0.6]# make && make install
 
启动,控制权限~
[root@itchenyi nginx-1.0.6]# /usr/local/nginx/sbin/nginx
[root@itchenyi nginx-1.0.6]# chown nobody:nobody -R /usr/local/nginx/html/
[root@itchenyi nginx-1.0.6]# chmod 777 -R /usr/local/nginx/html/
 
设置nginx开机启动~~
vi /etc/rc.d/init.d/nginx 然后一字不漏的将以下代码复制进去~~
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
# It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/usr/local/nginx/logs/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
echo "nginx already running...."
exit 1
fi
echo -n $"Starting $prog: "
daemon $nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
return $RETVAL
}
# Stop nginx daemons functions.
stop() {
echo -n $"Stopping $prog: "
killproc $nginxd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
}
reload() {
echo -n $"Reloading $prog: "
#kill -HUP `cat ${nginx_pid}`
killproc $nginxd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|reload|status|help}"
exit 1
esac
exit $RETVAL
 
赋权文件~~~|~~~加入自启
[root@itchenyi nginx-1.0.6]# chmod 755 /etc/rc.d/init.d/nginx
[root@itchenyi nginx-1.0.6]# chkconfig nginx on
[root@itchenyi /etc/rc.d/init.d/nginx restart
停止 nginx:                                               [失败]
正在启动 nginx:                                           [确定]
  更多精彩:转到www.itchenyi.com
安装 libmcrypt| 一条命令完成安装,你要是不放心就拆开用~~~~
[root@itchenyi chenyi]tar zxf libmcrypt-2.5.7.tar.gz
[root@itchenyi chenyi]cd libmcrypt-2.5.7
[root@itchenyi libmcrypt-2.5.7]# ./configure && make && make install
 
安装php  做到这一步 就可以去喝壶茶了~~~~~无奈啊。。。
解包|解包|打补丁|预配置|
[root@itchenyi chenyi]# tar -zxf php-5.2.17.tar.gz 
[root@itchenyi chenyi]# gunzip php-5.2.17-fpm-0.5.14.diff.gz 
[root@itchenyi chenyi]# patch -d php-5.2.17 -p1 <php-5.2.17-fpm-0.5.14.diff
[root@itchenyi chenyi]# cd php-5.2.17
[root@itchenyi php-5.2.17]# ./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-mysql=/usr/local/mysql  --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-gd  --with-iconv --with-freetype --with-jpeg --with-png --with-zlib --with-libxml --enable-xml --enable-discard-path --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --with-mime-magic --enable-suhosin --enable-session --with-mcrypt
 
编译|安装
[root@itchenyi php-5.2.17]# make && make install
建立配置文件
[root@itchenyi php5]# cd /usr/local/php5/
[root@itchenyi php5]# cp /chenyi/php-5.2.17/php.ini-dist /usr/local/php5/etc/php.ini
[root@itchenyi php5]# rm -rf /etc/php.ini
[root@itchenyi php5]# ln -s /usr/local/php5/etc/php.ini /etc/php.ini
 
编辑php-fpm.conf
vi /usr/local/php5/etc/php-fpm.conf
取消下面的注释 如图~
启动php-fpm 设置为开机自启
[root@itchenyi php5]# /usr/local/php5/sbin/php-fpm start
[root@itchenyi php5]# cp /usr/local/php5/sbin/php-fpm /etc/rc.d/init.d/php-fpm
在#!/bin/bash下添加两行
  #chkconfig:345 62 62
  #description:php-fpm
[root@itchenyi php5]# chmod 755 /etc/rc.d/init.d/php-fpm 
[root@itchenyi php5]# chkconfig php-fpm on
 
安装 Zend optimizer
[root@itchenyi chenyi]# tar zxf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
[root@itchenyi chenyi]# cp /chenyi/ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp/ZendOptimizer.so /usr/local/zend
[root@itchenyi chenyi]# rm -rf /chenyi/ZendOptimizer-3.3.9-linux-glibc23-i386
 更多精彩:转到www.itchenyi.com
配置Zend optimizer
在末行加入一下内容
[Zend Optimizer]
zend_optimizer.optimization_level=15
zend_extension="/usr/local/zend/ZendOptimizer.so"
 
重启web服务器
[root@itchenyi chenyi]# service nginx restart
停止 nginx:                                               [确定]
正在启动 nginx:                                           [确定]
[root@itchenyi chenyi]# service php-fpm restart
Shutting down php_fpm . done
Starting php_fpm  done
 
配置nginx支持php
代码如下
         location / {
              root   html;
              index  index.php index.html index.htm;
  #pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  #
        location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME    /usr/local/nginx/html$fastcgi_script_name;
        include        fastcgi_params;
  }
  }
 
完成配置后重新启动~~~
[root@itchenyi chenyi]# service nginx restart
停止 nginx:                                               [确定]
正在启动 nginx:                                           [确定]
[root@itchenyi chenyi]# service php-fpm restart
Shutting down php_fpm . done
Starting php_fpm  done
 

现在测试网站~~~~传个php探针上去一试便知~~~

[root@itchenyi html]# mv /root/tz.php ./
[root@itchenyi html]# chown nobody:nobody -R /usr/local/nginx/html/
[root@itchenyi html]# chmod 777 -R /usr/local/nginx/html/
各种支持~~~
如果你的php无法跟nginx相爱那么请检查路径的设置~~~~
 









本文转自 lgpqdwjh 51CTO博客,原文链接:http://blog.51cto.com/itchenyi/1085827,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
centos下 Apache、php、mysql默认安装路径
apache: 如果采用RPM包安装,安装路径应在 /etc/httpd目录下 apache配置文件:/etc/httpd/conf/httpd.conf Apache模块路径:/usr/sbin/apachectl web目录:/var/www/html 如果采用源代码安装,一般默认安装在/usr/local/apache2目录下 php: 如果采用RPM包安装,安装路
2292 0
Nginx-->进阶-->原理-->Nginx+php+fastcgi的原理与关系
一、用户对动态PHP网页访问过程 用户浏览器发起对网页的访问:http://192.168.1.103/index.php 用户和nginx服务器进行三次握手进行TCP连接(忽略包括nginx访问控制策略、nginx防火墙等访问控制策略) 第一步:用户将http请求发送给nginx服务器 第二步:nginx会根据用户访问的URI和后缀对请求进行判断 1.
810 0
PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)
源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 、PHP7.0、Apache服务器 PHP框架:ThinkPHP框架(3.
1646 0
PHP 把MYSQL重复ID 二维数组重组为三维数组
应用场景 MYSQL在使用关联查询时,比如 产品表 与 产品图片表关联,一个产品多张产品图片,关联查询结果如下: $arr=[['id'=>1,'img'=>'img1'],['id'=>1,'img'=>'img2'],['id'=>1,'img'=>'img3'],['id'=>2,'i...
815 0
PHP实现MySQL并发查询
一般的,一个看似很简单的页面,一次http请求后,到达服务端,穿过Cache层,落到后台后,实际可能会有很多很多的数据查询逻辑!而这些查询实际是不相互依赖的,也即可以同时查询。比如各种用户信息,用户的APP列表,每个APP对应的流量数据、消耗记录、服务状态,平台运行状态,消息通知,新闻资讯等等。
1100 0
nginx、fastcgi、php-fpm
什么是fastcgi? fastCGI是由CGI(common gateway interface,通用网关接口)发展而来,是http服务器(nginx、apache)和动态脚本语言(php)之间的通信接口。记住,fastCGI只是一个接口。
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《Nginx 代理系统常用手册》
立即下载
好的 MySQL 兼容可以做到什么程度
立即下载
PHP与APM_技术内幕和最佳实践
立即下载