docker下安裝typecho建立自己得博客系統(tǒng)(1)dockerfile篇

原文鏈接:https://segmentfault.com/a/1190000009420625

需求說明

使用typeecho一款php軟件在docker環(huán)境下構(gòu)建運(yùn)行自己得博客系統(tǒng)谆构,并安裝ssl證書更鲁。

博客軟件typecho

http://typecho.org/

Step1:擁有一臺包含docker軟件的linux操作系統(tǒng)

[root@oeynet tools]# docker -v
Docker version 1.12.6, build 96d83a5/1.12.6
[root@oeynet tools]# 

Step2:由于我的環(huán)境還有一個老系統(tǒng)使用tengine2搭建的

所以我會直接將tengine作為內(nèi)部的反向代理澡为,把容器導(dǎo)出的端口提供服務(wù)

[root@oeynet programs]# nginx -v
Tengine version: Tengine/2.2.0 (nginx/1.8.1)
[root@oeynet programs]# 

Step3:下載typeecho

1.安裝git命令

$git clone https://github.com/typecho/typecho.git typeecho

2.typeecho人性化的給我們提供了dockerfile文件媒至,不過他們是把typecho程序拒啰,放在一個包含了mysql+nginx+php-fpm的容器中去谋旦,顯然這是最簡單的方式屈尼,不過使用docker-compose構(gòu)建的話,服務(wù)會變得更容易維護(hù)甲捏,不過這次我們?nèi)稳皇褂霉俜教峁┑腄ockerfile去構(gòu)建鞭执。

Step4:使用docker構(gòu)建

1.進(jìn)入到tools目錄

$cd ./typeecho/tools
$ls
clipboard.png
clipboard.png

2.構(gòu)建

$docker build -t typeecho:0.1 .

在構(gòu)建過程中可能會遇到安裝mysql的時候報(bào)錯兄纺,這個時候我們打開dockerfile去fix它

clipboard.png
clipboard.png

21行增加一行

clipboard.png
clipboard.png

3.構(gòu)建完成之后


clipboard.png
clipboard.png

哇靠,如此之大猎提,厲害了我的哥锨苏,typeecho官方提供的dockerfile啊伞租,沒有清理很多tmp文件

Step5:開始安裝

1.啟動一個typecho容器

[root@oeynet typecho]# docker run -d -v /server/docker-apps/typecho:/www typeecho:0.1
f16060b32360834384e745317f5f657e17eb91fde1aaba0ad662995b1ab97511
[root@oeynet typecho]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
9e01b2d210cc        typeecho:0.1        "/bin/sh -c '/php/sbi"   3 minutes ago       Up 3 minutes        80/tcp, 3306/tcp    typecho
[root@oeynet typecho]# 

這里我們不需要去暴露任何端口裸弦,因?yàn)槎际遣话踩淖鞔貏e是數(shù)據(jù)庫的3306端口泞坦,由于我們是通過宿主機(jī)的nginx去訪問贰锁。 -v參數(shù)是必須的豌熄,他指定我們?nèi)燧d網(wǎng)站得根目錄到容器內(nèi)部的網(wǎng)絡(luò)上授嘀。

2.添加宿主機(jī)nginx的反代配置
查看宿主機(jī)ip

$docker inspect 9e

在network中

clipboard.png
clipboard.png

添加nginx配置

server{
   listen 80;
   server_name blog.oeynet.com;
   location / {
     proxy_pass http://192.168.0.2:80;
   }
}

重新啟動

clipboard.png
clipboard.png

接著我們訪問 blog.oeynet.com,能訪問說明我們已經(jīng)成功了蹄皱,但是別高興的太早了,更復(fù)雜的在后面

clipboard.png
clipboard.png

Step6:開始安裝

1.進(jìn)入容器內(nèi)部的操作系統(tǒng)

[root@oeynet typecho]# docker exec -it 9e bash

2.dockerfile構(gòu)建后夯接,里面包含了mysql的客戶端軟件焕济,typecho安裝不會創(chuàng)建數(shù)據(jù)庫,所以我們需要自行創(chuàng)建數(shù)據(jù)庫.

root@9e01b2d210cc:/# mysql -uroot -p123456
mysql> create database typecho;
Query OK, 1 row affected (0.00 sec)

3.在配置好安裝界面向?qū)Ш笄缙覀冃枰謩尤ww創(chuàng)建config.inc.php

<?php
/**
 * Typecho Blog Platform
 *
 * @copyright  Copyright (c) 2008 Typecho team (http://www.typecho.org)
 * @license    GNU General Public License 2.0
 * @version    $Id$
 */

/** 定義根目錄 */
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));

/** 定義插件目錄(相對路徑) */
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');

/** 定義模板目錄(相對路徑) */
define('__TYPECHO_THEME_DIR__', '/usr/themes');

/** 后臺路徑(相對路徑) */
define('__TYPECHO_ADMIN_DIR__', '/admin/');

