solo開源個人博客搭建記錄

背景

18年換工作期間正好趕上國慶,然后有一段時間的斷檔期不知道該干嘛临扮,正好雙十一阿里活動诅迷,就和好基友一起買了個云主機,準備搭建一個個人博客玩玩蔓挖,于是乎,買云主機馆衔,買域名瘟判,申請免費ssl證書,搭建WordPress博客系統(tǒng)角溃,搭建好后就是優(yōu)化了拷获。
想網站名字,以及網站介紹减细,找網站圖標匆瓜,找網站背景圖片,最后弄好了以后就擱置了未蝌,感覺網站還是不漂亮陕壹。
上周問同事一個問題,然后他給我發(fā)了一個博客树埠,看完后突然覺得這個博客好好看糠馆,簡潔,卻很炫酷怎憋。
我的個人博客vlog.issue98.com

部署概述

安裝docker --> docker安裝mysql --> docker安裝solo --> docker安裝nginx --> docker安裝lute
如果不做https的話又碌,只在本地測試,那么其實又MySQL和solo就夠了绊袋,不需要nginx毕匀,nginx的作用只是將https請求代理至solo


image.png

架構大概就上面這樣,訪問流量通過公網到系統(tǒng)網絡癌别,再到docker網橋皂岔,然后訪問nginx 443端口,nginx將流量轉到本地的80端口展姐,solo監(jiān)聽在80端口躁垛,然后solo通過JDBC協(xié)議訪問MySQL數據庫剖毯,nginx,solo教馆,MySQL都是用的主機網絡逊谋,所以在主機上都會監(jiān)聽對應端口。

安裝docker

docker分為企業(yè)版(docker-ee)和社區(qū)版(docker-ce)土铺,阿里的Centos鏡像源默認是docker-1.13胶滋,我們使用的是docker社區(qū)版,docker-ce-18.06是18年6月發(fā)布的悲敷,目前大多數企業(yè)都使用的這個版本究恤,或者是docker-ce-18.09.

  • 添加docker鏡像源
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 查看所有docker-ce版本
yum list all --showduplicates docker-ce
  • 安裝docker-ce-18.06
yum install docker-ce-18.06.1.ce-3.el7
  • 啟動docker并設置為開機自啟動
systemctl start docker
systemctl enable docker
  • 準備鏡像
docker pull b3log/solo
docker pull mysql:5.6
docker pull nginx
docker images   #查看

安裝MySQL

# 安裝mysql:5.6,直接docker run 他會自動去官方鏡想下載
# MYSQL_ROOT_PASSWORD=你的數據庫密碼
docker run --name mysql -p 8306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

-p 8306:3306:8306是宿主機監(jiān)聽的端口,3306是MySQL容器監(jiān)聽的端口后德,因為我機器上有WordPress部宿,所以80``3306是被占用的,所以換了一個探遵,如果你本機3306端口沒有被占用窟赏,就都寫成3306就好

  • 創(chuàng)建數據庫
# docker安裝的mysql默認允許遠程連接妓柜,可以使用xshell等軟件連接數據庫
# 進入容器mysql
docker exec -it mysql bash

# 進入數據庫 p后面跟你的密碼
mysql -uroot -p123456

# 創(chuàng)建數據庫(數據庫名:solo;字符集utf8mb4;排序規(guī)則utf8mb4_general_ci)
create database solo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# 出現Query OK, 1 row affected (0.00 sec)表示成功
#退出數據庫
exit
#退出容器
exit

docker安裝solo

  • 如果你本機的80端口被占用了箱季,可以用下面命令啟動solo容器
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:8306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"  \
b3log/solo --listen_port=8088 --server_scheme=http --server_host=192.168.16.4 --server_port=8088

參數說明

--env JDBC_PASSWORD="123456" 將 123456 換成你的密碼
--listen_port=8088 容器監(jiān)聽的端口
--server_scheme=http 請求方式,暫時使用 http棍掐,后面我們會換成 https
--server_host=192.168.16.4 你云主機的IP藏雏,如果你有域名可以寫域名
--server_port=8088 云主機監(jiān)聽的端口

注意:listen_port的端口要和server_port端口一致,不然進入網頁可能會出現 Latke 配置錯誤
命令成功執(zhí)行沒有報錯的話作煌,通過docker ps查看執(zhí)行的容器列表中是否存在 solo掘殴,存在這表示啟動成功,直接訪問你的公網IP加:8088 即可訪問你的博客粟誓,http://180.76.178.229:8088


  • 如果要使用https奏寨,就需要修改一下solo容器的啟動參數了
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:8306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"  \
solo \
--listen_port=8080 \
--server_scheme=https \
--server_host=vlog.issue98.com \
--server_port=

--server_scheme=https使用https協(xié)議,因為使用了https協(xié)議鹰服,所以就要配置nginx代理

docker安裝nginx

# 切換到服務器根目錄
cd /
# 創(chuàng)建主目錄
mkdir dockerData
# 創(chuàng)建文件
mkdir dockerData/nginx dockerData/nginx/conf dockerData/nginx/logs dockerData/nginx/www dockerData/nginx/ssl

