CentOS安装配置Nginx、安装SSL模块、并配置systemd
1.安装所需环境
#一次安装4个插件
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
#一次安装如果有问题,可以试一下分开安装
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
2.下载Nginx
使用wget
命令下载远程文件 如果没有安装wget
先执行 yum install wget
安装wget
wget -c https://nginx.org/download/nginx-1.20.2.tar.gz
3.解压
tar -zxvf nginx-1.20.2.tar.gz
4.进入解压后的源码包
cd nginx-1.20.2
5.配置
- 如果不安装任何第三方模块 直接默认配置**[方便后面演示安装SSL模块 我这里直接使用默认配置 不安装任何第三方模块]**
./configure
- 如果需要配置安装第三方模块 则在命令后加上模块名 比如安装
ssl
模块 当然模块可以在安装后再继续添加
# 这里推荐大家不执行 下文我将带大家进行后期的安装
./configure --with-http_ssl_module
6.编译
make
- 此时我们可以查看预安装的模块 输出结果
configure arguments
: 后带的就是我们将安装的模块 如果前面是默认安装 则configure arguments
: 后不携带任何模块
objs/nginx -V
7.编译安装
make install
- 安装完成后可查看
安装路径
我这里是/usr/local/nginx
whereis nginx
8.启动 停止 重启Nginx
- 这时候我们cd到刚刚的
安装路径
下的/sbin/
文件夹
cd /usr/local/nginx/sbin/
-
执行对应目录即可操作Nginx
-
如果执行时提示错误:
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
原因:nginx.conf的nginx.pid被注释了
解决:进入/usr/local/nginx/conf/找到nginx.conf文件找到
pid logs/nginx.pid
解除注释切记:但凡修改了
nginx.conf
等配置文件 都必须重启Nginx才能生效
-
# 启动Nginx
./nginx
# 停止Nginx
./nginx -s stop
# 重启Nginx
./nginx -s reload
9.开放端口
-
开启防火墙80、443端口 也就是http与https
sudo firewall-cmd --reload
命令的意思是立即生效 -
如果服务器在 阿里云、腾讯云 等云平台则需要到安全组开放端口
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
10.大功告成
-
访问服务器IP地址的80端口(默认80端口) 如果正常显示Welcome to Nginx!页面则表示Nginx配置成功
-
配置自己的项目页面(修改Nginx安装目录下
/conf/nginx.conf
配置文件)其余的配置项大家可百度悉知server { listen 80; # 端口 server_name localhost; location / { root /usr/web/ming_home; # 页面目录(如果前端页面不在/usr/下可能导致权限不足无法访问) index index.html index.htm; # 索引文件 } }
11.配置systemd
- 现在我们启动Nginx还得cd到安装目录并手动执行Nginx 并且现在还不能开机自启动
12.创建服务文件
- 进入系统服务目录
cd /etc/systemd/system
- 编辑 Nginx.service启动配置
vim nginx.service
- 在配置文件中写入如下配置 我这里Nginx的安装目录是
/usr/local/nginx
如果你的不是则在写如下配置时要记得更改
[Unit]
Description=nginx-The High-performance HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
-
到这里systemd就已经配置完成 可以使用如下命令操作Nginx
-
查看 Nginx 状态
systemctl status nginx
-
重启 Nginx
systemctl restart nginx
-
启动 Nginx
systemctl start nginx
-
停止 Nginx
systemctl stop nginx
-
启用开机启动 Nginx
systemctl enable nginx
-
禁用开机启动 Nginx
systemctl disable nginx
13.安装SSL模块
-
如果我们没有安装SSL模块 在配置Https时 会提示错误:
nginx: [emerg] the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:37
-
我们先切换到源码包目录(也就是刚刚
wget
下载并解压的目录,如果你删除了改目录 可以重新下载一个对应版本)我的源码目录是
/usr/app/nginx-1.20.2/
cd /usr/app/nginx-1.20.2
-
查看Nginx当前已安装的模块
/usr/local/nginx/sbin/nginx -V
-
configure arguments:
后输出的就是现有已安装的模块 我们要将后面输出的内容复制下来 和SSL模块一并安装 否则就丢失了因为我这里没有安装任何模块 所以
configure arguments:
后面输出就是空的因此我们只需要加上自己想要的SSL 模块名称
--with-http_ssl_module
然后回车执行./configure --prefix=/usr/local/nginx --with-http_ssl_module
-
执行完上面的命令后我们接着执行编译命令
注意:这里切记千万不要执行
make install
否则就把原来安装的Nginx所有文件都覆盖掉了make
-
关闭Nginx
systemctl stop nginx
-
然后用源码包中刚刚编译好的的Nginx把安装目录中的Nginx替换掉
cp ./objs/nginx /usr/local/nginx/sbin/
- 输出确认覆盖提示后输入
y
回车即可
- 输出确认覆盖提示后输入
-
然后查看安装目录下的Nginx是否已安装我们需要的模块
/usr/local/nginx/sbin/nginx -V
14.安装SSL证书
- 腾讯云、阿里云等平台可以申请免费的SSL证书
- 申请通过后,在申请的平台下载Nginx版SSL证书
- 下载SSL证书并解压后 我们复制以下两个文件
xxxxx.crt
和xxxxx.key
文件 - 把文件上传到Nginx安装目录下 更改
nginx.conf
配置文件进行SSL证书配置
15.配置SSL证书
- 配置344(Https)端口
- 配置SSL证书路径
ssl_certificate
和ssl_certificate
配置项
server {
listen 344;
server_name localhost;
ssl_certificate /usr/local/nginx/ xxxxx.crt;
ssl_certificate_key /usr/local/nginx/ xxxxx.Key;
location / {
root /usr/web/ming_home;
index index.html index.htm;
}
}
15.配置Http和Https共存
server {
listen 80 default backlog=2048;
listen 443 ssl;
server_name localhost;
root /usr/web/ming_home;
ssl_certificate /usr/local/nginx/ xxxxx.crt;
ssl_certificate_key /usr/local/nginx/ xxxxx.Key;
location / {
root /usr/web/ming_home;
index index.html index.htm;
}
}
好啦 本次小教程到这里就结束啦 第一次发帖 可能有很多不足的地方欢迎指出