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