域名设置
在cloudflare的域名DNS记录里面添加两个A记录,一个是store.app2022.ml
,一个是storeapi.app2022.ml
实际A记录的名字随意,只要你能区分就行
ssh登陆到vps后,对vps进行常规升级和更新:
apt update -y
安装 unzip wget git
apt install unzip wget git -y
下载和安装 fnm (Node.js版本管理器)
curl -fsSL https://fnm.vercel.app/install | bash
根据上一步提示执行命令:
source /home/ubuntu/.bashrc
安装node.js
fnm install v16.13.2
安装 PNPM 软件包管理器
curl -fsSL https://get.pnpm.io/install.sh | sh -
全局安装pm2
pnpm i -g pm2
安装pm2 log自动清理插件
pm2 install pm2-logrotate
运行pm2,并按照相应的指令进行下一步
pm2 startup
创建Sub-store的安装文件夹并进入该文件夹
mkdir -p ~/Sub-Store
cd ~/Sub-Store
下载前端页面压缩包并解压缩
wget https://github.com/xream/Sub-Store/releases/download/2.13.5-alpha/dist.zip -O frontend.zip
unzip frontend.zip
将dist文件夹复制到相应目录,后面前端页面要用到
sudo cp -R dist /var/www/html/
下载后端sub-store脚本
wget https://github.com/xream/Sub-Store/releases/download/2.13.5-alpha/sub-store.js -O sub-store-bundled.js
运行sub-store脚本
pm2 start sub-store-bundled.js
保存脚本运行进程
pm2 save
pm2 save 是 PM2 进程管理器的一个命令,用于将当前所有正在运行的进程信息保存到一个文件中,以便在下次启动时自动加载。
列出当前脚本运行状态
pm2 ls
查看脚本实时运行日志,看是否有问题
pm2 logs
pm2 logs 命令将在终端上打印出所有进程的实时日志。可以使用该命令来查看应用程序的日志,以便及时发现和解决问题。
Tips:按 CTRL+C 退出logs界面
可以用 cloudflare 的证书,把证书放到 /root/ssl 文件夹
mkdir -p /root/ssl
nano /etc/nginx/sites-enabled/sub-store.conf
server {
server_name storeapi.app2022.ml;
listen 80;
return 301 https://$server_name$request_uri;
}
server {
server_name storeapi.app2022.ml;
listen 443 ssl;
ssl_certificate /root/ssl/fullchain.pem;
ssl_certificate_key /root/ssl/privkey.pem;
location /(Q3zpAKidTpVKLQbRfJ api-token 这个要自己设置 越复杂越好 )/ {
proxy_pass http://127.0.0.1:3000/;
}
}
server {
listen 80;
listen [::]:80;
server_name store.app2022.ml;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name store.app2022.ml;
ssl_certificate /root/ssl/fullchain.pem;
ssl_certificate_key /root/ssl/privkey.pem;
root /var/www/html/dist;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
}
检查一下nginx的配置是否正确
sudo nginx -t
重载nginx配置,使更改的配置生效
sudo nginx -s reload
至此整个安装部署过程就已经结束了,访问你的sub-store的地址是:
https://store.app2022.ml/?api=https://storeapi.app2022.ml/api-token