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

資訊專(zhuān)欄INFORMATION COLUMN

建立博客,使用Docker部署Ghost+MySQL+Nginx

JinB / 1056人閱讀

摘要:接下來(lái)是系統(tǒng)需要的配置文件,文件分別在變化時(shí)被使用,這樣編寫(xiě)一套啟動(dòng)文件不僅部署可用,也可用于主題或應(yīng)用開(kāi)發(fā)。文件內(nèi)容設(shè)置了反向代理啟用協(xié)議以及規(guī)定上傳文件大小。本案例的博客地址原文出處最后配置一下網(wǎng)站,也使用了自己開(kāi)發(fā)的主題。

為什么是Ghost、Docker

這個(gè)問(wèn)題很容易得到回答,因?yàn)?b>ghost快又簡(jiǎn)約,而且使用node.js開(kāi)發(fā),使用起來(lái)體驗(yàn)十分良好。我自己曾經(jīng)用過(guò)不少的博客系統(tǒng),最長(zhǎng)一次使用WordPress,但最后因?yàn)檫x擇合適插件這個(gè)問(wèn)題上使我放棄了(選擇困難癥,因?yàn)樘嗔耍?/p>

使用docker?好吧,一是為了學(xué)習(xí)docker技術(shù),二是因?yàn)樽鳛閷W(xué)生沒(méi)有一臺(tái)穩(wěn)定的服務(wù)器,每次都要重新配置服務(wù)器,很麻煩的。。

廢話(huà)就說(shuō)到這里,開(kāi)始進(jìn)入正題。

前提條件

一臺(tái)安裝好docker的服務(wù)器

檢查docker-compose是否安裝

一些必要的基礎(chǔ)知識(shí)(LinuxMySQLNginx等等)

整個(gè)項(xiàng)目結(jié)構(gòu)長(zhǎng)這樣

docker-ghost/
├── ghost/
│   └── config.production.json
│   └── config.development.json
│   └── Dockerfile
│   └── run.sh
├── nginx/
│   └── copy/
│       └── nginx.conf
│       └── nginx.pem
│       └── nginx.key
│   └── Dockerfile
└── docker-compose.yml
建立Ghost鏡像

在國(guó)內(nèi)任何國(guó)外資源下載安裝起來(lái)都會(huì)很麻煩,所以為了保證安裝速度飛起來(lái),換源是很重要的,另外npm install也換成了cnpm,其實(shí)使用yarn也是不錯(cuò)的選擇。為了進(jìn)一步的快速,我使用了docker社區(qū)資源daocloud.io/library/node:6.11.2-alpine,省去了編譯安裝node的時(shí)間。整個(gè)Dockerfile文件內(nèi)容如下:

FROM daocloud.io/library/node:6.11.2-alpine

# alpine換源,中科大
RUN cp /etc/apk/repositories /etc/apk/repositories.bak 
    && echo "http://mirrors.ustc.edu.cn/alpine/v3.4/main/" > /etc/apk/repositories

# 安裝必要文件
RUN apk update 
    
    && apk add -U --no-cache vim 
    bash 
    ca-certificates 
    grep 
    wget 
    unzip

# npm換源,yarn換源,安裝cnpm
RUN npm config set registry https://registry.npm.taobao.org 
    && npm install -g cnpm 

# 設(shè)置變量
# ================================
ENV GHOST_VERSION 1.8.1
ENV NODE_ENV production

RUN wget -q https://github.com/TryGhost/Ghost/releases/download/${GHOST_VERSION}/Ghost-${GHOST_VERSION}.zip -P /tmp 
    && unzip -q /tmp/Ghost-${GHOST_VERSION}.zip -d /ghost

# 復(fù)制必要文件
COPY config.production.json /ghost
COPY config.development.json /ghost
RUN cd /ghost && ls && cnpm install --${NODE_ENV}

# 復(fù)制啟動(dòng)文件
COPY run.sh /usr/local/bin
RUN chmod +x /usr/local/bin/run.sh

WORKDIR /ghost
VOLUME /ghost/content
EXPOSE 2368

LABEL description="Ghost-$GHOST_VERSION" 
      maintainer="imlooke "

ENTRYPOINT ["run.sh"]
CMD ["./usr/local/bin/run.sh"]

這么一來(lái)build的時(shí)間就被極大縮短,我只用了幾分鐘~

稍微解釋一下,chmod +x /usr/local/bin/run.sh為啟動(dòng)文件賦予權(quán)限,這個(gè)很重要。