/** 設(shè)置包含路徑 */
@set_include_path(get_include_path() . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . '/var' . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . __TYPECHO_PLUGIN_DIR__);

/** 載入API支持 */
require_once 'Typecho/Common.php';

/** 載入Response支持 */
require_once 'Typecho/Response.php';

/** 載入配置支持 */
require_once 'Typecho/Config.php';

/** 載入異常支持 */
require_once 'Typecho/Exception.php';

/** 載入插件支持 */
require_once 'Typecho/Plugin.php';

/** 載入國際化支持 */
require_once 'Typecho/I18n.php';

/** 載入數(shù)據(jù)庫支持 */
require_once 'Typecho/Db.php';

/** 載入路由器支持 */
require_once 'Typecho/Router.php';

/** 程序初始化 */
Typecho_Common::init();

/** 定義數(shù)據(jù)庫參數(shù) */
$db = new Typecho_Db('Pdo_Mysql', 'tp_');
$db->addServer(array (
  'host' => 'localhost',
  'user' => 'root',
  'password' => '123456',
  'charset' => 'utf8',
  'port' => '3306',
  'database' => 'typecho',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

clipboard.png
clipboard.png

在創(chuàng)建config.inc.php后掩幢,安裝成功

clipboard.png
clipboard.png

可能會遇到的問題

1.在引導(dǎo)頁面后,白屏關(guān)掉跨站檢測

clipboard.png
clipboard.png

Step7:配置ssl證書

1.申請ssl證書际邻,這個可以在阿里云里免費(fèi)申請一年的證書


clipboard.png
clipboard.png

2.下載nginx證書上傳到服務(wù)器

修改conf文件

server{
   listen 443;
   ssl on;
   server_name blog.oeynet.com;
   ssl_certificate   /server/certs/blog.oeynet.com/214082784110471.pem;
   ssl_certificate_key  /server/certs/blog.oeynet.com/214082784110471.key;
   ssl_session_timeout 5m;
   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers on;
   location / {
     proxy_pass http://192.168.0.2:80;
   }
}
server {
   listen 80;
   server_name blog.oeynet.com;
   rewrite ^(.*)$  https://$host$1 permanent;
}

最后重啟nginx芍阎,把443端口開放

[root@oeynet vhost]# nginx -s reload
[root@oeynet vhost]# firewall-cmd --add-port=443/tcp --zone=public --permanent
FirewallD is not running
[root@oeynet vhost]# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/basic.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
[root@oeynet vhost]# systemctl start firewalld
[root@oeynet vhost]# firewall-cmd --add-port=443/tcp --zone=public --permanent
success
[root@oeynet vhost]# firewall-cmd --reload
success
[root@oeynet vhost]# 

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骗露,一起剝皮案震驚了整個濱河市血巍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柿隙,老刑警劉巖鲫凶,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禀崖,死亡現(xiàn)場離奇詭異,居然都是意外死亡掀序,警方通過查閱死者的電腦和手機(jī)帆焕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來不恭,“玉大人叶雹,你說我怎么就攤上這事』话桑” “怎么了折晦?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長沾瓦。 經(jīng)常有香客問我满着,道長,這世上最難降的妖魔是什么贯莺? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任风喇,我火速辦了婚禮,結(jié)果婚禮上缕探,老公的妹妹穿的比我還像新娘魂莫。我一直安慰自己,他們只是感情好爹耗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布耙考。 她就那樣靜靜地躺著,像睡著了一般潭兽。 火紅的嫁衣襯著肌膚如雪倦始。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天山卦,我揣著相機(jī)與錄音鞋邑,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛枚碗,可吹牛的內(nèi)容都是我干的藻懒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼视译,長吁一口氣:“原來是場噩夢啊……” “哼嬉荆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起酷含,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鄙早,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后椅亚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體限番,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年呀舔,在試婚紗的時候發(fā)現(xiàn)自己被綠了弥虐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡媚赖,死狀恐怖霜瘪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惧磺,我是刑警寧澤颖对,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站磨隘,受9級特大地震影響缤底,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜番捂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一个唧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧设预,春花似錦徙歼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呼股。三九已至耕魄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彭谁,已是汗流浹背吸奴。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人则奥。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓考润,卻偏偏與公主長得像,于是被迫代替她去往敵國和親读处。 傳聞我的和親對象是個殘疾皇子糊治,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,532評論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一罚舱、Docker 簡介 Docke...
    極客圈閱讀 10,499評論 0 120
  • 0. 前言 docker是什么井辜?docker是用GO語言開發(fā)的應(yīng)用容器引擎,基于容器化管闷,沙箱機(jī)制的應(yīng)用部署技術(shù)粥脚。可...
    sessionboy閱讀 3,854評論 2 49
  • docker基本概念 1. Image Definition 鏡像 Image 就是一堆只讀層 read-only...
    慢清塵閱讀 8,748評論 1 21
  • 最留不住的是時間 最趕不走的是感情 你打我的鐵棍 我看作肉包子
    松鼠Robin閱讀 140評論 0 0