Linux系统中Vue项目无法在后台长期运行(即nohup无法将vue项目进程转为守护进程)的解决方法

一、运行环境

项目使用vue版本:vue3.0;
服务器系统镜像:Alibaba Cloud Linux 3.21.04;
node.js版本:v18.15.0;
npm版本:v9.6.2;
终端连接工具:FinalShell 3.9.8.2。

二、问题复现

将vue项目上传至阿里云服务器中,使用cd命令进入项目所在文件夹中,
在这里插入图片描述再使用nohup npm run serve > /opt/log/vue.log 2>&1 & 命令让Vue项目持续在后台运行
在这里插入图片描述
在这里插入图片描述
此时Vue项目已经运行成功,通过浏览器输入地址已经可以正常访问。但是通过ps -axj命令查看进程信息(如下图),图中java后端已通过nohup命令转为守护进程可在终端关闭后继续运行(PTGID为-1时,表示该进程为守护进程),但是npm运行的前端并没有转为守护进程。
在这里插入图片描述
查询了很多网上的教程,有说把nohup加入到 ~/.bash_profile中,尝试后依然失败。我后来在无意间的一次操作中实现了长时间后端运行。

三、解决方法

其实方法非常简单,就是通过npm运行项目后,ps -axj 查看到npm运行的PPID为824829,使用kill -9 824829 销毁npm进程的父进程即可。
在这里插入图片描述
运行命令后终端连接会断开,然后再次回车,终端会再次连接。此时再次使用 ps -axj命令查询进程信息(如下图)会发现npm运行的进程奇迹般转为了守护进程。关闭终端后,再使用浏览器访问前端项目也不会无法访问了,至此问题解决。
在这里插入图片描述

四、后记

出现这个问题的原因没有找到,解决这个问题的方法原理也没有弄清楚,完全就是瞎猫撞上死耗子,有Linux大佬知道这其中的原理,请私聊我,本菜鸟真诚求教。

2023-08-17 补充:
根据评论区大佬 网络老男孩了 的方法,cd到vue项目目录下,执行 “nohup npm run serve > /opt/log/vue.log 2>&1 &” 后台运行的命令,待启动完毕后,再执行 “exit” 命令。此时会发生我文章里说的kill npm 父进程一样的效果,终端连接会断开,然后再次回车,终端会再次连接。用 ps -axj命令查看vue项目进程发现也实现了长期运行。亲测有效,感谢大佬提供的简便方法。

<think>好的,我需要帮助用户在Ubuntu系统上部署和运行Spring Boot与Vue的全栈项目。首先,我得理清整个部署流程,确保前后端都能正确配置和运行。 用户提到的是前后端分离的项目,所以后端和前端应该是独立部署的。根据引用内容,后端使用Spring Boot,前端使用Vue,可能需要Nginx作为Web服务器。我需要分步骤指导用户安装必要的环境,配置项目,最后部署运行。 首先,后端需要Java和Maven。根据引用[1],在Ubuntu上安装openjdk-11-jdk和Maven是正确的。用户可能需要执行sudo apt install命令来安装这些依赖。然后,用户需要获取后端代码,可能通过Git克隆或者上传代码到服务器。接着,使用Maven打包后端应用,生成JAR文件,并用java -jar命令运行,如引用[2]提到的。 然后处理前端部分。Vue项目需要Node.jsnpm,所以需要指导用户安装这些。用户可能还需要安装Yarn。安装完成后,进入Vue项目目录,安装依赖,然后构建生产环境的静态文件。构建完成后,这些静态文件需要部署到Web服务器,比如Nginx。引用[3]提到使用nohup运行后端,但前端可能需要配置Nginx来服务静态文件并代理API请求到后端。 接下来是配置Nginx。用户需要安装Nginx,然后修改配置文件,设置root指向Vue的dist目录,并配置反向代理到后端的Spring Boot应用,比如代理/api到localhost:8080。这样前端可以通过Nginx访问后端API。 测试部分需要确保后端运行在指定端口,比如8080,Nginx运行在80端口。用户可能需要开放防火墙端口,或者检查安全组设置(如果是在云服务器如阿里云ECS上)。 最后,可能需要指导用户使用nohup或systemd来守护进程,确保应用在终端关闭后仍运行。引用[3]提到了使用nohup,所以可以建议用户使用nohup java -jar命令运行后端,并将日志输出到nohup.out。 需要验证每个步骤的命令是否正确,比如Java和Maven的安装命令,Nginx的配置语法是否正确,以及路径是否正确。同时,提醒用户注意可能遇到的常见问题,比如端口冲突、依赖缺失、文件权限问题等。 生成的相关问题应该围绕部署中的其他方面,比如性能优化、HTTPS配置、自动化部署等,这些是用户后续可能会关心的问题。</think>### 分步指南:Ubuntu部署Spring Boot与Vue全栈项目 #### 1. 安装基础依赖 **后端依赖**: ```bash sudo apt update sudo apt install -y openjdk-11-jdk maven git # Java环境与构建工具[^1] ``` **前端依赖**: ```bash curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash - # 添加Node.js源 sudo apt install -y nodejs sudo npm install -g yarn # 可选,若项目使用yarn[^2] ``` #### 2. 部署Spring Boot后端 1. **获取代码并构建**: ```bash git clone <后端仓库地址> cd spring-boot-project mvn clean package # 生成target/your-application.jar ``` 2. **运行后端**: ```bash nohup java -jar target/your-application.jar & # 后台运行并输出日志到nohup.out[^3] tail -f nohup.out # 实时查看日志 ``` - 默认端口为`8080`,可在`application.properties`中修改`server.port` #### 3. 部署Vue前端 1. **获取代码并构建**: ```bash git clone <前端仓库地址> cd vue-project npm install # 或使用yarn install npm run build # 生成dist/目录 ``` 2. **配置Nginx**: ```bash sudo apt install -y nginx sudo vim /etc/nginx/sites-available/your-domain.conf ``` 配置文件内容: ```nginx server { listen 80; server_name your-domain.com; # 替换为域名或IP # 静态文件服务 location / { root /path/to/vue-project/dist; try_files $uri $uri/ /index.html; } # 反向代理API请求 location /api { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` 启用配置并重启Nginx: ```bash sudo ln -s /etc/nginx/sites-available/your-domain.conf /etc/nginx/sites-enabled/ sudo nginx -t # 检查语法 sudo systemctl restart nginx ``` #### 4. 验证部署 - **后端验证**: ```bash curl http://localhost:8080/api/health ``` - **前端访问**: 浏览器访问`http://your-domain.com`,确保页面加载且API请求正常。 #### 5. 高级配置(可选) - **HTTPS**:使用Certbot申请免费SSL证书 ```bash sudo apt install certbot python3-certbot-nginx sudo certbot --nginx ``` - **进程守护**:使用systemd管理Spring Boot服务 创建`/etc/systemd/system/springboot.service`: ```ini [Unit] Description=Spring Boot App After=syslog.target [Service] ExecStart=/usr/bin/java -jar /path/to/your-application.jar User=ubuntu Restart=always [Install] WantedBy=multi-user.target ``` 启动服务: ```bash sudo systemctl daemon-reload sudo systemctl start springboot ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琪琪的饭团子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值