国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

單機(jī) Go 服務(wù)部署參考

Stardustsky / 539人閱讀

摘要:如果是單服務(wù),在更新的過程中勢必會出現(xiàn)服務(wù)不可用的狀態(tài)。負(fù)載均衡配置守護(hù)進(jìn)程使用守護(hù)進(jìn)程軟件來管理服務(wù),包括啟動暫停重啟等操作部署腳本部署腳本也很簡單,總的思路就是循環(huán)關(guān)掉其中一個服務(wù),更新,然后再重新開啟。

筆者很想有 Go 的實戰(zhàn)項目經(jīng)驗,無奈目前公司暫未給出實戰(zhàn)機(jī)會,所以只得在自己的博客項目上折騰一番。之前博客是用 PHP 的 Laravel 寫的,前段時間將其后端全部用 Go 重寫了一遍,然后在部署上栽了坑。

如果是單服務(wù),在更新的過程中勢必會出現(xiàn)服務(wù)不可用的狀態(tài)。不像 PHP 這種無需編譯的語言,直接將代碼文件覆蓋即可。

只有一臺服務(wù)器,那么就只能起兩個或以上的服務(wù),用 Nginx 來實現(xiàn)簡單的負(fù)載均衡。

Nginx 負(fù)載均衡配置
upstream blog {
    server 127.0.0.1:8881;
    server 127.0.0.1:8882;
}
Supervisor 守護(hù)進(jìn)程

使用 supervisor 守護(hù)進(jìn)程軟件來管理服務(wù),包括啟動暫停重啟等操作

[program:blogapi1]
directory=/var/www/api.xfly.one/s1
command=/var/www/api.xfly.one/s1/production-blog
autostart=true
autorestart=true
startsecs=5
user=root
redirect_stderr=true
stdout_logfile=/var/log/supervisord/blogapi1.log

[program:blogapi2]
directory=/var/www/api.xfly.one/s2
command=/var/www/api.xfly.one/s2/production-blog
autostart=true
autorestart=true
startsecs=5
user=root
redirect_stderr=true
stdout_logfile=/var/log/supervisord/blogapi2.log
部署腳本

部署腳本也很簡單,總的思路就是循環(huán)關(guān)掉其中一個服務(wù),更新,然后再重新開啟。

#!/bin/bash

make

SERVER_IP="xfly@127.0.0.1"
SERVER_DIR="/var/www/api.xfly.one"

for i in 1 2
do
    ssh $SERVER_IP "supervisorctl stop blogapi$i"
    scp production-blog $SERVER_IP:$SERVER_DIR/s$i
    ssh $SERVER_IP "supervisorctl start blogapi$i"
done

echo "deploy completed..."

對應(yīng)的 Makefile 代碼如下:

all:
    production
local:
    gotool
    go build -v .
production:
    gotool
    GOOS=linux GOARCH=amd64 go build -o production-blog -v .
clean:
    rm -f blog
    rm -f production-blog
    find . -name "[._]*.s[a-w][a-z]" | xargs -i rm -f {}
gotool:
    gofmt -w .
    go tool vet . 2>&1 | grep -v vendor;true
help:
    @echo "make - compile the source code"
    @echo "make clean - remove binary file and vim swp files"
    @echo "make gotool - run go tool "fmt" and "vet""

.PHONY: clean gotool help
可能出現(xiàn)的問題

一般安裝 supervisor 直接使用 pip install supervisor 或者使用 easy_install supervisor 即可。

但是,由于 supervisor 目前使用的 3.3.4 及以下版本還不兼容 python3,所以如果服務(wù)器使用的是 python3,那么得先裝個 python2.7 或更低版本的,然后用 python2.7 安裝。

此時如果服務(wù)器存在多個版本的 python,可以使用命令 python -m pip install supervisor 來指定 pip 使用的 python 版本。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/40191.html

相關(guān)文章

  • 【Filecoin源碼倉庫全解析】第六章:如何單機(jī)部署多節(jié)點集群及礦池設(shè)計思路》

    摘要:我們將在本章介紹如何在一臺機(jī)器上構(gòu)建多節(jié)點的方案和未來礦池產(chǎn)品設(shè)計的一些思路。本文將介紹一種直接在單機(jī)上部署和管理多節(jié)點的方案。最初起源于比特幣。 歡迎大家來到第六章,經(jīng)過前章《【Filecoin源碼倉庫全解析】第五章:檢索市場及檢索礦工》的介紹,無論從定位職能,還是從設(shè)計原理,還是從工程操作角度,我們應(yīng)該對目前的Filecoin檢索市場有了更加深入的了解。 我們將在本章介紹如何在一臺...

    BDEEFE 評論0 收藏0
  • Uber分布式追蹤系統(tǒng)Jaeger使用介紹和案例【PHP Hprose Go

    摘要:簡單理解一個完整的調(diào)用鏈包含無限極分類追蹤對象,一個代表了一個服務(wù)或者流程在系統(tǒng)中的執(zhí)行過程,如,,等執(zhí)行過程。無限極分類服務(wù)與服務(wù)之間使用無限極分類的方式,通過頭部或者請求地址傳輸?shù)阶畹蛯?,從而把整個調(diào)用鏈串起來。 showImg(https://segmentfault.com/img/remote/1460000011636962?w=2239&h=1202); 原文:Uber分...

    April 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<