前端之家收集整理的这篇文章主要介绍了
全新centos系统下源码安装php+nginx,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
前言
安装软件列表
- Nginx-1.13.9
- PHP-7.2.3
操作系统
阿里云esc centos 7.4 64位
前提条件
yum install -y gcc gcc-c++ openssl openssl-devel
@H_
404_18@安装这些是应为在编译安装的时候我们需要它们。
@H_
404_18@首先我们得去
nginx官网下载源码包以及查看文档。
编译文档需要仔细查看,先简单了解一下配置参数。
Nginx
配置参数
-
--prefix=path
定义一个目录,存放服务器上的文件 ,也就是Nginx的安装目录。默认使用/usr/local/Nginx
。
-
--sbin-path=path
设置Nginx的可执行文件的路径,默认为prefix/sbin/Nginx
。
-
--conf-path=path
设置在Nginx.conf配置文件的路径。Nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/Nginx.conf
。
-
--pid-path=path
设置Nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在Nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/Nginx.pid
。
-
--error-log-path=path
设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在Nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log
。
-
--http-log-path=path
设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在Nginx.conf配置文件中 使用 的access_log指令。默认情况下,文件名 为prefix/logs/access.log
。
-
--build=name
设置一个可选的Nginx构建名称。
-
--user=name
设置Nginx工作进程的用户。安装完成后,可以随时更改的名称在Nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody。
-
--group=name
设置Nginx工作进程的用户组。安装完成后,可以随时更改的名称在Nginx.conf配置文件中 使用的 user指令。默认的为非特权用户。
-
--with-select_module
--without-select_module
启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
-
--with-poll_module
--without-poll_module
启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
-
--without-http_gzip_module
— 不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
-
--without-http_rewrite_module
不编译重写模块。编译并运行此模块需要PCRE库支持。
-
--without-http_proxy_module
— 不编译http_proxy模块。
-
--with-http_ssl_module
— 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
-
--with-pcre=path
— 设置PCRE库的源码路径。PCRE库的源码(版本4.4 - 8.41)需要从PCRE网站下载并解压。其余的工作是Nginx的 ./configure 和 make 来完成。正则表达式使用在location指令和 ngx_http_rewrite_module 模块中。
-
--with-pcre-jit
—编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
-
--with-zlib=path
—设置的zlib库的源码路径。要下载从 zlib(版本1.1.3 - 1.2.11)的并解压。其余的工作是Nginx的./ configure和make完成。ngx_http_gzip_module模块需要使用zlib 。
-
--with-cc-opt=parameters
— 设置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:--with-cc-opt="-I /usr/local/include。.如需要需要增加 select()支持的文件数量:--with-cc-opt="-D FD_SETSIZE=2048".
-
--with-ld-opt=parameters
—设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:--with-ld-opt="-L /usr/local/lib"
。
@H_
404_18@翻译大部分来源于网络,这里不展开说明
Nginx
各个编译参数的含义,先完成安装,毕竟之后我们可以通过
配置文件或者重新编译实现
功能上的需求。下面是官方文档的编译参数示例,这些参数必须在同一行输入(别用回车换行,那样就开始编译了o(╥﹏╥)o)
./configure
--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=../pcre-8.41
--with-zlib=../zlib-1.2.11
@H_
404_18@路径我觉得没必要配置,默认的就很好,
--with-http_ssl_module
是对https访问的
支持,显然我们需要它,编译这个模块需要
OpenSSL
的
支持,我们在前提条件中已经用
yum
安装了
OpenSSL
;
--with-pcre
是对
ngx_http_rewrite_module
中正则表达式的
支持,我们也需要它;
--with-zlib
是
ngx_http_gzip_module
需要的,我们最好包含它,
ngx_http_gzip_module
可以一定程度上减少服务器负担,当然不编译进来也没事,以后需要可以再重新编译进来。
编译安装
Nginx
//下载Nginx源码包
wget http://Nginx.org/download/Nginx-1.13.9.tar.gz
//下载pcre源码包
wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz
//下载zlib源码包
wget http://www.zlib.net/zlib-1.2.11.tar.gz
//解压
tar zxvf Nginx-1.13.9.tar.gz
tar zxvf pcre-8.41.tar.gz
tar zxvf zlib-1.2.11.tar.gz
//进入Nginx目录
cd Nginx-1.13.9
//配置, -with-pcre=../pcre-8.41 --with-zlib=../zlib-1.2.11 这么写是因为我把zlib和pcre都放在Nginx源码包同一级目录下
./configure --prefix=/usr/local/Nginx --with-http_ssl_module --with-pcre=../pcre-8.41 --with-zlib=../zlib-1.2.11
//配置成功之后,编译并安装
make && make install
@H_
404_18@如果配置或者编译时出现
错误,请
百度或者google
解决,比如,比如在最小化安装的
centos
虚拟机中操作,
tar
命令都没有安装,那么报
tar
命令不存在时我们先得安装
tar
命令。
测试是否安装成功
@H_
404_18@启动
Nginx
/usr/local/Nginx/sbin/Nginx
@H_
404_18@访问 ip 如果出现下图,则安装成功
@H_
404_18@
@H_
404_18@前往
php下载页面找到需要安装的
PHP版本,这里我们安装最新的稳定版本
PHP7.2.3
。官方文档没有给出配置参数列表,我们可以使用
./configure --help
查看。
下载、配置及编译安装PHP
//下载PHP的安装文件
wget http://cn2.PHP.net/distributions/PHP-7.2.3.tar.gz
//解压
tar zxvf PHP-7.2.3.tar.gz
//进入解压后的目录
cd PHP-7.2.3
//配置安装参数
./configure --enable-fpm --prefix=/usr/local/PHP
//编译安装
make && make install
@H_
404_18@在运行
configure
的时候或许会报如下
错误
configure: error: libxml2 not found. Please check your libxml2 installation
@H_
404_18@这是因为缺少libxml库,
yum
安装一下就好
yum install -y libxml2 libxml2-devel
@H_
404_18@我们这里就简单的安装了
PHP,只带了一个参数
--enable-fpm
,但是实际我们也许会需要带更多的参数,这些我们可以通过重新走一遍安装流程来实现,值得一提的是,在
./configure
执行成功之后会在当前目录下留下
config.nice
文件,后续如果重新配置,可以在这个基础上运行,比如我们要安装
pcntl
扩展,可以这样执行
./config.nice --enable-pcntl
。
完成安装之后的操作
@H_
404_18@
PHP配置文件,由于在配置时我们并没有指定
PHP.ini的加载位置,默认在安装
PHP安装目录的lib目录下,所以我 们移动
配置文件到
/usr/local/PHP/lib
目录下。
cp PHP.ini-development /usr/local/PHP/lib/PHP.ini
@H_
404_18@在/usr/local/
PHP/etc/
PHP-fpm.conf 最后一行可以看到 include=/usr/local/
PHP/etc/
PHP-fpm.d/*.conf,所以需要执行以下步骤。
cp /usr/local/PHP/etc/PHP-fpm.d/www.conf.default /usr/local/PHP/etc/PHP-fpm.d/www.conf
@H_
404_18@需要着重提醒的是,如果
文件不存在,则阻止
Nginx 将请求发送到后端的
PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。将
PHP.ini
文件中的配置项 cgi.fix_pathinfo 设置为 0 。【官方文档提出】
启动PHP-fpm
/usr/local/PHP/sbin/PHP-fpm
修改
Nginx
配置以支持PHP应用
@H_
404_18@
修改默认的 location 块,使其
支持 .
PHP 文件:
location / {
root html;
index index.PHP index.html index.htm;
}
@H_
404_18@下一步配置来保证对于 .
PHP 文件的请求将被传送到后端的
PHP-FPM 模块, 取消默认的
PHP 配置块的注释,并
修改为下面的
内容:
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;
}
@H_
404_18@重启
Nginx
使配置生效
/usr/local/Nginx/sbin/Nginx -s stop
/usr/local/Nginx/sbin/Nginx
@H_
404_18@创建测试
文件
echo "<?PHP PHPinfo(); ?>" >> /usr/local/Nginx/html/index.PHP