如何部署一个网站?

标签: 教程 发布于:2022-11-22 21:39:27 编辑于:2022-11-22 22:17:33 浏览量:92

概述

我在 GitHub 上开源了众多 Web 项目,基本上每个都要写一遍部署的教程,因此感觉有必要专门写一个教程,把服务部署的流程详细说一遍。

以下教程基于 Ubuntu 20.04

环境准备

安装 Nginx

Nginx 用来做反向代理,这主要是为了 HTTPS。

sudo apt update
sudo apt install nginx

安装 Certbot

Certbot 用来自动申请和更新 SSL 证书,这也是为了 HTTPS。

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

安装 pm2

pm2 用来监控服务,如果服务挂掉了其将自动重启。如果服务器重启了,pm2 也能帮我们自动启动服务。

# 首先安装 nvm,nvm 用来安装 Node.js & npm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
# 如果服务器访问不了 GitHub,使用下面这个镜像链接:
curl -o- https://iamazing.cn/upload/699fb580-6a6c-11ed-a623-133396cf317f.sh | bash
# 之后使用 nvm 安装 Node.js & npm:
nvm install node
# 然后使用安装好的 npm 安装 pm2:
npm install pm2 -g
# 使用 pm2 自动检测环境,输出合适的命令,执行输出的命令后可以配置 pm2 自动启动
pm2 startup
# 然后执行上述命令输出的命令

如果在上面操作过程中,出现安装后命令找不到的情况,重开终端,或者执行 source ~/.bashrc 即可。

部署服务

这里拿 Message Pusher 作为例子。

# 从 GitHub Release 下载可执行文件:
wget https://github.com/songquanpeng/message-pusher/releases/download/v0.3.0-alpha/message-pusher
# 给执行权限:
chmod u+x ./message-pusher
# 使用 pm2 启动服务(-- 之后的参数会传递给被启动的程序):
pm2 start ./message-pusher --name pusher -- --port 3000
# (可选)保存服务,这样服务器重启后可以自动重启我们的服务
pm2 save
# 创建 Nginx 配置文件:
cd /etc/nginx/sites-enabled
sudo touch pusher
# 使用 vim 编辑配置文件:
sudo vim ./push

内容如下:

server{
    server_name <domain>;

    location / {
        client_max_body_size  64m;
        proxy_http_version 1.1;
        proxy_pass http://localhost:<port>;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header Accept-Encoding gzip;
    }
}

注意要将上面的 <domain><port> 替换为实际的域名和端口号。

对于使用了 WebSocket 的应用,我们可能还需要设置更长的超时时间:

proxy_read_timeout 300s;
proxy_send_timeout 300s; 

编辑好之后保存(:wq!),继续下面的流程:

# 使用 certbot 获取 SSL 证书:
sudo certbot --nginx
# 按照提示选择即可。
# 之后使用 vim 再次编辑配置文件。
sudo vim ./push
# 我们会发现配置文件此时已经加入了 SSL 相关内容。
# (可选)启用 HTTP2:
# 在配置文件内,把 
listen 443 ssl; # managed by Certbot 
# 改为:
listen 443 ssl http2; # managed by Certbot 
# 之后重启 Nginx:
sudo service nginx restart

至此,大功告成,你的网站应该已经上线了。

未经允许,禁止转载,本文源站链接:https://iamazing.cn/