在CentOS上安装Nginx配置HTTPS并设置系统服务和开机启动(最全教程)
友情提示:全部配完大约需要20分钟,系统为腾讯云CentOS7.5,本教程配合 xshell 和 xftp 使用更佳。本教程 摘繁华 版权所有。
操作按键
复制操作:Shift+Ins
开启编辑: i 或者 Insert
退出编辑: Esc
退出vim: : + q
保存vim: : + w
保存退出vim: : + w + q
不保存退出vim: : + q + !
第一步:安装所需要的依赖
1、所需要的依赖包括:gcc,pcre,zlib,openssl。
1 | yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel |
GCC库(用来编译下载下来的 nginx 源码)
GCC 是 Linux 下最主要的编译工具,GCC 不仅功能非常强大,结构也非常灵活。它可以通过不同的前端模块来支持各种语言,如 Java、Fortran、Pascal、Modula-3 和 Ada。
PCRE库( rewrite 模块需要 pcre 库)
PCRE 支持正则表达式。如果我们在配置文件 nginx.conf 中使用了正则表达式,那么在编译 Nginx 时就必须把PCRE库编译进 Nginx,因为 Nginx 的 HTTP 模块需要靠它来解析正则表达式。另外,pcre-devel 是使用PCRE做二次开发时所需要的开发库,包括头文件等,这也是编译 Nginx 所必须使用的。
ZLIB库( gzip 模块需要 zlib 库)
zlib 提供了很多压缩和解方式,用于对 HTTP 包的内容做 gzip 格式的压缩,如果我们在 nginx.conf 中配置了 gzip on,并指定对于某些类型(content-type)的HTTP响应使用 gzip 来进行压缩以减少网络传输量,则在编译时就必须把 zlib 编译进 Nginx。zlib-devel 是二次开发所需要的库。
OpenSSL库(SSL功能需要 openssl 库)
openssl 是一个安全套接字层密码库,如果服务器不只是要支持 HTTP,还需要在更安全的 SSL 协议上传输 HTTP,那么需要拥有 OpenSSL。另外,如果我们想使用 MD5、SHA1 等散列函数,那么也需要安装它。
显示以下结果表示安装完成。
第二步:升级 openssl 非必需
这个不是必需!不想升级可直接跳第三步,怕麻烦最好不升级,不升级也可以用,因为升级我踩过好多坑。
yum安装的 openssl ,版本比较低,我们可以通过以下命令查看 openssl 的版本。
1 | openssl version -a |
openssl 的版本是 1.0.2k,这个是2017年发布的,已经有点老了,我们下载最新版本。
1、进入 openssl官网 查看版本,这里我下载的是 openssl-1.1.1j.tar.gz 。
1 | cd /usr/local |
2、解压 openssl-1.1.1j.tar.gz 并进入解压目录。
1 | tar -zxvf openssl-1.1.1j.tar.gz |
3、进行重新编译 openssl 。
1 | ./config shared zlib |
此过程需要 3 分钟左右……
编译完成后以下图:
4、备份当前openssl。
1 | mv /usr/bin/openssl /usr/bin/openssl.bak |
5、配置使用新版本:
1 | ln -s /usr/local/bin/openssl /usr/bin/openssl |
6、更新动态链接库数据:
1 | echo "/usr/local/lib64/" >> /etc/ld.so.conf |
重新加载动态链接库。
1 | ldconfig -v |
7、重新查看版本号进行验证:
1 | openssl version -a |
8、为适应NGINX编译需要设置参数,需要修改openss路径,不然会出现找不到openssl目录的问题。
1 | cd auto/lib/openssl |
将
1 | CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include" |
修改为
1 | CORE_INCS="$CORE_INCS $OPENSSL/include" |
9、建立libssl.a和libcrypto.a的软连接。
1 | mkdir /usr/local/ssl/lib |
10、建立软连接openssl后,/usr/local/ssl/下没有include路径,需重新指向。
1 | ln -s /usr/include/ /usr/local/ssl/include |
第三步:正式安装Nginx
1、先进入到 usr/local 目录,创建并进入 nginx 目录。
1 | cd /usr/local |
2、通过 wget 命令在线获取到 nginx 的安装包,这里我选择的是 nginx-1.17.7 这个版本,命令是:
1 | wget https://nginx.org/download/nginx-1.17.7.tar.gz |
最新版本可以直接点直通车查看:nginx下载地址
3、解压 nginx-1.17.7.tar.gz。
1 | tar -zxvf nginx-1.17.7.tar.gz |
4、进入刚刚解压的文件夹nginx-1.17.7进行安装。
1 | cd nginx-1.17.7 |
5、使用–prefix参数指定nginx安装的目录。
1 | ./configure --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module |
6、用make或make install安装,安装命令。
1 | make |
显示以下结果表示安装完成。
7、查看nginx版本。
1 | /usr/local/nginx/sbin/nginx -V |
看到版本号为 1.17.7,各个模块也安装正常。
执行完成后看看Nginx安在什么地方了。
1 | whereis nginx |
可以看到,我的nginx是安装在了 /usr/local/nginx。
8、运行命令启动nginx。
1 | /usr/local/nginx/sbin/nginx |
9、用ps命令看看nginx进程跑起来没有。
1 | ps -ef | grep nginx |
跑起来了,说明安装没有问题。
第四步:验证是否成功安装
1、现在在浏览器输入ip地址或者localhost,就能看到Nginx的欢迎界面了。
到此,Nginx成功完成安装!接下来就是配置nginx让别人能访问到你的网站。
第五步:配置nginx
1、打开文件夹 /usr/local/nginx/conf ,查看目录结构。
1 | cd /usr/local/nginx/conf |
可以看到里面有nginx.conf这个文件,使用命令 vim 打开时是这样的
后面要用到的链接
说明文件
这里有必要对nginx.conf说明一下:
1 | #user nobody; |
2、在这里建议将现有的nginx.conf文件复制一份出来并重命名为nginx.conf.bak文件,方便以后配置错了恢复。
1 | cp -b /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak |
3、然后打开 /usr/local/nginx/conf 看看目录结构,发现已经复制好了
1 | cd /usr/local/nginx/conf |
这时后就可以安心修改nginx.conf文件了!注:上面的说明文件和conf源文件一模一样,我只是加了注释,放心复制。
4、直接在本地创建一个空 nginx.conf 文件,复制上面 说明文件的代码,按照我的注释配置你的网站:
一般情况下只需要在最后一个}之前添加server配置就可以了
比如我的个人主页网站配置如下:
下面说说我为什么这么配置(如果你的网站不需要https访问,这一步可以忽略)。
现在网站 https 已经是标配,这个配置还是很重要的。
1 | # -------------------http----------------------- |
上面的配置是为了 http 跳转为 https ,当访问 80 端口时 nginx 自动转发为已经存在配置网址的 443 端口。比如别人访问网站 http://zhaifanhua.cn 会自动跳转为 https://zhaifanhua.cn 。
这里我设置为 *.zhaifanhua.cn 是因为我有很多站点都需要跳转为 https 协议访问,并且我的证书是泛域名解析,干脆用通配符 * 来配置一劳永逸。这样访问任何前缀的域名都可以跳转为 https 协议了。
下面就是正式配置网站目录和证书了,一下内容将参数 server_name、ssl_certificate、ssl_certificate_key、location 下的 root 修改你自己的域名和路径即可。
1 | # -------------------https----------------------- |
5、修改完成后保存,然后用xftp上传到 /usr/local/nginx/conf 目录进行覆盖源文件,然后判断配置文件是否正确,有successful表示可用。
1 | /usr/local/nginx/sbin/nginx -t |
6、配置正确后,重启 nginx 重新加载配置文件使配置生效:
1 | /usr/local/nginx/sbin/nginx -s reload |
7、这时候访问网站已经出现了锁,说明 https 开启成功。
第六步:配置为系统服务
1、在系统服务目录里创建 nginx.service 文件。
1 | vim /lib/systemd/system/nginx.service |
写入内容如下:
1 | [Unit] |
[Unit] 服务的说明
Description 描述服务
After 描述服务类别
[Service] 服务运行参数的设置
Type=forking 是后台运行的形式
ExecStart 为服务的具体运行命令
ExecReload 为重启命令
ExecStop 为停止命令
PrivateTmp=True 表示给服务分配独立的临时空间
[Install] 运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径,保存退出。
2、设置用户的权限,重新加载 nginx.service 文件
1 | chmod 755 ./nginx.service |
3、杀死 nginx 重启nginx
1 | pkill -9 nginx |
说明配置系统服务成功!
4、设置开机自启动
1 | systemctl enable nginx.service |
说明开机自启动设置成功!
其他命令
1 | # 启动nginx服务 |
致谢及彩蛋
- 这篇文章写了整整两天,希望能为你带来帮助。由于知识水平有限,本文难免有不足之处,诚请各位同行提出批评和指正。
- 配置功能可能需要没多长时间,但为了能让读者尽可能一次配置成功,查了无数的资料,也实验了好几遍……还是蛮累的,不要忘了一件三连哦!
彩蛋 :写这篇文章之前,我的域名开了CDN加速,原本我的nginx是配置好的,我更新了我的网站程序后,怎么刷新内容都不变,我还以为我的nginx出错了,而且考虑到我的服务器好长时间没有清理了,直接TMD把服务器重装了,结果忘了备份一个重要的数据库,导致所有资料都没了,你能想到我当时的心情了吧!!!!不过要是没有重装,我也不会写这篇文章了,哈哈哈哈……欲知后文,请关注我或者任何搜索引擎搜索“摘繁华”就能找到我,嘻嘻。
如果你觉得这篇文章还不错,请动动小指头点赞、收藏和关注哦!若本文带给你很大帮助,也可以打赏博主一杯可乐ღゝ◡╹)ノ♡
摘繁华版权所有,转发或引用请附上原文链接哦!