Nuxt+Nginx+Let's Encrypt+Certbot的反向代理和自动续订HTTPS证书部署
3

Nuxt

本地打包

在自己的项目下打包

npm run build

安装Node和Npm

sudo apt install nodejs
sudo apt install npm 

查看是否安装成功

nodejs --version
npm --version

如果是Ubuntu18.04或以下的版本,请参考https://github.com/npm/cli/issues/681#issuecomment-886009664

上传服务器

.nuxtstaticnuxt.config.jspackage.json上传到服务器,只要上传到服务器就可以了,不管是哪个位置都可以,用一个文件来包着它们

0a324e7501ba475cb9d0ce2fdf8114b3~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp

在服务器的项目下,开始部署项目

npm install

注意:在低配置的服务器下有可能安装失败,直接显示Killed,所以我们要增大linux的交换空间

sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1

PM2部署

安装pm2

npm install -g pm2

然后要在项目增加ecosystem.config.js文件,它是该项录下的PM2配置

配置:

module.exports = {
  apps: [
    {
      name: 'example',
      exec_mode: 'cluster',
      instances: 'max', 
      script: './node_modules/nuxt/bin/nuxt.js',
      args: 'start',
    }
  ]
}

然后以PM2启动

pm2 start

查看pm2的日志,可以在日志看到已生成本地链接http://localhost:3000

pm2 log

其他常用PM2指令

pm2 delete all
pm2 delete app_name
pm2 stop app_name
pm2 list

放置静态文件

有一种用途,可以需要访问到项目下的静态文件,例如http://www.example.com/sitemap.xml这种的,但是没有在Nginx配置根目录。

其实不用配置Nginx根目录,直接把文件放置在项目的static文件夹就可以了

Nginx

访问http://www.example.com时,80转443,反向代理后访问localhost:3000,在浏覧器显示的是https://www.example.com,显示的是localhost:3000的内容

fa71dbe1acc8416cb8698df873826f05~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp

安装

首先安装Nginx

sudo apt install nginx

通过查看Nginx版本以验证是否安装成功

nginx -v

配置virtual host

/etc/nginx/sites-enabled/增加一个virtual host,例如example

vim /etc/nginx/sites-enabled/example

配置:

upstream nuxt{
        server localhost:3000;

}
server {
        server_name example.com www.example.com;

       location / {
            proxy_pass http://nuxt;
       }
}

检查配置语法

nginx -t

开启Nginx

sudo systemctl start nginx

Nginx的其他常用指令

sudo systemctl status nginx
sudo systemctl stop nginx
sudo systemctl restart nginx

配置证书

要准备域名www.example.comexample.com指向服务器的ip,否则无法验证。当然,你可以只做www.example.com的证书,配置只写一个域名就可以了。

安装Certbot

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx

启动Certbot生成证书

sudo certbot --nginx -d example.com -d www.example.com

输入指令后,首先它会要求你输入Email

f15b974b4f8b49c4b91de9924b891d71~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp

然后同意以下选项

8c21a44bb4f447f99ae8b1e34d23df87~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp

可以看到,它会把设定直接写入你刚才的Nginx文件

552a963c081340f2a187e6cb74988b8f~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp

然后它会让你选择是否把该域名的http自动导向到https,选择2

af40e132917d427b807814065425f311~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp

提示成功

a13b848ffb75405896bf7eff29760588~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp

可以回去查看nginx配置,看到它己经帮你写好的,不需再做任何设置

d6836b5030fa4169a2f0847956ed6a45~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp

证书续订

其实,它会帮你自动续订的,不需做任何设置,但是你可以做个测试(模拟证书续订)

sudo certbot renew --dry-run

还是不放心的话,其实在这个文件里有写自动续订的脚本

cat /etc/cron.d/certbot

b1ed48b33de3448baaefa39e8436b342~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp

Nuxt+Nginx+Let's Encrypt+Certbot的反向代理和自动续订HTTPS证书部署
https://blog.jamesmok.xyz/archives/nuxt-nginx-let-s-encrypt-certbotde-fan-xiang-dai-li-he-zi-dong-xu-ding-httpszheng-shu-bu-shu
作者
Administrator
发布于
更新于
许可