阿里云esc centos 7.4 64位
yum install -y gcc gcc-c++ openssl openssl-devel
安装这些是应为在编译安装的时候咱们须要它们。php
nginx
首先咱们得去nginx官网下载源码包以及查看文档。编译文档须要仔细查看,先简单了解一下配置参数。html
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"
。翻译大部分来源于网络,这里不展开说明nginx
各个编译参数的含义,先完成安装,毕竟以后咱们能够经过配置文件或者从新编译实现功能上的需求。下面是官方文档的编译参数示例,这些参数必须在同一行输入(别用回车换行,那样就开始编译了o(╥﹏╥)o)nginx
./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
路径我以为不必配置,默认的就很好,--with-http_ssl_module
是对https访问的支持,显然咱们须要它,编译这个模块须要OpenSSL
的支持,咱们在前提条件中已经用yum
安装了OpenSSL
;--with-pcre
是对ngx_http_rewrite_module
中正则表达式的支持,咱们也须要它;--with-zlib
是ngx_http_gzip_module
须要的,咱们最好包含它,ngx_http_gzip_module
能够必定程度上减小服务器负担,固然不编译进来也没事,之后须要能够再从新编译进来。c++
编译安装
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
若是配置或者编译时出现错误,请百度或者google解决,好比,好比在最小化安装的 centos
虚拟机中操做,tar
命令都没有安装,那么报tar
命令不存在时咱们先得安装 tar
命令。正则表达式
测试是否安装成功
启动nginx
后端
/usr/local/nginx/sbin/nginx
访问 ip 若是出现下图,则安装成功centos
前往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
在运行configure
的时候或许会报以下错误网络
configure: error: libxml2 not found. Please check your libxml2 installation
这是由于缺乏libxml库,yum
安装一下就好php7
yum install -y libxml2 libxml2-devel
咱们这里就简单的安装了php,只带了一个参数--enable-fpm
,可是实际咱们也许会须要带更多的参数,这些咱们能够经过从新走一遍安装流程来实现,值得一提的是,在./configure
执行成功以后会在当前目录下留下config.nice
文件,后续若是从新配置,能够在这个基础上运行,好比咱们要安装pcntl
扩展,能够这样执行./config.nice --enable-pcntl
。
完成安装以后的操做
php配置文件,因为在配置时咱们并无指定php.ini的加载位置,默认在安装php安装目录的lib目录下,因此我 们移动配置文件到 /usr/local/php/lib
目录下。
cp php.ini-development /usr/local/php/lib/php.ini
在/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
须要着重提醒的是,若是文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以免遭受恶意脚本注入的攻击。将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。【官方文档提出】
启动php-fpm
/usr/local/php/sbin/php-fpm
修改
nginx
配置以支持php应用
修改默认的 location 块,使其支持 .php 文件:
location / { root html; index index.php index.html index.htm; }
下一步配置来保证对于 .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; }
重启nginx
使配置生效
/usr/local/nginx/sbin/nginx -s stop /usr/local/nginx/sbin/nginx
建立测试文件
echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php