背景
准备工作
连接阿里云
- 启动防火墙
systemctl start firewalld
- 开启外部网络访问5000端口(这个端口注意是我的node项目启动的端口哦)
firewall-cmd --permanent --add-port=5000/tcp
- 刷新防火墙
firewall-cmd --reload
- 重启防火墙
systemctl restart firewalld
- 注意要在阿里云添加安全组
vue-tool的部署
- 在/home目录创建新的文件夹vue-tool
- 利用WinSCP将本地的vue-tool项目除了node_moudel文件夹复制到阿里云服务器/home/vue-tool中
- 进入到
/home/vue-tool
npm install
初始化项目 - 配置项目为长久运行状态
- 安装forever
npm install forever -g
- 运行项目:
forever start app.js
如果此时报错,无法识别forever命令就用软连接(下面有讲)
- 安装forever
vue-first的部署
1.初始化项目
- 在/home目录创建新的文件夹vue-firstl
- 利用WinSCP将本地的vue-first项目除了node_moudel文件夹复制到阿里云服务器/home/vue-first中
- 进入到
/home/vue-tool
npm install
初始化项目
这时候遇到问题发现:
{ Error: EACCES: permission denied, mkdir ‘/developer/git-repo/shop-backend/node_modules/node-sass/vendor’
查资料发现 问题原因:权限不足;
解决办法:sudo npm install
继续尝试发现问题:
sudo npm command not found
解决方法:
输入which npm
可以得到/usr/local/bin/npm
,这个是普通用户的bin
目录 而sudo
执行的是/usr/bin
目录,这是root用户的目录 。通过软连接解决:
sudo ln -s /usr/local/bin/npm /usr/bin/npm
如果遇到相似的问题,只要将xxx
替换成可执行程序就可以了
sudo ln -s /usr/local/bin/xxx /usr/bin/xxx
2.运行项目
- 初始化项目成功以后:
npm run dev
出现错误:/usr/bin/env: node: No such file or directory
推测因为npm执行的时候默认是使用/usr/bin/node去执行的,但本地是没有/usr/bin/node的,所以需要创建一个软连接将自己的node的执行文件指到/usr/bin/node上,于是修改如下:
ln -s /home/node/node_v12.14.0/bin/node /usr/bin/node
再次执行npm run dev
成功,但出现问题:"g++: Command not found"
解决方法:
- 检查版本:
*yum search "gcc-c++*"
- 按版本安装:
yum install "gcc-c++.x86_64" -y
- 项目运行成功:但是发现外部无法访问
**解决办法:**进入项目文件/home/vue-first
vi package.json
修改package.json 文件
3.配置项目为长久运行状态
-
命令输入
which nohup
返回的地址一般是/usr/bin
-
编辑用户环境变量:
命令行输入:vi ~/.bash_profile
在它的最后一行,即
PATH=$PATH:$HOME/bin
的后面添加刚才查询的地址 -
加载环境变量:
source ~/.bash_profile
-
在项目目录中执行启动命令:
nohup npm run dev &
-
然后
exit
此时关掉终端,还能访问就是成功了。
最后附上参考的文章:
sudo npm command not found 问题解决
解决Linux "g++: Command not found"报错问题
让 vue项目在Linux后台持久运行 npm run dev