有很多next、nuxt、yarn的nodejs程序,都是什么npm start
或者yarn develop
的启动模式,如何搞成systemd的服务呢,这里面麻烦的就是systemd的服务需要使用全路径。
那方法如下:
一、安装nvm
1curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
二、安装nodejs和yarn
1source ~/.nvm/nvm.sh
2
3nvm ls-remote
4
5nvm install v20.19.5
6
7node -v
8
9npm install -g yarn
10
11npm list -g
三、弄strapi.service服务
1echo $NVM_DIR # 确定 nvm 的安装目录
2/root/.nvm
3
4which node # 确定 Node.js 的路径
5/root/.nvm/versions/node/v20.19.5/bin/node
6
7which yarn # 确定 Yarn 的路径
8/root/.nvm/versions/node/v20.19.5/bin/yarn
9
10cat < EOF > /etc/systemd/system/strapi.service
11[Unit]
12Description=Strapi App
13After=network.target
14
15[Service]
16# 使用用户账户运行服务,替换为实际的用户名
17User=root
18Group=root
19
20# 指定工作目录,替换为项目的实际路径
21WorkingDirectory=/data/strapi
22
23# 加载 nvm 并运行 yarn 或 node
24Environment="NVM_DIR=/root/.nvm"
25ExecStart=/bin/bash -c ". $NVM_DIR/nvm.sh && yarn develop"
26
27Restart=always
28RestartSec=10
29
30[Install]
31WantedBy=multi-user.target
32EOF
33
34systemctl daemon-reload
35
36systemctl enable --now strapi