【保姆级】在 linux 服务器上安装 Nginx 并部署前端项目申请免费证书HTTPS 站点

239 阅读4分钟

前言

因为很多新手小白拿到服务器却不会部署自己的项目,这篇文章带你了解部署前端域名申请证书全过程

准备工作

  1. 新建前端文件夹我这里可以作为参考 vim front/pyq/index.html
  2. 申请一个域名,解析在指定服务器。

image.png

image.png

1. 添加 Nginx 官方仓库

CentOS 7 默认的 yum 源中不包含最新版本的 Nginx,所以需要先添加 Nginx 官方仓库。

运行以下命令来创建 Nginx 仓库文件:

sudo vi /etc/yum.repos.d/nginx.repo

在文件中添加以下内容:

[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

保存并退出编辑器。

2. 安装 Nginx

在添加 Nginx 官方仓库后,执行以下命令来安装 Nginx:

sudo yum install nginx

3. 启动 Nginx 服务

安装完成后,启动 Nginx 服务:

sudo systemctl start nginx

设置 Nginx 开机自启动:

sudo systemctl enable nginx

4. 检查 Nginx 服务状态

你可以使用以下命令检查 Nginx 服务的状态,确保其运行正常:

sudo systemctl status nginx

5. 配置防火墙

如果你使用的是 firewalld 防火墙,需要确保 HTTP (端口 80) 和 HTTPS (端口 443) 是开放的

注意如果是国内的服务器需要登录阿里云或者腾讯云开放端口

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

6. 验证安装

完成后,你可以通过访问服务器的 IP 地址来确认 Nginx 是否工作。例如,在浏览器中访问:

nginx -t

你应该可以看到 Nginx 启动正常的提示。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

7. Nginx 配置文件及站点配置

Nginx 的默认配置文件位于 /etc/nginx/nginx.conf,但是为了更好地管理不同的站点或应用程序,通常会将每个站点的配置放在 /etc/nginx/conf.d/ 目录中。这里提供一个示例,介绍如何配置 Nginx 来部署一个站点。

7.1 创建站点配置文件

假设你要部署一个前端项目,并且项目的静态文件位于 /usr/share/nginx/html/my-site 目录。可以创建一个新的 Nginx 配置文件来定义这个站点,这里建议一个站点建立一个.conf文件。

sudo vi /etc/nginx/conf.d/pyq.conf

在文件中添加如下配置:

server {
    listen 80;
    server_name info.dqh.baby; #这是解析后的域名,如果不知道怎么申请域名可以看我另一篇文章。

    root /front/pyq; #这里是需要展示的资源目录
    index index.html index.htm;

    location / {
        try_files $uri $uri/ /index.html;
    }
}
  • listen 80;:配置服务器监听 HTTP 端口 80。
  • server_name info.dqh.baby;:将 info.dqh.baby 替换为你的域名或服务器 IP 地址。
  • root:指定网站的根目录,Nginx 会从这里提供文件服务,就是指向你想展示的静态资源。
  • index:指定默认的首页文件。
  • location /:为请求定义路由规则,try_files $uri $uri/ /index.html; 表示如果请求的文件或路径不存在,Nginx 会返回 index.html

保存并退出编辑器。

7.2 测试 Nginx 配置

在 Nginx 配置文件编辑完成后,运行以下命令来测试配置是否正确:

sudo nginx -t

如果输出结果是 syntax is oktest is successful,表示配置文件没有问题。

7.3 重新加载 Nginx

测试通过后,重新加载 Nginx 使新配置生效:

sudo systemctl reload nginx

8. 部署 HTTPS(可选)

为了让网站支持 HTTPS,你可以使用 Let’s Encrypt 提供的免费 SSL 证书。我们可以使用 Certbot 来自动获取和配置证书。

8.1 安装 Certbot

首先需要安装 EPEL(Extra Packages for Enterprise Linux)源:

sudo yum install epel-release

然后安装 Certbot 和 Nginx 插件:

sudo yum install certbot python2-certbot-nginx
8.2 申请 SSL 证书

执行以下命令为你的域名申请 SSL 证书:

sudo certbot --nginx -d info.dqh.baby

your_domain 替换为你实际的域名。Certbot 会自动生成 SSL 证书并配置 Nginx 来使用它。

8.3 自动续订证书

Let’s Encrypt 证书的有效期是 90 天,可以设置自动续订:

sudo certbot renew --dry-run

这将测试自动更新的流程,确保在证书即将过期时会自动续订。

9. 设置开机自启动

如果你希望 Nginx 和其他相关服务在服务器重启时自动启动,可以使用 systemctl enable 命令:

sudo systemctl enable nginx

这将确保 Nginx 在系统重启后自动启动。

image.png

10. 监控 Nginx 日志

Nginx 的日志可以帮助你排查问题或了解站点的访问情况。默认情况下,日志存放在 /var/log/nginx/ 目录下。

  • 访问日志:记录所有成功访问的请求。

    /var/log/nginx/access.log
    
  • 错误日志:记录任何导致错误的请求或配置问题。

    /var/log/nginx/error.log
    

可以通过 tail -f 命令实时查看日志,例如:

sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

总结:

这篇指南介绍了如何在 CentOS 7 上通过官方 Nginx 仓库安装 Nginx,并为前端项目部署 HTTPS 站点。以下是主要步骤:

  1. 添加 Nginx 官方仓库
    创建 Nginx 仓库配置文件并添加官方仓库地址,以确保安装最新版本的 Nginx。
  2. 安装 Nginx
    使用 yum 命令安装 Nginx。
  3. 启动 Nginx 服务
    通过 systemctl 命令启动 Nginx 并设置开机自启动。
  4. 配置防火墙
    开放 HTTP(80)和 HTTPS(443)端口,确保外部能够访问你的站点。
  5. 验证 Nginx 安装
    通过 nginx -t 命令测试 Nginx 配置文件的正确性。
  6. 站点配置
    /etc/nginx/conf.d/ 目录下创建自定义站点配置文件,指定站点根目录及路由规则,并配置静态文件的访问。
  7. 测试并重载 Nginx
    测试配置文件无误后,使用 systemctl reload nginx 重新加载 Nginx 以应用新配置。
  8. 部署 HTTPS
    使用 Let’s Encrypt 提供的免费 SSL 证书,通过 Certbot 工具为域名自动申请并配置 SSL 证书。
  9. 自动续订证书
    配置自动续订,确保 Let’s Encrypt 证书在到期前自动更新。
  10. 设置开机自启动
    使 Nginx 在服务器重启后自动启动,确保服务持续运行。
  11. 监控 Nginx 日志
    通过查看 Nginx 的访问日志和错误日志,监控网站运行状态并排查潜在问题。

这个总结涵盖了从安装 Nginx 到使用 HTTPS 保护站点的全过程,同时包含了防火墙配置、自动续订和日志监控等细节,适合需要在 CentOS 7 上进行 Web 服务器配置的用户参考。