pm2 ubuntu multipass 轻量虚拟机
1、安装multipass 虚拟机,下载地址:
https://multipass.run/
2、安装后查看版本
multipass version
3、新建容器
multipass launch --name dg
//高级 指定参数
multipass launch -n dg -c 2 -m 4G -d 10G
自定义配置创建可以参考如下方式:
-n, –name: 名称
-c, –cpus: cpu 核心数, 默认: 1
-m, –mem: 内存大小, 默认: 1G
-d, –disk: 硬盘大小, 默认: 5G
4、下载最新的镜像
multipass exec dg -- lsb_release -d
5、查看虚机列表
multipass list
6、查看虚机详细信息
multipass info --all
7、进入虚拟机
multipass shell dg
8、重启、暂停虚机
# 暂停
$ multipass stop dg
# 启动
$ multipass start dg
9、删除/释放虚拟机
# 删除
$ multipass delete dg
# 释放
$ multipass purge dg
10、配置自动化
既要保持开发环境和线上环境一致,又要节省部署时间。我们可以使用 --cloud-init 对容器进行初始化配置:
$ multipass launch --name ubuntu --cloud-init config.yaml
config.yaml 是初始化配置文件,内容如下:
#cloud-config
runcmd:
- curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
- sudo apt-get install -y nodejs
- wget https://releases.leanapp.cn/leancloud/lean-cli/releases/download/v0.21.0/lean-cli-x64.deb
- sudo dpkg -i lean-cli-x64.deb
挂载宿主机目录
// 在window 主机上用管理员角色运行cmd
multipass set local.privileged-mounts=Yes
//指定目录www
multipass mount D:\multipassData next:ubuntu/www
// 卸载数据卷
multipass umount next
//文件传输
multipass transfer 主机文件 容器名: 容器目录
multipass transfer hello.txt next:/home/ubuntu/bash
没有权限会报如下错误
安装nodeJS、nvm、 pm2
1、安装nvm
在安装nvm之前先安装git
sudo apt-get install git
#拉取nvm项目
git clone https://gitee.com/Annlix/nvm-sh_nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`
#执行安装命令
./install.sh
#安装之后输入nvm还是提示没有这时候需要执行以下命令或者关闭终端重新开启
source ./nvm.sh
#获取node版本
nvm ls-remote
#安装node
nvm install v16.13.1
#安装pm2
sudo npm i -g pm2
or 安装最新发行版
nvm install --lts
开启服务
pm2 start app.js
pm2 list
pm2 dash
映射虚机服务到本机ip,使得局域网主机可以访问
管理员账号打开cmd
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=4202 connectaddress=172.18.207.164 connectport=1337
查看 本机映射关系
netsh interface portproxy show all
multipass (固定ip方法)
查看pm2 启动的node 服务端口号
方式1
lsof -i -P | grep node
方式2
ss -tnlp | grep node
根据端口号查看pid
lsof -i :1337
更多pm2操作,查看https://blog.csdn.net/uikoo9/article/details/79018750
ssh 配置
为了使终端操作更加便利,我们配置ssh 秘钥登录虚拟机,配置如下
1、创建公钥
使用xshell 创建新的连接
生成秘钥,保存在虚机中,生成密钥时不设置访问密码
公钥未放置在服务器上报错如下
2、编辑虚机文件
vim操作文档 https://www.51sjk.com/b150b210453/
vim ~/.ssh/authorized_keys
粘贴公钥
// 使用管理员账户编辑, sudo -i
vi /etc/ssh/sshd_config
添加如下配置
#RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
#PermitRootLogin yes
#PasswordAuthentication no #此行会关闭密码登录功能,请确认密钥登陆功能设置好后再添加,后来部署发现,在ssh 链接时加#号注释掉的这三个配置项还会报错,所以需要注释掉。
编辑配置文件
3、登录成功
拓展:https://blog.csdn.net/xinyuezitang/article/details/123936253
pm2 deploy ecosystem.config.js
使用pm2构建next.js 项目。
需要处理的是,
1、本地公钥放置服务器,效果:ssh可以直接访问服务器
2、服务器生成公私钥,公钥放置到远程仓库使得服务器可以直接拉取仓库代码
具体操作见文档https://blog.csdn.net/weixin_46246496/article/details/125990261
3、服务器安装 git ,nvm ,node,npm ,pm2
4、创建pm2快捷方式
//查找应用
whereis node
//创建快捷方式
sudo ln -s [path] /usr/bin/node
缺失的相关报错
服务器开启ssh 服务
首先更新源
sudo apt-get update
安装 ssh 服务
sudo apt-get install openssh-server
检测是否已启动
ps -e | grep ssh
看到有 ssh 字样,说明已启动,如果没有就手动启动
/etc/init.d/ssh start
配置 ssh-server,配置文件位于 /etc/ssh/sshd_config,默认端口为 22,为了安全,一般自定义为其他端口,然后重启
sudo /etc/init.d/ssh resart
在 windows 中,使用 putty 或者 SSH Secure Shell 等登录虚拟机
也可以在shell 中使用telnet ip:port 进行验证
备注 ,遇到的问题
1、项目目录未在服务器创建,首次运行,需要克隆项目到相应目录, 设置目录权限 777,
sudo chmod -R 777 某一目录 //此例为wangxia
2、服务器端使用ssh 地址正常拉下代码则公钥配置生效
3、需要设置的pm2 deploy文件,由于是虚拟机服务器,所以ip暴露也是可以的。key对应的就是你的本机私钥文件。
4、期间设置过服务器的git global name/email,不知道是否是部署项目所必须的
5、开启了windows linux子系统(必须?部署的时候到是提示没有wsl 的报错了。。。)
附上部署成功截图
6、构建部署需在gitbash 里面操作,(linux文件目录?)