接下來(lái)是ghost系統(tǒng)需要的配置文件,config.production.jsonconfig.development.json文件分別在NODE_ENV變化時(shí)被使用,這樣編寫(xiě)一套Docker啟動(dòng)文件不僅部署可用,也可用于主題或應(yīng)用開(kāi)發(fā)。如果是開(kāi)發(fā)主題可以使用VOLUME指定容器可訪(fǎng)問(wèn)的宿主機(jī)文件目錄。具體配置文件的配置項(xiàng)可以移步到官網(wǎng)查看。這一部分內(nèi)容后續(xù)還有說(shuō)明。

最后是容器啟動(dòng)的入口文件了,由于并不十分了解shell所以寫(xiě)的很簡(jiǎn)單,但是也滿(mǎn)足了當(dāng)下需求。具體就是設(shè)置了環(huán)境變量,遷移數(shù)據(jù)庫(kù),最后運(yùn)行啟動(dòng)。run.sh文件內(nèi)容如下:

#!/bin/sh
cd /ghost
export NODE_ENV=${NODE_ENV}

node_modules/.bin/knex-migrator init
# NODE_ENV=development migrate

exec node index.js
制作Nginx鏡像

社區(qū)的強(qiáng)大無(wú)時(shí)無(wú)刻不在影響開(kāi)發(fā)者,真的是這樣。我使用了官方鏡像,并且加以簡(jiǎn)單的修改,同時(shí)還啟用了HTTP SSL域名訪(fǎng)問(wèn)變成了綠色的,強(qiáng)迫癥再一次被滿(mǎn)足。。Dockerfile文件內(nèi)容如下:

FROM nginx

ENV WEB_SITE your-blog.site

RUN mkdir -p /etc/nginx/ssl/${WEB_SITE}

COPY copy/nginx.pem /etc/nginx/ssl/${WEB_SITE}/nginx.pem
COPY copy/nginx.key /etc/nginx/ssl/${WEB_SITE}/nginx.key
COPY copy/nginx.conf /etc/nginx/nginx.conf

LABEL description="SSL & Ghost" 
      maintainer="imlooke "

EXPOSE 80
EXPOSE 443
CMD nginx -g "daemon off;"

啟用SSL的相關(guān)教程我直接獲取自這篇文章。nginx.conf文件內(nèi)容設(shè)置了反向代理、啟用SSL協(xié)議以及規(guī)定上傳文件大小。文件內(nèi)容如下:

events {
    worker_connections  2048;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    client_max_body_size 20m;

    server {
        listen 80;
        return 301 https://$host$request_uri;
    }

    server {  
        listen 443 ssl;
        server_name your-blog.site;
        access_log /var/log/nginx/your-blog.site.log;
        ssl          on;
    
        ssl_certificate   /etc/nginx/ssl/your-blog.site/nginx.pem;
        ssl_certificate_key  /etc/nginx/ssl/your-blog.site/nginx.key;
        
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
        ssl_prefer_server_ciphers on;

        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header HOST $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_set_header X-Forwarded-Proto $scheme;

            proxy_pass http://ghost:2368;
            proxy_redirect off;
        }
    }
}

client_max_body_size 20m;就規(guī)定的是上傳文件限制的大小。如果從阿里云購(gòu)買(mǎi)了CA認(rèn)證服務(wù)并下載了相關(guān)證書(shū),再將證書(shū)或內(nèi)容復(fù)制到nginx.keynginx.pem或直接替換為你的文件。

制作Mysql鏡像

這一部分沒(méi)有什么特殊設(shè)置,所以直接使用了現(xiàn)成的鏡像,具體的配置在后續(xù)的docker-compose.yml文件之中。

使用docker-compose

如果你的docker應(yīng)用是由好多個(gè)部分組成的,那么docker-compose是統(tǒng)一管理它們的良好工具,統(tǒng)一制作、啟動(dòng)或停止,總之非常方便。

version: "2"
services:
  nginx:
    image: nginx
    build: nginx
    command: nginx -g "daemon off;"
    restart: always
    ports:
      - "80:80"
      - "443:443"
    container_name: nginx
    links:
      - ghost
  mysql:
    image: mysql:latest
    restart: always
    ports:
      - "3306:3306"
    container_name: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=your_mysql_password
      - MYSQL_DATABASE=ghost
  ghost:
    image: ghost
    build: ghost
    depends_on: 
      - mysql
    restart: always
    ports:
      - "2368:2368"
    container_name: ghost
    links:
      - mysql
    environment:
      - NODE_ENV:production

