CentOS7 安装配置 Nginx

上个月准备搭建个人网站的时候选择了使用 Nginx,并学习了如何装配,当时没有记录下来,现在重新回顾一遍。

环境

阿里云学生服务器(¥9.9/月) CentOS 7.3 64位

安装 Nginx 之前没有进行过任何操作,所以使用过的服务器遇到一些兼容性问题请自行搜索解决。

如果安装过程中遇到缺少依赖的情况,直接安装依赖即可,如果不放心可以去搜索查找解决方案。

下载 tar 包并解压缩

博主采用离线安装的方式,首先下载 Nginx 的 tar 包,地址:http://nginx.org/en/download.html,选择 nginx-1.16.1.tar.gz,当然可以选择其他版本。

然后使用 scp 指令上传至服务器,选择在服务器使用 wget 指令下载也可以。

之后使用 tar 指令解压缩,博主的安装目录为 /usr/local/nginx,可执行文件目录为 /usr/local/nginx/sbin

建议将个人安装(而非使用 yumapt 类指令安装)的应用程序以及各种环境都放在 /usr/local 目录下,同时如果可能需要安装多版本,则在目录下建立子目录用以区分。

安装 Nginx

# 进入 Nginx 目录
cd /usr/local/nginx
# 执行命令
./configure
make
make install

上面这三条指令是基本操作,如果你的文件没有问题,那么这三条指令也不应该出问题。如果以前安装过(或自带) Nginx ,记得先卸载。

验证安装

./sbin/nginx -t
# nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
# nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

输出注释的两句就说明安装没有问题,接下来去修改配置文件。

配置文件

防火墙

首先配置防火墙,需要让防火墙开放端口(关闭防火墙可以一劳永逸,但安全性得不到保障)

vim /etc/sysconfig/iptables

添加如下两条指令:

# 80 端口对应的 HTTP 协议,443 端口对应的 HTTPS 协议
# 如果之前没有动过防火墙,可以看到一条 22 对应的 SSH 协议
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

Nginx 配置文件

vim ./conf/nginx.conf

添加如下的记录(原先的可以注释掉了):

# HTTP server
server {
    listen      80;
    server_name server_name;
    # HTTP 重定向至 HTTPS,强制 HTTPS 访问
    return 301 https://$server_name$request_uri;
}

# HTTPS server
server {
    listen       443 ssl;
    server_name  server_name;

    # ssl 证书,配置好目录(我放在 conf 目录下,与 nginx.conf 同目录)
    ssl_certificate      ssl_certificate.pem;
    ssl_certificate_key  ssl_certificate.key;

    # ssl 相关配置
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    # 网站目录
    # root 规定访问的目录(我将服务放在 www 目录下,不同的服务分子目录)
    # index 规定访问的主页面
    location / {
        root   /www/source;
        index  index.html;
    }
}

完成配置

配置完记得启动服务

./sbin/nginx

再罗列一下常用的几条指令

./sbin/nginx -s stop # 停止 Nginx 服务
./sbin/nginx -s reload # 重新加载配置文件:启动一个新的进程来工作,然后让老进程优雅地退出,不会终止服务

后可以在浏览器输入服务器的 ip 尝试访问,如果显示 502 之类的错误,务必排查一下操作有没有错误。

开机自启

有时候我们会重启服务器,如果每次都要手动开启 Nginx 显然太麻烦了,需要配置一下开机自启:

# 切记以 .service 为后缀,打错了会失效
touch /usr/lib/systemd/system/nginx.service
vim /usr/lib/systemd/system/nginx.service

进行如下配置:

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

然后启动即可:

systemctl enable nginx

个人博客:https://wilfredshen.cn/

相关推荐