PHP+NGINX
1. 下载php编译包/nginx编译包(建议先装nginx再装php, php编译包我用的是5.5.35)
2. 创建好安装目录(我的编译包放在/home下)
mkdir -p /usr/local/php
3. 解压
tar -zxvf php-5.5.35.tar.gz
4. 编译php
cd php-5.5.35
(编译)
./configure --prefix=/usr/local/php --with-config-file-path=/etc --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-opcache --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gettext --enable-mbstring --with-iconv --with-mcrypt --with-mhash --enable-bcmath --enable-soap --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-zlib --enable-zip --with-bz2 --with-readline --without-sqlite3 --without-pdo-sqlite --with-pear
注意: 我这里是缺少了--with-openssl的, 因为之前make的时候, openssl抛出提领指向不完全类型的指针, 只能暂时放下它, 后期再补, 不然安装不上
后期加上: 安装后发现php的gd库也安装失败, 试过用yum装gd,也试过单独下载编译包编译安装, 不知道是版本不对还是怎么样, 就是安装不上, 懂的大神帮忙看一下是哪里出了问题
5. 安装php
make && make install
6. 添加 PHP 命令到环境变量
vim /etc/profile
在文件末尾加入
PATH=$PATH:/usr/local/php/bin
export PATH
使这个配置立即生效
. /etc/profile 或 source /etc/profile
(我喜欢用后者)
查看环境变量
echo $PATH
看到出现刚刚配置的路径则表示正确
查看php版本
php -v
(显示出来表示安装正确)
7. 配置php-fpm(负载均衡模块)
(进入安装目录)
cd /usr/local/php/etc
(复制改名)
cp php-fpm.conf.default php-fpm.conf
8. 启动php-fpm
sudo /usr/local/php/sbin/php-fpm
(1)异常:启动失败, 抛出www问题
解决:修改php-fpm.conf配置文件
vim /usr/local/php/etc/php-fpm.conf
(2)用vim命令找到user与group
:/user
:/group
这两个原来的值是:www
把他们修改成当前linux用户与当前用户所在组
(3)配置完成, 重启php-fpm的时候如果抛出:
ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98) ERROR: FPM initialization failed
解决: 端口已占用(php-fpm已在开启的状态)
netstat -lntup | grep 9000 killall php-fpm sudo /usr/local/php/sbin/php-fpm
9. 修改nginx配置文件nginx.conf
cd /usr/local/nginx/conf
vim nginx.conf
(1)扔一个index.php进根目录
location / {
root html;
index index.html index.htm index.php;
}
(2)放开php模块的注释, 指定fastcgi_param SCRIPT_FILENAME网站目录
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; }
10. 重启nginx
(1)重新加载配置文件
service nginx reload
(2)重启
service nginx restart
11. 测试php
在指定的网站目录下写测试文件
cd /usr/local/nginx/html
vim index.php
内容:
<?php echo phpinfo(); ?>
在浏览器中输入http://ip/index.php
访问成功!!
12. 问题拓展: 外网范围问题
(1)将80, 9000端口放进防火墙运行通行规则
iptables -I INPUT -p tcp --dport 80 -j ACCEPT iptables -I INPUT -p tcp --dport 9000 -j ACCEPT
(2)保存这个防火墙规则
service iptables save
(3)重启防火墙
service iptables restart
外网访问成功!
依赖库问题
出现错误: congigure error: xml2-config not found. 执行命令: sudo yum install libxml2-devel 查看是否成功: find / -name "xml2-config" 出现错误: congigure error: Cannot find OpenSSL's <evp.h> 解决办法:yum install openssl openssl-devel ln -s /usr/lib64/libssl.so /usr/lib/ 出现错误: configure: error: Please reinstall the BZip2 distribution 解决办法:yum install bzip2 bzip2-devel 出现错误: configure: error: Please reinstall the libcurl distribution -easy.h should be in <curl-dir>/include/curl/ 解决办法:yum -y install curl-devel 出现错误:configure: error: mcrypt.h not found. Please reinstall libmcrypt. 解决办法:sudo yum install libmcrypt libmcrypt-devel mcrypt mhash 出现错误:configure: error: Please reinstall readline - I cannot find readline.h 解决办法:sudo yum install readline-devel
由于deb包与rpm包不同, 看系统
yum install *** sudo apt-get install ***
注意: 以上全都是yum安装的方式, 因为依赖包太多, 偷了个懒.
警告: 缺少gd库