下载nginx-1.10.3.tar.gz,php-7.0.9.tar.gz。也可以去nginx官网,php官网下载想要的版本。我选择nginx1.10.3稳定版和php7.0.9最新版。php源码包下载速度可能会很慢,建议使用迅雷等工具,下载完成后通过stfp工具把源码包上传到服务器上,为方便测试,我直接放置在root家目录下:
使用源码安装要确保服务器安装好gcc(编辑工具)和make(安装工具),若没安装可以执行命令安装:
# yum install gcc
# yum install make
安装ngix之前还需要安装好以下依赖工具:
# yum -y install pcre-devel openssl openssl-devel
解压php、nginx源码包:
# tar xvf php-7.0.9.tar.gz
# tar xvf nginx-1.10.3.tar.gz
安装nginx,进入解压目录:
编辑configure文件:
# ./configure --prefix=/usr/local/nginx
编译结束没有错误以后执行安装:
因为编译安装,并没使用yum,所以没法直接使用nginx命令了。
PS
启动:/usr/local/nginx/sbin/nginx
停止/重新加载:/usr/local/nginx/sbin/nginx -s stop(quit、reload)
验证配置文件是否合法:/usr/local/nginx/sbin/nginx -t
命令帮助:/usr/local/nginx/sbin/nginx -h
添加全局命令,把nginx绝对路径的执行命令通过软链接添加到系统bin目录下:
# ln -s /usr/local/nginx/sbin/nginx /bin/
测试全局命令,任意位置执行nginx命令:
查看是否启动:
浏览器测试,浏览器输入服务器公网ip:
安装php7.0.9:
一并安装php7所需依赖库否则配置时会报错:
# yum -y install php-mcrypt libmcrypt libmcrypt-devel autoconf freetype freetype-devel gd jpegsrc libmcrypt libpng libpng-devel libjpeg libjpeg-devel libxml2 libxml2-devel zlib curl curl-devel openssl openssl-devel libxml2 libxml2-devel readline-devel libedit-devel pcre-devel
命令行执行命令,进行安装配置
# ./configure --prefix=/usr/local/php --enable-bcmath --enable-mbstring --enable-mysqlnd --enable-opcache --enable-pcntl --enable-xml --enable-zip --with-libedit --with-openssl --with-zlib --with-mysqli --with-pdo-mysql --with-pear --enable-fpm --enable-bcmath --enable-mbstring --enable-mysqlnd --enable-opcache --enable-pcntl --enable-xml --enable-zip --with-curl --with-mysqli --with-pdo-mysql
如果修改php安装后的路径,需要重新编译安装php,必须删除旧解压后的php安装包,重新解压编译安装才能生效
./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-bcmath --enable-mbstring --enable-mysqlnd --enable-opcache --enable-pcntl --enable-xml --enable-zip --with-libedit --with-openssl --with-zlib --with-mysqli --with-pdo-mysql --with-pear --enable-fpm --enable-bcmath --enable-mbstring --enable-mysqlnd --enable-opcache --enable-pcntl --enable-xml --enable-zip --with-curl --with-mysqli --with-pdo-mysql
PHP安装配置详解:
--prefix=/usr/local/php
指定 php 安装目录
--with-apxs2=/usr/local/apache/bin/apxs
整合 apache,apxs功能是使用mod_so中的LoadModule指令,加载指定模块到 apache,要求 apache 要打开SO模块
--with-config-file-path=/usr/local/php/etc
指定php.ini位置
--with-MySQL=/usr/local/mysql
mysql安装目录,对mysql的支持
--with-mysqli=/usr/local/mysql/bin/mysql_config
mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定。
--enable-safe-mode 打开安全模式
--enable-ftp 打开ftp的支持
--enable-zip 打开对zip的支持
--with-bz2 打开对bz2文件的支持
--with-jpeg-dir 打开对jpeg图片的支持
--with-png-dir 打开对png图片的支持
--with-freetype-dir 打开对freetype字体库的支持
--without-iconv 关闭iconv函数,种字符集间的转换
--with-libXML-dir 打开libxml2库的支持
--with-XMLrpc 打开xml-rpc的c语言
--with-zlib-dir 打开zlib库的支持
--with-gd 打开gd库的支持
--enable-gd-native-ttf 支持TrueType字符串函数库
--with-curl 打开curl浏览工具的支持
--with-curlwrappers 运用curl工具打开url流
--with-ttf 打开freetype1.*的支持,可以不加了
--with-xsl 打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件
--with-gettext 打开gnu 的gettext 支持,编码库用到
--with-pear 打开pear命令的支持,PHP扩展用的
--enable-calendar 打开日历扩展功能
--enable-mbstring 多字节,字符串的支持
--enable-bcmath 打开图片大小调整,用到zabbix监控的时候用到了这个模块
--enable-sockets 打开 sockets 支持
--enable-exif 图片的元数据支持
--enable-magic-quotes 魔术引用的支持
--disable-rpath 关闭额外的运行库文件
--disable-debug 关闭调试模式
--with-mime-magic=/usr/share/file/magic.mime 魔术头文件位置
看到Thank you for use php表示配置成功,可以执行make来进行安装了:
安装php7:
安装完毕:
把php、php-fpm局部命令添加到系统全局命令中:
# ln -s /usr/local/php/bin/php /bin/
# ln -s /usr/local/php/sbin/php-fpm /sbin/
PHP安装是完成了,但是没找到配置文件,因为配置文件 php.ini需要自己从安装包中拷贝过来
该把源码包中的php.ini拷贝到哪里呢?执行(# php -ini), Configuration File Path就是php.ini需要存放的位置:
# cp ~/php-7.0.9/php.ini-development /usr/local/php/lib/php.ini
/usr/local/php/etc目录复制粘贴创建php-fpm.conf
/usr/local/php/etc/php-fpm.d目录复制粘贴创建www.conf
*.conf 是php-fpm的配置文件,没有它启动php-fpm时候会报错
优化php-fpm配置:
pm.max_children = 30 //最大子进程 (默认是5个)
pm.start_servers = 10 //php-fpm启动起始进程数
pm.min_spare_servers = 10 //php-fpm的最小空闲进程数
pm.max_spare_servers = 24 //php-fpm的最大空闲进程数
pm.max_requests = 500 //所有子进程重启时间
解决 nginx报错open() “fastcgi_temp” failed (13: Permission denied)的解决办法
php输出流量过大时候会使用到fastcgi_temp,需要给这个目录设置权限,否则可能会报错:
给fastcgi_temp设置用户权限:
# chown -R daemon:root fastcgi_temp/
开启php-fpm
# /usr/local/php/sbin/php-fpm &
如果端口被占用,启动失败
查看占端口应用,杀掉应用
# netstat -ntlp | grep 9000
# killall php-fpm
让nginx支持php扩展:(编辑nginx.conf)
打开这几行代码注释,把红线位置的/scripts改成项目源码存放的位置,根据实际情况,保存退出。
重启nginx服务器:
# /usr/local/nginx/sbin/nginx -s stop
对应目录创建index.php文件测试:
浏览器测试:
测试全局命令php:
测试全局命令php-fpm:
设置nginx、php-fpm开机自动启动,编辑/etc/rc.local文件,添加nginx、php-fpm的启动命令到其中保存即可:
a