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

資訊專欄INFORMATION COLUMN

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

clasnake / 2464人閱讀

摘要:接下來是系統需要的配置文件,文件分別在變化時被使用,這樣編寫一套啟動文件不僅部署可用,也可用于主題或應用開發。文件內容設置了反向代理啟用協議以及規定上傳文件大小。本案例的博客地址原文出處最后配置一下網站,也使用了自己開發的主題。

為什么是Ghost、Docker

這個問題很容易得到回答,因為ghost快又簡約,而且使用node.js開發,使用起來體驗十分良好。我自己曾經用過不少的博客系統,最長一次使用WordPress,但最后因為選擇合適插件這個問題上使我放棄了(選擇困難癥,因為太多了)。

使用docker?好吧,一是為了學習docker技術,二是因為作為學生沒有一臺穩定的服務器,每次都要重新配置服務器,很麻煩的。。

廢話就說到這里,開始進入正題。

前提條件

一臺安裝好docker的服務器

檢查docker-compose是否安裝

一些必要的基礎知識(LinuxMySQLNginx等等)

整個項目結構長這樣

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鏡像

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

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 

# 設置變量
# ================================
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

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

# 復制啟動文件
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"]

這么一來build的時間就被極大縮短,我只用了幾分鐘~

稍微解釋一下,chmod +x /usr/local/bin/run.sh為啟動文件賦予權限,這個很重要。

接下來是ghost系統需要的配置文件,config.production.jsonconfig.development.json文件分別在NODE_ENV變化時被使用,這樣編寫一套Docker啟動文件不僅部署可用,也可用于主題或應用開發。如果是開發主題可以使用VOLUME指定容器可訪問的宿主機文件目錄。具體配置文件的配置項可以移步到官網查看。這一部分內容后續還有說明。

最后是容器啟動的入口文件了,由于并不十分了解shell所以寫的很簡單,但是也滿足了當下需求。具體就是設置了環境變量,遷移數據庫,最后運行啟動。run.sh文件內容如下:

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

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

exec node index.js
制作Nginx鏡像

社區的強大無時無刻不在影響開發者,真的是這樣。我使用了官方鏡像,并且加以簡單的修改,同時還啟用了HTTP SSL域名訪問變成了綠色的,強迫癥再一次被滿足。。Dockerfile文件內容如下:

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的相關教程我直接獲取自這篇文章。nginx.conf文件內容設置了反向代理、啟用SSL協議以及規定上傳文件大小。文件內容如下:

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;就規定的是上傳文件限制的大小。如果從阿里云購買了CA認證服務并下載了相關證書,再將證書或內容復制到nginx.keynginx.pem或直接替換為你的文件。

制作Mysql鏡像

這一部分沒有什么特殊設置,所以直接使用了現成的鏡像,具體的配置在后續的docker-compose.yml文件之中。

使用docker-compose

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

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

在這里配置要數據庫密碼。restart: always會讓容器掛掉的時候自己自行啟動。容器之間使用了links讓其可以互相訪問,這是因為docker會將links的規定內容直接映射到/etc/hosts文件中去,直接添加解析。例如,在ghost中添加links: - mysql,那么在配置文件config.production.jsonconfig.development.json中就可以這樣寫

"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;

一條命令來構建并啟動:

docker-compose up -d --build

這樣成功部署了屬于自己的博客網站,并且也讓其后臺運行了。

后續

本項目的地址在awesome-ghost,歡迎留言討論。

因為覺著很好玩,想要不定期更新這個小項目,添加更多自定義設置,解決博客升級更新的問題。如果你也有興趣或許可以一起討論。

本案例的博客地址

原文出處

最后配置一下網站,也使用了自己開發的主題awesome-imlooke。做個廣告,喜歡就留個star給我吧?

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27035.html

相關文章

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

    摘要:接下來是系統需要的配置文件,文件分別在變化時被使用,這樣編寫一套啟動文件不僅部署可用,也可用于主題或應用開發。文件內容設置了反向代理啟用協議以及規定上傳文件大小。本案例的博客地址原文出處最后配置一下網站,也使用了自己開發的主題。 為什么是Ghost、Docker 這個問題很容易得到回答,因為ghost快又簡約,而且使用node.js開發,使用起來體驗十分良好。我自己曾經用過不少的博客系...

    JinB 評論0 收藏0
  • 慕課網_《Docker入門》學習總結

    摘要:時間年月日星期六說明本文部分內容均來自慕課網。必填用于執行命令,當執行完畢后,將產生一個新的文件層。可選指定此鏡像啟動時默認執行命令。可選用于指定需要暴露的網絡端口號。可選向鏡像中掛載一個卷組。 時間:2017年09月16日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com 教學源碼:無 學習源碼:無 第一章:課程簡介 1-1 課程介紹 Docke...

    CoorChice 評論0 收藏0
  • 從0開始搗鼓ghost blog

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

    Null 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<