主要目的:
- 将Node项目(以svelte sapper应用程序例)部署到ubuntu服务器中
- 在ubuntu服务器中配置nginx,将项目部署到自己的网站上
涉及知识点:
- 在ubuntu中安装node,npm
- 使用pm2对node进程进行管理
- 使用缓存设置 Nginx 服务器
一、ubuntu安装node,npm
sudo apt install nodejs #安装node,同时npm也安装好了
sudo apt install build-essential #某些包需要它
node -v #查看node版本
npm -v #查看npm版本
二、将自己的node项目上传到服务器
scp 本地文件 ubuntu@公网ip:/home/ubuntu/服务器文件夹地址 #在本机终端运行
这是我服务器的项目目录
三、运行自己的node项目并用pm2管理
cd 你的项目目录
npm run build #build node项目,以安装必要的环境
pm2 start npm --name "demo" -- start #使用pm2添加该项目,demo是你自定义的项目名
pm2 save #保存
sudo env PATH=$PATH:/usr/local/bin pm2 startup -u USER_NAME #USER_NAME是你当前登陆的用户名,我这里直接是ubuntu
pm2 list #查看pm2管理的项目
curl http://localhost:5000 #查看是否启动成功(3000换成你自己项目的端口)
查看pm2守护项目
检查是否运行成功
四、安装配置nginx
- 安装nginx
sudo apt install nginx #安装nginx
sudo ufw allow 'Nginx HTTP' #将Nginx HTTP 访问添加到防火墙
- 配置nginx的server block
sudo mkdir /var/cache/nginx #为要存储的缓存创建一个目录
sudo nano /etc/nginx/sites-available/YOUR_SITE.vhost #修改server配置,YOUR_SITE是你自定义的名字
- YOUR_SITE.vhost添加的内容
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=480m use_temp_path=off;
server { listen 80; listen [::]:80;
server_name www.你的域名.com; ##修改内容1(最好前面加上一个www,目的是防止www.example.com的域名在添加https的证书的时候没有被添加)
location / {
proxy_cache my_cache;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_cache_revalidate on;
proxy_pass http://localhost:5000; ##修改内容2,修改把5000换成你项目的端口号
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
- 移动我们修改的内容
sudo ln -s /etc/nginx/sites-available/YOUR_SITE.vhost /etc/nginx/sites-enabled/ #移动配置文件
cd /etc/nginx/sites-enabled/
sudo rm -rf default #最好删除这个文件
- 启动nginx
sudo nginx -t #首先测试nginx
sudo service nginx restart #重启nginx
sudo systemctl status nginx #查看nginx状态
sudo tail -f /var/log/nginx/access.log #查看nginx日志
sudo tail -f /var/log/nginx/error.log #查看nginx日志
接着访问自己的网站域名即可
nginx正常运行的样子
五、错误排查
- 1、使用
node npm build
检查你的node项目是否编译成功 - 2、使用
pm2 list
检查你的node项目是否在运行 - 3、使用
sudo service nginx status
检查nginx是否正常运行