Centos7+Nginx+PHP 基础WEB运行环境手工部署

Centos7+Nginx+PHPPHP-fpm)基础web运行环境手工部署

准备工作

1.安装编译支持

yum -y install gcc automake autoconf libtool make

yum install gcc gcc-c++

2.安装PCRE

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
tar -xzf pcre-8.40.tar.gz -C ./
cd pcre-8.40
./configure --prefix=/usr/local/pcre
make && make install
cd ..

3.安装zlib

wget http://zlib.net/zlib-1.2.11.tar.gz
tar -xzf zlib-1.2.11.tar.gz -C ./
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make && make install
cd ..

4.安装openssl

wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
tar -xzf openssl-1.0.2k.tar.gz -C ./
#注意,这里不需要进行安装,后面步骤省略。

安装Nginx

官方下载http://Nginx.org/en/download.html

wget http://Nginx.org/download/Nginx-1.12.0.tar.gz
tar -xzf Nginx-1.12.0.tar.gz  -C ./
cd Nginx-1.12.0

./configure \
--prefix=/usr/local/Nginx \
--sbin-path=/usr/local/Nginx/Nginx \
--conf-path=/usr/local/Nginx/Nginx.conf \
--pid-path=/usr/local/Nginx/Nginx.pid \
--with-http_ssl_module \
--with-pcre=/mnt/tools/pcre-8.40/ \
--with-zlib=/mnt/tools/zlib-1.2.11/ \
--with-openssl=/mnt/tools/openssl-1.0.2k/

#注:cpre、zlib、openssl等依赖包的路径是解压的源码路径不是安装后的路径。

make
make install

安装PHP

安装依赖扩展

yum install -y libxml2-devel openssl-devel libcurl-devel libjpeg-devel libpng-devel libicu-devel openldap-devel

官网下载http://PHP.net/releases/index.PHP

官网安装文档http://PHP.net/manual/zh/install.unix.Nginx.PHP

wget http://PHP.net/get/PHP-5.6.29.tar.gz/from/this/mirror -O PHP-5.6.29.tar.gz
tar -xzf PHP-5.6.29.tar.gz -C ./
cd PHP-5.6.29
./configure --prefix=/usr/local/PHP/PHP5.6.29/\
 --with-config-file-path=/usr/local/PHP/PHP5.6.29/\
 --with-libdir=lib64\
 --enable-fpm\
 --with-fpm-user=PHP-fpm\
 --with-fpm-group=www\
 --enable-MysqLnd\
 --with-MysqL=MysqLnd\
 --with-MysqLi=MysqLnd\
 --with-pdo-MysqL=MysqLnd\
 --enable-opcache\
 --enable-pcntl\
 --enable-mbstring\
 --enable-soap\
 --enable-zip\
 --enable-calendar\
 --enable-bcmath\
 --enable-exif\
 --enable-ftp\
 --enable-intl\
 --with-openssl\
 --with-zlib\
 --with-curl\
 --with-gd\
 --with-zlib-dir=/usr/lib\
 --with-png-dir=/usr/lib\
 --with-jpeg-dir=/usr/lib\
 --with-gettext\
 --with-mhash\
 --with-ldap

make && make install

配置文件

创建PHP配置文件

#创建配置文件
cd /usr/local/PHP/PHP-5.6.29/
cp PHP.ini-development /usr/local/PHP/PHP5.6.29/PHP.ini
cp /usr/local/PHP/PHP5.6.29/etc/PHP-fpm.conf.default /usr/local/PHP/PHP5.6.29/etc/PHP-fpm.conf

#复制PHP-fpm管理器脚本
cp sapi/fpm/init.d.PHP-fpm /etc/init.d/PHP-fpm

修改配置文件

vi /usr/local/PHP/PHP5.6.29/PHP.ini
#需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 
#以避免遭受恶意脚本注入的攻击。
#定位到 cgi.fix_pathinfo= 并将其修改为如下所示:

cgi.fix_pathinfo=0

创建PHP-fpm运行用户,可通过配置查看当前配置用户及组名。

vi /usr/local/etc/PHP-fpm.conf

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set,the default user's group
;       will be used. 
user = PHP-fpm
group = www


#创建用户
useradd -s /sbin/nologin -M PHP-fpm 
#创建组
groupadd www

通过PHP-fpm脚本,启动PHP服务(停止、重启、重载)。

service PHP-fpm start
service PHP-fpm restart
service PHP-fpm stop
service PHP-fpm reload

配置Nginx,使其支持

vi /usr/local/Nginx/Nginx.conf

修改认的 location 块,使其支持 .PHP 文件

location / {
            root   html;
            index  index.PHP index.html index.htm;
        }

下一步配置来保证对于 .PHP 文件的请求将被传送到后端的 PHP-FPM 模块, 取消认的 PHP 配置块的注释,并修改为下面的内容

location ~ \.PHP$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.PHP;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
            include        fastcgi_params;
        }

测试运行

重启 Nginx

/usr/local/Nginx/Nginx -s stop
/usr/local/Nginx/Nginx
#注意前面应该启动 PHP-fpm ,如:service PHP-fpm start
echo "<?PHP PHPinfo(); ?>" > /usr/local/Nginx/html/index.PHP

访问 http://www.example.com已经成功。

本文注意细节已经在过程步骤中说明,留意查看。如有疑问,请在文末留言,谢谢。

更多关于Nginx、apache等web服务环境部署及生成环境部署优化,欢迎关注本博客文章

续篇文章

Centos7+Nginx+PHP 基础WEB运行环境-多虚拟主机配置

相关文章

Centos下搭建性能监控Spotlight
CentOS 6.3下Strongswan搭建IPSec VPN
在CentOS6.5上安装Skype与QQ
阿里云基于centos6.5主机VPN配置
CentOS 6.3下配置multipah
CentOS安装、配置APR和tomcat-native