摘要:本文是筆者實(shí)踐總結(jié)的技巧,介紹搭建云主機(jī)的方法,主要基于部署系列服務(wù)。從個(gè)人開發(fā)者需求出發(fā),一步一步搭建自己的服務(wù)。虛擬內(nèi)存的大小,一般不要超過當(dāng)前內(nèi)存大小,筆者選購(gòu)的云主機(jī)是內(nèi)存,所以設(shè)置虛擬內(nèi)存。如果使用阿里云,在網(wǎng)頁后臺(tái)可以進(jìn)行配置。
0x00
本文是筆者實(shí)踐總結(jié)的技巧,介紹搭建云主機(jī)的方法,主要基于Docker部署系列服務(wù)。從個(gè)人開發(fā)者需求出發(fā),一步一步搭建自己的服務(wù)。
本文適合兜里沒很多?又希望擁有屬于自己的云服務(wù)的開發(fā)者,完成下面的操作,需要基本的Linux使用技能。
由于使用#做注釋,所有命令行使用$做前綴,表示當(dāng)前是一行命令
選購(gòu)云主機(jī) 云主機(jī)品牌選擇云主機(jī)國(guó)內(nèi)很多平臺(tái)可以購(gòu)買,騰訊的,阿里的,網(wǎng)易的等等,可根據(jù)自己的喜好進(jìn)行選擇,筆者選擇的是阿里云。
云主機(jī)配置選擇選擇好云主機(jī)品牌以后,需要選購(gòu)云主機(jī)了,云主機(jī)配置越高價(jià)格越貴,筆者選擇的是最低配的配置單核CPU,1GB內(nèi)存,1M帶寬,活動(dòng)價(jià)購(gòu)買的330RMB一年,經(jīng)測(cè),可以穩(wěn)定運(yùn)行后面提到的所有服務(wù)。人民幣玩家可以選購(gòu)更高的配置。
筆者購(gòu)買的服務(wù)器是活動(dòng)套餐,包含了1M帶寬,所以不另外選擇。如果是直接購(gòu)買,建議個(gè)人開發(fā)者可以帶寬選擇按量計(jì)費(fèi),去年一年下來用不了幾塊錢,而1M帶寬一年200+。
這個(gè)可根據(jù)自己的使用習(xí)慣進(jìn)行選擇,下面的操作都是基于Ubuntu 16.04 x64進(jìn)行操作,如果大家跟著輸入命令,建議使用選擇一樣的系統(tǒng)。
我個(gè)人更喜歡Ubuntu,因?yàn)楦綆У拿钚泄ぞ呤褂闷饋肀容^便捷,默認(rèn)情況下的配置就很好,只需要很少的配置改動(dòng),用戶體驗(yàn)比較好。
本地主機(jī)操作:
# 檢查公鑰是否存在 $ cat ~/.ssh/id_rsa.pub
看到一長(zhǎng)串字符串輸出,這個(gè)是你本地電腦的公鑰,將它復(fù)制到粘貼板。如果看不到任何輸出,則輸入下面的命令生成,注意備份這兩個(gè)文件:~/.ssh/id_rsa ~/.ssh/id_rsa.pub 如果你還不知道這兩個(gè)文件是什么,趕緊百度學(xué)習(xí)。知道他們是什么很很很很很很很很很很很重要。
# 一直按回車就可以了 $ ssh-keygen
連接到云主機(jī),配置信任公鑰
# xx.xx.xx.xx表示你的云主機(jī)公網(wǎng)IP,此時(shí)還需要輸入密碼才能連接 $ ssh [email protected] $ mkdir ~/.ssh # 把粘貼板里面的公鑰粘貼到~/.ssh/authorized_keys文件內(nèi)【文件不存在vi會(huì)自動(dòng)創(chuàng)建】 $ vi ~/.ssh/authorized_keys # 設(shè)置正確的權(quán)限,只有權(quán)限正確,才會(huì)生效 $ chmod 700 .ssh $ chmod 600 .ssh/authorized_keys
驗(yàn)證配置
# 退出剛剛的連接回到本地電腦 $ exit # 重新連接,如果此時(shí)不需要輸入密碼就能連接成功,配置正確進(jìn)入下一步,如果配置失敗請(qǐng)回到上一步仔細(xì)檢查操作是否正確 $ ssh [email protected]
請(qǐng)務(wù)必確保已經(jīng)驗(yàn)證配置的正確性再進(jìn)行下面的步驟,否則可能導(dǎo)致關(guān)閉ssh密碼登錄后你無法連接到云主機(jī)
關(guān)閉ssh密碼登錄# 編輯sshd配置文件 # 找到其中的兩個(gè)參數(shù)配置: # PasswordAuthentication # ChallengeResponseAuthentication # 將這兩個(gè)參數(shù)值修改為no: # PasswordAuthentication no # ChallengeResponseAuthentication no $ vi /etc/ssh/sshd_config # 重啟服務(wù) $ service sshd restart
至此,你再也不用擔(dān)心ssh會(huì)被黑客破解了,只有擁有你本地電腦密匙對(duì)的人才可以遠(yuǎn)程登錄到云主機(jī)。
安裝oh-my-zsh提高命令行效率(可選)ho-my-zsh是一個(gè)很火爆的開源工具在github上star數(shù)5W+,可以顯著提高命令行操作的效率,非常推薦大家安裝使用,詳細(xì)了解請(qǐng)?jiān)L問項(xiàng)目地址:
https://github.com/robbyrusse...
$ apt-get install zsh $ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"配置虛擬內(nèi)存
由于我選購(gòu)的主機(jī)內(nèi)存比較低,降低系統(tǒng)完全卡死的概率,需要掛載一個(gè)虛擬內(nèi)存。
虛擬內(nèi)存的大小,一般不要超過當(dāng)前內(nèi)存大小,筆者選購(gòu)的云主機(jī)是1GB內(nèi)存,所以設(shè)置1GB虛擬內(nèi)存。
# 創(chuàng)建虛擬內(nèi)存文件 $ dd if=/dev/zero of=/mnt/swap bs=1024 count=1048576 # 格式化虛擬內(nèi)存文件 $ mkswap /mnt/swap # 掛載虛擬內(nèi)存 $ swapon /mnt/swap # 檢查虛擬內(nèi)存掛載成功 $ free -h total used free shared buff/cache available Mem: 992M 476M 77M 3.9M 438M 345M Swap: 1.0G 0B 1.0G # 配置重啟電腦后自動(dòng)掛載虛擬內(nèi)存 # 添加以下內(nèi)容到/ect/fstab文件 # /mnt/swap swap swap defaults 0 0 $ vi /etc/fstab防火墻疑問
為什么不開啟防火墻,因?yàn)镈ocker跟防火墻有沖突,某些情況下會(huì)導(dǎo)致防火墻失效,為了配置方便,系統(tǒng)內(nèi)不開啟防火墻,直接使用云主機(jī)提供商提供的防火墻進(jìn)行端口防護(hù)。如果使用阿里云,在網(wǎng)頁后臺(tái)可以進(jìn)行配置。
域名配置(可選) 域名選購(gòu)域名購(gòu)買的渠道很多,com域名比較貴,cn域名性價(jià)比最高,筆者買的是cn域名,10年,費(fèi)用300+RMB
DNS配置DNS配置一個(gè)A記錄*指向主機(jī)公網(wǎng)IP即可。
DNS服務(wù)商,可以選用域名購(gòu)買放的配置后臺(tái),也可以轉(zhuǎn)到別的平臺(tái)上配置,騰訊家的DNSPod配置簡(jiǎn)單易用,所以筆者一直在用這個(gè)。
DNS配置好了以后,后面ssh連接就可以直接使用域名連接了,不需要記憶晦澀的IP地址了。
本來Docker官方安裝步驟比較多,而且服務(wù)器在國(guó)外,速度非常慢。還好,阿里工程師做了國(guó)內(nèi)景象,并且寫好了一鍵安裝腳本,一行命令搞定。
另外,國(guó)內(nèi)的DaoCloud也提供類似的鏡像服務(wù)https://download.daocloud.io/...,也可加速安裝過程。
$ curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -安裝Docker Compose
這里用的是DaoCloud的鏡像加速下載,當(dāng)然也可到源項(xiàng)目地址里面下載,只是速度略慢:
https://github.com/docker/com...
$ curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose $ chmod +x /usr/local/bin/docker-composedocker pull 加速
在國(guó)內(nèi)從Docker官方服務(wù)器拉取鏡像,速度非常慢,還好國(guó)內(nèi)很多公司做了免費(fèi)的加速鏡像,阿里云、DaoCloud都有提供這樣的免費(fèi)服務(wù)。
針對(duì) Ubuntu 15.04 16.04 的用戶,下面的配置里面,最關(guān)鍵的是加速地址https://xxxx.mirror.aliyuncs.com,使用阿里云的話,需要登錄阿里云后臺(tái)以后,訪問以下地址即可獲取到:
https://cr.console.aliyun.com...
DaoCloud在這里獲?。?br>https://www.daocloud.io/mirro...
$ mkdir -p /etc/systemd/system/docker.service.d $ tee /etc/systemd/system/docker.service.d/mirror.conf <<-"EOF" [Service] ExecStart= ExecStart=/usr/bin/dockerd --registry-mirror=https://xxxx.mirror.aliyuncs.com EOF $ systemctl daemon-reload $ systemctl restart docker部署HTTP網(wǎng)關(guān)(使用caddy,支持https) 背景
說起HTTP網(wǎng)關(guān),大家聽到過最多的,我想應(yīng)該是 nginx apache,這兩個(gè)軟件確實(shí)是穩(wěn)定、功能強(qiáng)大,并且大家都比較熟悉,但是,唯一的問題是,他們的配置實(shí)在是太太太太太太太太太繁瑣了,配置文件可以寫得很長(zhǎng),老鳥也需要備份一些常用配置片段,菜鳥們更是經(jīng)常被一堆配置嚇到,亦或是因?yàn)橐稽c(diǎn)點(diǎn)配置細(xì)節(jié)沒注意到耽誤了一個(gè)下午。
當(dāng)我們的站點(diǎn)需要支持HTTPS時(shí),還需要額外弄到證書,購(gòu)買或者申請(qǐng)免費(fèi)的Let"s Encrypt,并且我們還得關(guān)注證書是否已經(jīng)過期,我偶爾也會(huì)看到一些站點(diǎn),因?yàn)樽C書過期,瀏覽器提示訪問不安全。
解決方案為了解決上面提到的問題,我們請(qǐng)出今天的主角Caddy Server
主要特點(diǎn)默認(rèn)開啟HTTPS,自動(dòng)管理HTTPS證書(利用Let"s Encrypt)
使用go語言開發(fā),單二進(jìn)制文件運(yùn)行,無任何依賴
非常適合初學(xué)者(老鳥用著也省心)
性能穩(wěn)定,可用于線上產(chǎn)品
默認(rèn)開啟 HTTP 2.0 支持
配置起來瘋狂地簡(jiǎn)單
HTTPS安全檢測(cè)使用https://myssl.com進(jìn)行評(píng)估:
第一個(gè)是筆者的網(wǎng)站,直接使用Caddy的默認(rèn)配置,后面三個(gè)都是站點(diǎn)大家都認(rèn)識(shí),大家可以感受一下測(cè)試結(jié)果。使用Caddy,最少只需要一行配置,就可以擁有A級(jí)的HTTPS安全防護(hù)!
Caddyfile是caddy的配置文件,詳細(xì)文檔查看這里https://caddyserver.com/docs/...
以下是一個(gè)Caddyfile示例,它的效果是,啟動(dòng)www.ineva.cn ineva.cn兩個(gè)靜態(tài)文件虛擬主機(jī),訪問這兩個(gè)站點(diǎn)時(shí),如果訪問的是http協(xié)議,會(huì)自動(dòng)跳轉(zhuǎn)到https,開啟HTTP2.0支持,網(wǎng)站資源文件在/www目錄下。
www.ineva.cn, ineva.cn { root /www }
開啟gzip壓縮支持
www.ineva.cn, ineva.cn { gzip root /www }
反向代理
api.ineva.cn { proxy / localhost:8080 }
反向代理,并且讓后端服務(wù)感知到客戶端
api.ineva.cn { proxy / localhost:8080 { transparent } }
反向代理,并支持websocket
api.ineva.cn { proxy / localhost:8080 { websocket } }快速部署
文件清單
docker-compose.yml
官方的caddy docker鏡像,只有基本功能,找了個(gè)alpine版的zzrot/alpine-caddy,所有功能都編譯到里面了,并且包很小,下面是配置內(nèi)容
version: "2" services: web: image: zzrot/alpine-caddy:v0.9.5 restart: always network_mode: host
Caddyfile
ineva.cn需要改成你的域名
www.ineva.cn, ineva.cn { gzip proxy / localhost:8080 { transparent } }
把上面兩個(gè)文件上傳到云主機(jī)/docker/caddy目錄
$ cd /docker/caddy # 啟動(dòng)服務(wù) $ docker-compose up
瀏覽器訪問你的域名,看看瀏覽器地址,恭喜你,已經(jīng)部署了自己的https服務(wù),但是由于你服務(wù)器8080端口上沒有開啟服務(wù),所以頁面應(yīng)該是看到500。
部署git服務(wù)(使用gogs) 背景介紹git服務(wù)有很多選擇,除了大名鼎鼎的 https://github.com
國(guó)內(nèi)還有:
https://git.oschina.net
https://coding.net
上面的服務(wù)都是注冊(cè)賬號(hào)就可以使用的。但是說起自部署的git服務(wù),大家可能第一個(gè)想到的是
https://gitlab.com/
gitlab大法是好,并且也可以很容易用docker一鍵部署,但是它2G內(nèi)存起步的配置要求,單核1G內(nèi)存的低配主機(jī)表示吃不消。
gogs對(duì)配置要求極地,并且功能基本齊全,是非常好的選擇
開源項(xiàng)目地址:https://github.com/gogits/gogs
基于go開發(fā),單二進(jìn)制文件即可運(yùn)行
完全仿照gihub設(shè)計(jì),大部分功能都已經(jīng)完成了
對(duì)配置要求極地,下面是閑置時(shí)獲取的數(shù)據(jù)指標(biāo),內(nèi)存占用不到100M
NAME CID CPU MEM NET RX/TX IO R/W PIDS ? gogs_gogs_1 655cea130d96 0% 91M / 1.95G 12M / 74M 5.98G / 28M 17安裝部署
/docker/gogs/docker-compose.yml
version: "2" services: gogs: image: gogs/gogs:0.11.4 restart: always ports: - "9002:9002" - "9003:9003" volumes: - ${PWD}/data:/data
/docker/gogs/data/gogs/conf/app.ini
配置文件需要自己修改一些關(guān)鍵值
APP_NAME:站點(diǎn)標(biāo)題
DOMAIN:域名
ROOT_URL:外部URL
SECRET_KEY:安全密碼
APP_NAME = Gogs RUN_USER = git RUN_MODE = prod [database] DB_TYPE = sqlite3 HOST = 127.0.0.1:3306 NAME = gogs USER = root PASSWD = SSL_MODE = disable PATH = data/gogs.db [repository] ROOT = /data/git/gogs-repositories [server] DOMAIN = git.xxxxx.cn HTTP_PORT = 9002 ROOT_URL = https://git.xxxxx.cn/ DISABLE_SSH = false SSH_PORT = 9003 OFFLINE_MODE = false START_SSH_SERVER = true [mailer] ENABLED = false [service] REGISTER_EMAIL_CONFIRM = false ENABLE_NOTIFY_MAIL = false DISABLE_REGISTRATION = true ENABLE_CAPTCHA = true REQUIRE_SIGNIN_VIEW = true [picture] DISABLE_GRAVATAR = false [session] PROVIDER = file [log] MODE = file LEVEL = Info ROOT_PATH = /app/gogs/log [security] INSTALL_LOCK = true SECRET_KEY = xxxxxx [other] SHOW_FOOTER_BRANDING = false SHOW_FOOTER_VERSION = false
啟動(dòng)服務(wù)
$ cd /docker/gogs $ docker-compose up
瀏覽器訪問 http://git.xxxx.cn 搞定
懶人包 快捷系統(tǒng)備份還原文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26988.html
摘要:月日數(shù)人云在上海舉辦金融沙龍,邀請(qǐng)上交所和近二十家來自銀行保險(xiǎn)證券的技術(shù)專家一同探討容器技術(shù)在金融業(yè)中的最佳實(shí)踐。數(shù)人云肖德時(shí)在會(huì)上將傳統(tǒng)金融行業(yè)通過容器可以解決的四大問題做了逐一解讀。如何動(dòng)態(tài)的分配,就是剛才上交所介紹的一些治理的方法。 7月29日數(shù)人云在上海舉辦金融沙龍,邀請(qǐng)上交所和近二十家來自銀行、保險(xiǎn)、證券的IT技術(shù)專家一同探討容器技術(shù)在金融業(yè)中的最佳實(shí)踐。數(shù)人云CTO肖德時(shí)在...
摘要:基于上述,給大家?guī)硪话孢m合新手的建站指南,供大家參考建站指南建站三大必備條件域名主機(jī)空間虛機(jī)主機(jī)服務(wù)器建站程序無論你是自己建站還是外包第三方建站,都需要具備這三個(gè)要素才能建網(wǎng)站。目前阿里云的市場(chǎng)份額已經(jīng)在國(guó)內(nèi)占據(jù)過半。概述 對(duì)于一個(gè)建站新手來講,最重要的莫過于2件事 時(shí)間效率 性價(jià)比 換句話講,對(duì)于非專業(yè)選手,在整個(gè)建站過程,如何省時(shí)省力,用相對(duì)簡(jiǎn)單的方式,花更少的錢建好網(wǎng)站是關(guān)鍵。 ...
摘要:基于上述,給大家?guī)硪话孢m合新手的建站指南,供大家參考建站指南建站三大必備條件域名主機(jī)空間虛機(jī)主機(jī)服務(wù)器建站程序無論你是自己建站還是外包第三方建站,都需要具備這三個(gè)要素才能建網(wǎng)站。目前阿里云的市場(chǎng)份額已經(jīng)在國(guó)內(nèi)占據(jù)過半。1.概述 對(duì)于一個(gè)建站新手來講,最重要的莫過于2件事 1.時(shí)間效率2.性價(jià)比換句話講,對(duì)于非專業(yè)選手,在整個(gè)建站過程,如何省時(shí)省力,用相對(duì)簡(jiǎn)單的方式,花更少的錢建好網(wǎng)站是關(guān)鍵...
摘要:目前阿里云的市場(chǎng)份額已經(jīng)在國(guó)內(nèi)占據(jù)過半。備案通過后,必須在網(wǎng)站底部掛上備案號(hào),并且加上指向工信部網(wǎng)站的鏈接部分服務(wù)商或者地區(qū)要求備案必須郵寄資料過去主要有真實(shí)性核驗(yàn)單和網(wǎng)絡(luò)安全協(xié)議書這兩份原件。1.概述 對(duì)于一個(gè)建站新手來講,最重要的莫過于2件事 1.時(shí)間效率 2.性價(jià)比換句話講,對(duì)于非專業(yè)選手,在整個(gè)建站過程,如何省時(shí)省力,用相對(duì)簡(jiǎn)單的方式,花更少的錢建好網(wǎng)站是關(guān)鍵。 基于上述,給大家...
閱讀 2821·2023-04-25 22:51
閱讀 2067·2021-10-11 10:58
閱讀 3319·2019-08-30 10:49
閱讀 1884·2019-08-29 17:09
閱讀 3143·2019-08-29 10:55
閱讀 852·2019-08-26 10:34
閱讀 3499·2019-08-23 17:54
閱讀 990·2019-08-23 16:06