在這里配置要數(shù)據(jù)庫(kù)密碼。restart: always會(huì)讓容器掛掉的時(shí)候自己自行啟動(dòng)。容器之間使用了links讓其可以互相訪(fǎng)問(wèn),這是因?yàn)?b>docker會(huì)將links的規(guī)定內(nèi)容直接映射到/etc/hosts文件中去,直接添加解析。例如,在ghost中添加links: - mysql,那么在配置文件config.production.jsonconfig.development.json中就可以這樣寫(xiě)

"database": {
    "client": "mysql",
    "connection": {
        "host": "mysql",
        "user": "your_mysql_user",
        "password": "your_mysql_password",
        "database": "your_mysql_database"
    }
},

同理在nginx.conf中也添加了這樣的鏈接proxy_pass http://ghost:2368;

一條命令來(lái)構(gòu)建并啟動(dòng):

docker-compose up -d --build

這樣成功部署了屬于自己的博客網(wǎng)站,并且也讓其后臺(tái)運(yùn)行了。

后續(xù)

本項(xiàng)目的地址在awesome-ghost,歡迎留言討論。

因?yàn)橛X(jué)著很好玩,想要不定期更新這個(gè)小項(xiàng)目,添加更多自定義設(shè)置,解決博客升級(jí)更新的問(wèn)題。如果你也有興趣或許可以一起討論。

本案例的博客地址

原文出處

最后配置一下網(wǎng)站,也使用了自己開(kāi)發(fā)的主題awesome-imlooke。做個(gè)廣告,喜歡就留個(gè)star給我吧?

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

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

相關(guān)文章

  • 建立博客使用Docker部署Ghost+MySQL+Nginx

    摘要:接下來(lái)是系統(tǒng)需要的配置文件,文件分別在變化時(shí)被使用,這樣編寫(xiě)一套啟動(dòng)文件不僅部署可用,也可用于主題或應(yīng)用開(kāi)發(fā)。文件內(nèi)容設(shè)置了反向代理啟用協(xié)議以及規(guī)定上傳文件大小。本案例的博客地址原文出處最后配置一下網(wǎng)站,也使用了自己開(kāi)發(fā)的主題。 為什么是Ghost、Docker 這個(gè)問(wèn)題很容易得到回答,因?yàn)間host快又簡(jiǎn)約,而且使用node.js開(kāi)發(fā),使用起來(lái)體驗(yàn)十分良好。我自己曾經(jīng)用過(guò)不少的博客系...

    clasnake 評(píng)論0 收藏0
  • 慕課網(wǎng)_《Docker入門(mén)》學(xué)習(xí)總結(jié)

    摘要:時(shí)間年月日星期六說(shuō)明本文部分內(nèi)容均來(lái)自慕課網(wǎng)。必填用于執(zhí)行命令,當(dāng)執(zhí)行完畢后,將產(chǎn)生一個(gè)新的文件層。可選指定此鏡像啟動(dòng)時(shí)默認(rèn)執(zhí)行命令。可選用于指定需要暴露的網(wǎng)絡(luò)端口號(hào)。可選向鏡像中掛載一個(gè)卷組。 時(shí)間:2017年09月16日星期六說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com 教學(xué)源碼:無(wú) 學(xué)習(xí)源碼:無(wú) 第一章:課程簡(jiǎn)介 1-1 課程介紹 Docke...

    CoorChice 評(píng)論0 收藏0
  • 從0開(kāi)始搗鼓ghost blog

    摘要:后記昨天第一次聽(tīng)說(shuō),一時(shí)興起今天花了半天的時(shí)間從開(kāi)始搗鼓,只會(huì)基本使用,也記不清多久沒(méi)碰過(guò)了,不涉及高級(jí)使用姿勢(shì),像改主題改文件支持某些特性等等。 后記 昨天第一次聽(tīng)說(shuō)ghost,一時(shí)興起今天花了半天的時(shí)間從0開(kāi)始搗鼓,node只會(huì)基本使用,js也記不清多久沒(méi)碰過(guò)了,不涉及高級(jí)使用姿勢(shì),像改主題、改js文件支持某些特性等等。個(gè)人能力不夠,也沒(méi)有興趣深入研究,就是為了看看這東西怎么用。 ...

    Null 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<