1.在opt下面创建目录 vue-project
cd /opt
mkdir vue-project
2.建立三个文件 catalina.sh(项目总体脚本) startup.sh(项目启动脚本) shutdown.sh(项目停止脚本)
vim catalina.sh
#!/bin/bash
#author lawliet
if [ "$1" = "start" ];then
path="/home/huadi/Webproject/vueweb"
echo $path
cd $path
chmod 777 /home/huadi/Webproject/vueweb/node_modules/.bin/webpack-dev-server
npm run dev
elif [ "$1" = "stop" ];then
echo "service stop"
input1="dev-server.js"
PIDS=$(ps -ef | grep $input1|awk '{print $2}')
echo $PIDS
for i in $PIDS
do
echo $i
kill -9 $i
done
echo "vueproject stop"
fi
注:如果参数是start ,上面代码中path即vue项目的根目录的路径,启动之前给vue的启动目录附加权限(chmod);
如果参数是stop,上面代码通过"ps -ef | grep 名称"vue查询相应的后台进程,再通过awk 筛选出pid,接着遍历pid逐个杀死 (kill -9 pid)
vim startup.sh
#!/bin/bash
#author lawliet
nohup /opt/vue-project/catalina.sh start &
注:nohup command &
nohup 是不挂断的运行命令,& 是在后台运行;一般两个一起使用,可以将服务在后台运行,且关闭当前shell窗口,服务也不会停止
vim shutdown.sh
#!/bin/sh
#author lawliet
exec /opt/vue-project/catalina.sh stop
3.建立系统服务
vim etc/systemd/system/vueproject.service
[unit]
Description=Vue Web Application Container
After=network.target
[Service]
Type=forking
ExecStart=/opt/vue-project/startup.sh
ExecStop=/opt/vue-project/shutdown.sh
[Install]
WantedBy=multi-user.target
4.将服务设置为开机自启
systemctl enable vueproject
5.以上操作做完服务就算发布成功了,通过命令启动
systemctl start vueproject #启动服务
systemctl status vueproject #查看服务状态
systemctl stop vueproject #停止服务