pm2 ubuntu multipass 輕量虛擬機(jī)

pm2 ubuntu multipass 輕量虛擬機(jī)

1、安裝multipass 虛擬機(jī),下載地址:

https://multipass.run/

image.png

2、安裝后查看版本

multipass version

3、新建容器

multipass launch --name dg

//高級(jí) 指定參數(shù)
multipass launch -n dg -c 2 -m 4G -d 10G

自定義配置創(chuàng)建可以參考如下方式:

-n, –name: 名稱
-c, –cpus: cpu 核心數(shù), 默認(rèn): 1
-m, –mem: 內(nèi)存大小, 默認(rèn): 1G
-d, –disk: 硬盤大小, 默認(rèn): 5G

4、下載最新的鏡像

multipass exec dg -- lsb_release -d

5、查看虛機(jī)列表

multipass list
image.png

6、查看虛機(jī)詳細(xì)信息

multipass info --all
image.png

7、進(jìn)入虛擬機(jī)

multipass shell dg

8、重啟、暫停虛機(jī)

# 暫停
$ multipass stop dg
# 啟動(dòng)
$ multipass start dg

9、刪除/釋放虛擬機(jī)

# 刪除
$ multipass delete dg
# 釋放
$ multipass purge dg

10、配置自動(dòng)化
既要保持開發(fā)環(huán)境和線上環(huán)境一致,又要節(jié)省部署時(shí)間。我們可以使用 --cloud-init 對(duì)容器進(jìn)行初始化配置:

$ multipass launch --name ubuntu --cloud-init config.yaml

config.yaml 是初始化配置文件,內(nèi)容如下:

#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

掛載宿主機(jī)目錄

// 在window 主機(jī)上用管理員角色運(yùn)行cmd
multipass set local.privileged-mounts=Yes

//指定目錄www
multipass mount D:\multipassData next:ubuntu/www

// 卸載數(shù)據(jù)卷
multipass umount next

//文件傳輸
multipass transfer 主機(jī)文件 容器名: 容器目錄
multipass transfer hello.txt next:/home/ubuntu/bash

沒(méi)有權(quán)限會(huì)報(bào)如下錯(cuò)誤


image.png

安裝nodeJS、nvm、 pm2
1、安裝nvm
在安裝nvm之前先安裝git

sudo apt-get install git
#拉取nvm項(xiàng)目
git clone https://gitee.com/Annlix/nvm-sh_nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`  
#執(zhí)行安裝命令
./install.sh
#安裝之后輸入nvm還是提示沒(méi)有這時(shí)候需要執(zhí)行以下命令或者關(guān)閉終端重新開啟
source ./nvm.sh

#獲取node版本
nvm ls-remote
image.png
#安裝node

nvm install  v16.13.1
#安裝pm2
sudo npm i -g pm2
or 安裝最新發(fā)行版
nvm install --lts
image.png

image.png

開啟服務(wù)

pm2 start app.js
pm2 list

pm2 dash
image.png

image.png

映射虛機(jī)服務(wù)到本機(jī)ip,使得局域網(wǎng)主機(jī)可以訪問(wèn)

管理員賬號(hào)打開cmd

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=4202 connectaddress=172.18.207.164 connectport=1337

查看 本機(jī)映射關(guān)系

netsh interface portproxy show all
image.png

multipass (固定ip方法)

查看pm2 啟動(dòng)的node 服務(wù)端口號(hào)

方式1

lsof -i -P | grep node

方式2

ss -tnlp | grep node

根據(jù)端口號(hào)查看pid

lsof -i :1337
image.png

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

ssh 配置

為了使終端操作更加便利,我們配置ssh 秘鑰登錄虛擬機(jī),配置如下

1、創(chuàng)建公鑰

使用xshell 創(chuàng)建新的連接


image.png

image.png
image.png

生成秘鑰,保存在虛機(jī)中,生成密鑰時(shí)不設(shè)置訪問(wèn)密碼

image.png
公鑰未放置在服務(wù)器上報(bào)錯(cuò)如下
image.png

2、編輯虛機(jī)文件
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  #此行會(huì)關(guān)閉密碼登錄功能,請(qǐng)確認(rèn)密鑰登陸功能設(shè)置好后再添加,后來(lái)部署發(fā)現(xiàn),在ssh 鏈接時(shí)加#號(hào)注釋掉的這三個(gè)配置項(xiàng)還會(huì)報(bào)錯(cuò),所以需要注釋掉。

編輯配置文件


image.png

3、登錄成功


image.png

拓展:https://blog.csdn.net/xinyuezitang/article/details/123936253

pm2 deploy ecosystem.config.js

使用pm2構(gòu)建next.js 項(xiàng)目。
需要處理的是,
1、本地公鑰放置服務(wù)器,效果:ssh可以直接訪問(wèn)服務(wù)器
2、服務(wù)器生成公私鑰,公鑰放置到遠(yuǎn)程倉(cāng)庫(kù)使得服務(wù)器可以直接拉取倉(cāng)庫(kù)代碼
具體操作見(jiàn)文檔https://blog.csdn.net/weixin_46246496/article/details/125990261
3、服務(wù)器安裝 git ,nvm ,node,npm ,pm2
4、創(chuàng)建pm2快捷方式

//查找應(yīng)用
whereis node
//創(chuàng)建快捷方式
sudo ln -s  [path] /usr/bin/node

缺失的相關(guān)報(bào)錯(cuò)


image.png
image.png

服務(wù)器開啟ssh 服務(wù)

首先更新源  
sudo apt-get update
安裝 ssh 服務(wù)
sudo apt-get install openssh-server
檢測(cè)是否已啟動(dòng)
ps -e | grep ssh
看到有 ssh 字樣,說(shuō)明已啟動(dòng),如果沒(méi)有就手動(dòng)啟動(dòng)

/etc/init.d/ssh start
配置 ssh-server,配置文件位于 /etc/ssh/sshd_config,默認(rèn)端口為 22,為了安全,一般自定義為其他端口,然后重啟
sudo /etc/init.d/ssh resart
在 windows 中,使用 putty 或者 SSH Secure Shell 等登錄虛擬機(jī)

也可以在shell 中使用telnet ip:port 進(jìn)行驗(yàn)證

備注 ,遇到的問(wèn)題

1、項(xiàng)目目錄未在服務(wù)器創(chuàng)建,首次運(yùn)行,需要克隆項(xiàng)目到相應(yīng)目錄, 設(shè)置目錄權(quán)限 777,

sudo chmod -R 777 某一目錄 //此例為wangxia
image.png

2、服務(wù)器端使用ssh 地址正常拉下代碼則公鑰配置生效

3、需要設(shè)置的pm2 deploy文件,由于是虛擬機(jī)服務(wù)器,所以ip暴露也是可以的。key對(duì)應(yīng)的就是你的本機(jī)私鑰文件。


image.png

4、期間設(shè)置過(guò)服務(wù)器的git global name/email,不知道是否是部署項(xiàng)目所必須的
5、開啟了windows linux子系統(tǒng)(必須?部署的時(shí)候到是提示沒(méi)有wsl 的報(bào)錯(cuò)了。。。)
附上部署成功截圖


image.png

6、構(gòu)建部署需在gitbash 里面操作,(linux文件目錄?)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容