pm2 ubuntu multipass 轻量虚拟机

pm2 ubuntu multipass 轻量虚拟机

1、安装multipass 虚拟机,下载地址:

https://multipass.run/

image.png

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
image.png

6、查看虚机详细信息

multipass info --all
image.png

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

没有权限会报如下错误


image.png

安装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
image.png
#安装node

nvm install  v16.13.1
#安装pm2
sudo npm i -g pm2
or 安装最新发行版
nvm install --lts
image.png

image.png

开启服务

pm2 start app.js
pm2 list

pm2 dash
image.png

image.png

映射虚机服务到本机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
image.png

multipass (固定ip方法)

查看pm2 启动的node 服务端口号

方式1

lsof -i -P | grep node

方式2

ss -tnlp | grep node

根据端口号查看pid

lsof -i :1337
image.png

更多pm2操作,查看https://blog.csdn.net/uikoo9/article/details/79018750

ssh 配置

为了使终端操作更加便利,我们配置ssh 秘钥登录虚拟机,配置如下

1、创建公钥

使用xshell 创建新的连接


image.png

image.png
image.png

生成秘钥,保存在虚机中,生成密钥时不设置访问密码

image.png
公钥未放置在服务器上报错如下
image.png

2、编辑虚机文件
vim操作文档 https://www.51sjk.com/b150b210453/

  vim ~/.ssh/authorized_keys

粘贴公钥


image.png
// 使用管理员账户编辑, sudo -i

vi /etc/ssh/sshd_config

添加如下配置
#RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
#PermitRootLogin yes
#PasswordAuthentication no  #此行会关闭密码登录功能,请确认密钥登陆功能设置好后再添加,后来部署发现,在ssh 链接时加#号注释掉的这三个配置项还会报错,所以需要注释掉。

编辑配置文件


image.png

3、登录成功


image.png

拓展: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

缺失的相关报错


image.png
image.png

服务器开启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
image.png

2、服务器端使用ssh 地址正常拉下代码则公钥配置生效

3、需要设置的pm2 deploy文件,由于是虚拟机服务器,所以ip暴露也是可以的。key对应的就是你的本机私钥文件。


image.png

4、期间设置过服务器的git global name/email,不知道是否是部署项目所必须的
5、开启了windows linux子系统(必须?部署的时候到是提示没有wsl 的报错了。。。)
附上部署成功截图


image.png

6、构建部署需在gitbash 里面操作,(linux文件目录?)

你可能感兴趣的:(pm2 ubuntu multipass 轻量虚拟机)