说明:在CentOS7.x下安装Nginx、PHP并生成自签名证书、开启http2内容比较多。所以,我将这整块内容分为两部分:这一部分主要是软件的安装及配置,第二部分则为使用openssl生成自签名证书并为Nginx开启http2.
0. 相关软件及概念的简要说明
本次任务要使用到的软件主要有Nginx(依赖的软件有openssl、zlib、pcre)、PHP(php-fpm)
1)Nginx:是一款轻量级、高性能的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。国内的百度、京东、淘宝等都在使用这个开源软件。
官网:http://nginx.org/
2)PHP:这个不多解释,算是进行网页开发必备的工具之一吧。
3)自签名证书:CA(Certification Authority)证书中的一种由签名实体发布给自己的证书,即发布者和证书主体相同。今天实际操作中使用OPENSSL创建的也属于自签名证书,自签名证书的目的即为了增强网络的安全性。
注意:这里说的自签名证书与私有CA签名的证书不同,相关的介绍见:http://blog.csdn.net/sdcxyz/article/details/47220129
4)http2:是下一代HTTP协议,更加安全,目前只在https协议下使用。系统自带的openssl版本较低,不支持http2.
1. Nginx的安装
由于系统自带的openssl版本(可通过openssl version
命令查看)不支持http2,所以,为后续操作的便利,我们需要首先通过编译安装的方式“升级”openssl,并安装Nginx以来的系列软件,还包括pcre以及zlib,再编译安装Nginx。
(1) 相关软件的安装
以openssl的编译安装为例:
1)下载最新版源码到本地
wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz
2) 源码解压
tar -zvxf openssl-1.1.0f.tar.gz -C /usr/local/src
3) 编译安装
./config --prefix=/usr/local/openssl
make
make install
4) 为openssl设置软连接(替换之前的版本)
mv /usr/bin/openssl /root/
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
注:pcre及zlib的编译安装与openssl类似(进行前三步即可),故不赘述。
- pcre下载地址:ftp.csx.cam.ac.uk/pub/software/programming/pcre/
- zlib官网:http://zlib.net/
(2) Nginx的编译安装
1) 从官网中下载最新版本
wget http://nginx.org/download/nginx-1.12.0.tar.gz
2) 解压到/usr/local/src
tar -zvxf nginx-1.12.0.tar.gz -C /usr/local/src
3) 编译
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-openssl=/usr/local/src/openssl-1.1.0f --with-zlib=/usr/local/src/zlib-1.2.11 --with-pcre=/usr/local/src/pcre-8.41
说明:openssl,zlib及pcre后跟的是这三个程序的源码路径。
4) 安装
make
make install
5) nginx服务相关命令
开启服务:/usr/local/nginx/sbin/nginx
关闭服务:/usr/local/nginx/sbin/nginx -s stop
重启服务:/usr/local/nginx/sbin/nginx -s reload
Notice:可以使用alias nginx=’/usr/local/nginx/sbin/nginx’简化命令。
此时,在浏览器中输入ip地址,即可看到Nginx的欢迎页面,如下图:
2. PHP的安装
这里使用较为简便的yum方式进行安装:
1) 安装源
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
2) 安装PHP和PHP-FPM
yum install php71w php71w-cli php71w-fpm
3. Nginx与PHP的相关配置
按照博主之前的方式进行安装后,此时需要修改的配置文件的分别为:/etc/php.ini
、/etc/php-fpm.d/www.conf
以及/etc/local/nginx/conf/nginx.conf
。
(1) PHP相关设置
1) /etc/php.ini的修改
cgi.fix_pathinfo=0
将cgi.fix_pathinfo的注释取消掉,并将其值设为0
2) /etc/php-fpm.d/www.conf文件的设置
listen = /run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
user = nginx
group = nginx
在www.conf文件中将上述行的注释取消掉,并将其值设置为上述值。
3) 修改php-fpm.sock文件的所有者及权限
# 新建php-fpm.sock文件
systemctl restart php-fpm
# 修改php-fpm.sock文件权限
chmod 666 /run/php-fpm/php-fpm.sock
chown nginx:nginx /run/php-fpm/php-fpm.sock
# 重启PHP服务
systemctl restart php-fpm
(2) Nginx相关设置
在配置好PHP相关文件后,需要在/etc/local/nginx/conf/nginx.conf
中修改Nginx相关配置。
server {
listen 80;
server_name your domain name or IP;
root /usr/local/nginx/html;
index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
当修改好Nginx的配置后,保存(wq)并退出,并在/usr/local/nginx/html
中新建一个info.php文件:
<?php
phpinfo();
?>
保存并退出,重启Nginx服务:
/usr/local/nginx/sbin/nginx -s reload
在浏览器中输入http://ip/info.php,显示你所安装的PHP相关信息即可。
好了,本篇博客的介绍就到这里了,下篇博客我们将使用openssl生成自签名证书并未nginx开启http2.
博客参考内容主要有:
1. https://sg.godaddy.com/zh/help/build-a-lemp-stack-linux-nginx-mysql-php-centos-7-17349
2. http://www.jianshu.com/p/d5114a2a2052