GoFrame 項(xiàng)目部署-獨(dú)立部署

2022-03-29 15:35 更新

使用?GoFrame?開(kāi)發(fā)的應(yīng)用程序可以獨(dú)立地部署到服務(wù)器上,設(shè)置為后臺(tái)守護(hù)進(jìn)程運(yùn)行即可。這種模式常用在簡(jiǎn)單的API服務(wù)項(xiàng)目中。

服務(wù)器我們推薦使用?*nix?服務(wù)器系列(包括:?Linux?, ?MacOS?, ?*BSD?),以下使用?Ubuntu?系統(tǒng)為例,介紹如何部署使用?GoFrame?框架開(kāi)發(fā)的項(xiàng)目。

1. nohup

我們可以使用簡(jiǎn)單的?nohup?命令來(lái)運(yùn)行應(yīng)用程序,使其作為后臺(tái)守護(hù)進(jìn)程運(yùn)行,即使遠(yuǎn)程連接的?SSH?斷開(kāi)也不會(huì)影響程序的執(zhí)行。在流行的?Linux?發(fā)行版中往往都默認(rèn)安裝好了?nohup?命令工具。 命令如下:

nohup ./gf-app &

2. tmux

?tmux?是一款?Linux?下的終端復(fù)用工具,可以開(kāi)啟不同的終端窗口來(lái)將應(yīng)用程序作為后臺(tái)守護(hù)進(jìn)程執(zhí)行,即使遠(yuǎn)程連接的?SSH?斷開(kāi)也不會(huì)影響程序的執(zhí)行。 在?ubuntu?系統(tǒng)下直接使用?sudo apt-get install tmux?安裝即可。使用以下步驟將應(yīng)用程序后臺(tái)運(yùn)行。

  1. ?tmux new -s gf-app?;
  2. 在新終端窗口中執(zhí)行?./gf-app?即可;
  3. 使用?ctrl + B & D?快捷鍵可以退出當(dāng)前終端窗口;
  4. 使用?tmux attach -t gf-app?可進(jìn)入到之前的終端窗口;

3. supervisor

?supervisor?是用?Python?開(kāi)發(fā)的一套通用的進(jìn)程管理程序,能將一個(gè)普通的命令行進(jìn)程變?yōu)楹笈_(tái)?daemon?,并監(jiān)控進(jìn)程狀態(tài),異常退出時(shí)能自動(dòng)重啟。官方網(wǎng)站:http://supervisord.org/ 常見(jiàn)配置如下:

[program:gf-app]
user           = root
directory      = /var/www 
command        = /var/www/main
stdout_logfile = /var/log/gf-app-stdout.log
stderr_logfile = /var/log/gf-app-stderr.log
autostart      = true
autorestart    = true

使用步驟如下:

  1. 使用?sudo service supervisor start?啟動(dòng)?supervisor?服務(wù);
  2. 創(chuàng)建應(yīng)用配置文件?/etc/supervisor/conf.d/gf-app.conf?, 內(nèi)容如上;
  3. 使用?sudo supervisorctl?進(jìn)入?supervisor?管理終端;
  4. 使用?reload?重新讀取配置文件并重啟當(dāng)前?supoervisor?管理的所有進(jìn)程;
  5. 也可以使用?update?重新加載配置(默認(rèn)不重啟),隨后使用?start gf-app?啟動(dòng)指定的應(yīng)用程序;
  6. 隨后可以使用?status?指令查看當(dāng)前?supervisor?管理的進(jìn)程狀態(tài);

踩坑分享經(jīng)驗(yàn):

  • ?conf?配置文件變更后需要在?supervisorctl?中執(zhí)行?reload?才能更新使用到最新的配置。
  • ?directory?配置一般是不能缺少的,指定當(dāng)前的工作目錄路徑,且必須配置在?command?之前。
  • ?command?命令需要使用絕對(duì)路徑,否則會(huì)找不到執(zhí)行文件。