dockerData/nginx 用于存放 docker 下 nginx 自定義文件
dockerData/nginx/conf存放 nginx 配置文件
dockerData/nginx/log 存放 nginx 日志文件
dockerData/nginx/www 存放 nginx 訪問的資源文件
dockerData/nginx/ssl 存放 ssl 證書

  • 啟動 nginx
    docker run --name nginx -p 8001:80 -d --rm nginx
    由于solo使用了宿主機的80端口病瞳,所以這里使用宿主機的8001端口
  • 導出配置文件
docker cp nginx:/etc/nginx/nginx.conf /dockerData/nginx/conf/nginx.conf 
#導出配置文件 nginx.conf
docker cp nginx:/etc/nginx/conf.d /dockerData/nginx/conf/conf.d 
#導出配置文件 nginx.conf

執(zhí)行docker stop nginx,會自動刪除現在的 nginx 容器悲酷,然后執(zhí)行如下命令

  • 啟動一個 nginx 容器
docker run -d -p 80:80 -p 443:443 --name nginx-1 \
-v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /dockerData/nginx/ssl:/ssl/ \
-v /dockerData/nginx/www:/usr/share/nginx/html \
-v /dockerData/nginx/logs:/var/log/nginx nginx
  • nginx配置文件
server {
    listen       443;
    server_name  vlog.issue98.com;
    ssl on;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    ssl_certificate /ssl/vlog.pem;          #兩個證書文件的名字
    ssl_certificate_key /ssl/vlog.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://vlog.issue98.com:8080;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
server{
    listen 80;
    server_name vlog.issue98.com;
    rewrite ^(.*) https://$host$1 permanent;
}

下載證書套菜,nginx類型,然后放到dockerData/nginx/ssl目錄下设易,名字和nginx配置文件里的匹配

docker 啟用LUTE

  • 獲取最新鏡像
docker pull b3log/lute-http
  • 啟動容器
docker run --detach --rm --network=host b3log/lute-http
  • 停止 solo
docker stop solo
  • 刪除 solo
docker rm solo
  • 運行下列命令逗柴,重啟 solo,注意最后添加--lute_http=http://127.0.0.1:8249
    如果你已經修改了solo的配置顿肺,添加了自己的文章等戏溺,不想丟失數據渣蜗,可以用docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]命令來保存solo鏡像到本地

例如

docker commit e044f5c083cc solo-vlog:0.1
# 然后啟動的時候將b3log/solo換成solo-vlog:0.1就行,CONTAINER可以通過docker ps來查看

  • 啟動LUTE
docker run --detach --name solo-lute --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:8306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
solo-sibo:0.2 \
--listen_port=8080 --server_scheme=https --server_host=vlog.issue98.com \
--server_port= \
--lute_http=http://127.0.0.1:8249
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末于购,一起剝皮案震驚了整個濱河市袍睡,隨后出現的幾起案子,更是在濱河造成了極大的恐慌肋僧,老刑警劉巖斑胜,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異嫌吠,居然都是意外死亡止潘,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門辫诅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凭戴,“玉大人,你說我怎么就攤上這事炕矮∶捶颍” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵肤视,是天一觀的道長档痪。 經常有香客問我,道長邢滑,這世上最難降的妖魔是什么腐螟? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮困后,結果婚禮上乐纸,老公的妹妹穿的比我還像新娘。我一直安慰自己摇予,他們只是感情好汽绢,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侧戴,像睡著了一般宁昭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上救鲤,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天久窟,我揣著相機與錄音,去河邊找鬼本缠。 笑死斥扛,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播稀颁,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼芬失,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了匾灶?” 一聲冷哼從身側響起棱烂,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阶女,沒想到半個月后颊糜,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡秃踩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年衬鱼,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片憔杨。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸟赫,死狀恐怖,靈堂內的尸體忽然破棺而出消别,到底是詐尸還是另有隱情抛蚤,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布寻狂,位于F島的核電站岁经,受9級特大地震影響,放射性物質發(fā)生泄漏荆虱。R本人自食惡果不足惜蒿偎,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一朽们、第九天 我趴在偏房一處隱蔽的房頂上張望怀读。 院中可真熱鬧,春花似錦骑脱、人聲如沸菜枷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啤誊。三九已至,卻和暖如春拥娄,著一層夾襖步出監(jiān)牢的瞬間蚊锹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工稚瘾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牡昆,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓摊欠,卻偏偏與公主長得像丢烘,于是被迫代替她去往敵國和親柱宦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容

  • 《Docker從入門到實踐》閱讀筆記 原書地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo閱讀 11,382評論 1 39
  • Docker簡介Docker是一個由GO語言寫的程序運行的“容器”播瞳; 目前云服務的基石是操作系統(tǒng)級別的隔離掸刊,在同一...
    gakiww閱讀 545評論 0 0
  • 1.Docker簡介 1.1 什么是虛擬化 在計算機中,虛擬化(英語:Virtualization)是一種資源管理...
    EdwinGates閱讀 1,763評論 0 0
  • 明天又要遠行苍柏,此刻在想些什 01 過完元宵節(jié),新年也就意味著該結束了姜贡。年前從天南海北陸...
    jenny簡愛閱讀 541評論 1 2
  • 這是二月中旬的午后時光试吁。我自己一個人在原本熱鬧的辦公室里。百葉窗拉下來楼咳,斜西的陽光被擋在外面熄捍,室內呈現微弱的光,更...
    江蘇白丁閱讀 802評論 9 4