手动编译安装php、nginx
以往都是使用 lnmp 一键安装包,进行开发环境的搭建,这两天自己手动编译安装php、nginx使其能成功打印出
hello world
Let's go:
nginx 安装 (FYI)
1. vi /etc/yum.rep
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=13. yum -y install nginx
php 安装 (FYI官方安装)
0. yum install libpng-devel libjpeg-devel libcurl-devel freetype-devel libxml2-devel -y
1. 错误:configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决方法:
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
tar zxf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
make && make install
2. 错误:checking for known struct flock definition... configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no
解决办法:
vim /etc/ld.so.conf.d/local.conf
/usr/local/lib
:wq
ldconfig -v
3. wget http://cn2.php.net/distributions/php-5.6.23.tar.bz2
4. tar -jxvf php-5.6.23.tar.bz2
5../configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-fpm-user=www --with-fpm-group=www --enable-fpm --enable-opcache --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --disable-fileinfo --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-exif --enable-sysvsem --with-curl --enable-mbregex --enable-inline-optimization --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-ftp --with-gettext --enable-zip --enable-soap --disable-ipv6 --disable-debug
6.make && make install
编写Nginx和PHP-FPM的启动、重启、停止脚本 (FYI)
根据FYI步骤一步一步配就行了,注意其中需要在 php-fpm.conf 中开启 xxx.pid 配置
server 相关配置
server { listen 80; server_name localhost; #charset utf-8; #access_log /var/log/nginx/log/host.access.log main; root /vagrant/test; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fastcgi_param SCRIPT_NAME $fastcgi_script_name; } }
总结:
- 通过自己编译配置开发环境,可以进一步理解 php 及其相关如 php-fpm、nginx 的工作流程
- 强化 Linux 的使用,如 useradd、groupadd、sudo netstat -anp、ps -ef、groups [user]、tar 等等
- 配置期间遇到一个 No input file specified. 的问题,经 google、baidu 后,主要是 server 配置的问题,需要把 root 和 index 那两行从 location / 中拿到外部出来就行正常使用,关于这个原因是为什么,我现在还是不太理解,我请求的是 127.0.0.1:80 理应能匹配到 location / ,为何会有问题呢?希望知情同学给予解答。
附录:
如何在编译好的PHP环境中安装PHP扩展模块
1、先进入php解压缩后的源码包中,找到要安装的扩展模块的目录。
[root@redhat5 sockets]# cd /home/soft/php-5.2.12/ext/sockets
在sockets目录下面以绝对路径运行phpize程序,这时会自动生成sockets的configure程序,在sockets目录下面可以看到。
[root@redhat5 sockets]# /home/webserver/php5.2.12/bin/phpize2、进行编译安装
[root@redhat5 sockets]# ./configure --with-php-config=/home/webserver/php5.2.12/bin/php-config
[root@redhat5 sockets]#make
[root@redhat5 sockets]#make install
执行完make install屏幕上会提示sockets.so存放的路径,然后把它复制到php的extensions目录中,例如我的路径为 /home/webserver/php5.2.12/lib/php/extensions3、修改php.ini文件
找到extension_dir = "./" 这行,修改为:
extension_dir = "/home/webserver/php5.2.12/lib/php/extensions/"
然后再新增加一行:
extension=sockets.so4、重启web服务器(apache/nginx)即可生效。
打赏: 微信
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。