4. systemctl

?Systemd是 ?Linux系統(tǒng)工具,用來(lái)啟動(dòng)守護(hù)進(jìn)程,已成為大多數(shù)發(fā)行版的標(biāo)準(zhǔn)配置。

而 ?systemctl是 ?Systemd的主命令,用于管理系統(tǒng)。

其實(shí)我們大部分服務(wù)都有使用 ?systemctl管理,比如 ?MySQL?、?Nginx等等。

常見(jiàn)配置如下:

[Unit]
# 單元描述
Description=GF APP
# 在什么服務(wù)啟動(dòng)之后再執(zhí)行本程序
After=mysql.service

[Service]
Type=simple
# 程序執(zhí)行的目錄
WorkingDirectory=/data/server/gfapp/
# 啟動(dòng)的腳本命令
ExecStart=/data/server/gfapp/gfapp
# 重啟條件
Restart=always
# 幾秒后重啟
RestartSec=5

[Install]
WantedBy=multi-user.target

使用方法:

  1. 創(chuàng)建應(yīng)用配置文件 ?/etc/systemd/system/gfapp.service?, 內(nèi)容如上;
  2. 使用 ?systemctl daemon-reload? 重新加載服務(wù);
  3. 執(zhí)行 ?systemctl start gfapp? 來(lái)啟動(dòng)服務(wù);
  4. 最后執(zhí)行 ?systemctl status gfapp? 來(lái)查看服務(wù)運(yùn)行的狀態(tài)信息;
  5. 執(zhí)行 ?systemctl enable gfapp? 將服務(wù)添加到開(kāi)機(jī)啟動(dòng)項(xiàng);
  6. 注意:執(zhí)行的 ?gfapp是使用文件名作為服務(wù)名;
  7. 常見(jiàn)的命令有: ?start?(啟動(dòng)), ?stop?(停止), ?restart?(重啟), ?status?(查看運(yùn)行狀態(tài)), ?enable?(添加到開(kāi)機(jī)啟動(dòng)項(xiàng)), ?disable?(將程序從開(kāi)機(jī)啟動(dòng)中移除)

5. screen

?Screen是一款由 ?GNU計(jì)劃開(kāi)發(fā)的用于命令行終端切換的自由軟件。用戶可以通過(guò)該軟件同時(shí)連接多個(gè)本地或遠(yuǎn)程的命令行會(huì)話,并在其間自由切換。?GNU Screen?可以看作是窗口管理器的命令行界面版本。它提供了統(tǒng)一的管理多個(gè)會(huì)話的界面和相應(yīng)的功能。

安裝方式:

  • ?sudo apt install -y screen? (debian 系列)
  • ?sudo yum install -y screen?  (centos)

常用參數(shù):

  1. ?screen -S yourname? -> 新建一個(gè)叫 yourname 的 session
  2. ?screen -ls? -> 列出當(dāng)前所有的 session
  3. ?screen -r yourname? -> 回到 yourname 這個(gè) session
  4. ?screen -d yourname? -> 遠(yuǎn)程detach某個(gè) session
  5. ?screen -d -r yourname? -> 結(jié)束當(dāng)前 session 并回到 yourname 這個(gè) session

使用方法:

  1. 使用命令 ?screen -S gfapp? 創(chuàng)建一個(gè) ?session?;
  2. 在新終端窗口中執(zhí)行 ?./gf-app? 即可;
  3. 執(zhí)行 ?ctrl-a?, ?ctrl-d? 暫時(shí)離開(kāi)當(dāng)前session;
  4. 執(zhí)行 ?screen -r gfapp? 返回命令窗口; 若返回不成功, 可能是該窗口被占用(?Attached?)了, 可以嘗試使用 ?screen -Dr gfapp?;
  5. 執(zhí)行 ?screen -X -S gfapp quit? 結(jié)束程序;


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)