Ghost+Docker+Apache2(サブディレクトリ)で設定してみました

Ghostを試してみました。理由は「おしゃれなサイトが作れそう」だったから。
ヘッドレスCMSとか、Node.jsで書かれているとか、記事を書くことに特化した、とかの特徴があるみたいです。

前提と想定

以下のようなアドレスでWebサイトにアクセスするつもりです。
https://example.com/blog

目標

  1. Ghostをサーバ側で作成する( Dockerコンテナ )
  2. サブディレクトリ形式のURLでアクセス出来るようにする。
この https://example.com/ は既にアクセス可能の状態(Apacheが通常起動している状態)とします。

環境

  • Ubuntu20.04
  • Webサーバ: Apache2

参考

今回の設定をするにあたって、以下が非常に参考になりました。ありがとうございます。

1. Ghostのコンテナ作成

2つのファイル、.envとdocker-compose.ymlを作り、記述します。
環境変数を適宜変更してください。
.env

GLOURL=example.com
SUBDIR=blog

PORT=8080
DB_USER=XXXX
DB_PASSWD=XXXX
DATABASE=xxxx

MYSQL_PORT=3006
docker-compose.yml

version: '3.8'
services:
  ghost:
    image: ghost:latest
    container_name: ghost
    restart: always
    ports:
      - ${PORT}:2368
    depends_on:
      - db
    environment:
      # see https://ghost.org/docs/config/#configuration-options
      database__client: mysql
      database__connection__host: db
      database__connection__user: ${DB_USER}
      database__connection__password: ${DB_PASSWD}
      database__connection__database: ${DATABASE}
      url: http://${URL}/${SUBDIR}/
    volumes:
      - ./content:/var/lib/ghost/content

  db:
    image: mysql:8.0
    restart: always
        ports:
          - ${MYSQL_PORT}:3306
        environment:
          MYSQL_ROOT_PASSWORD: ${DB_PASSWD}
        volumes:
          - ./mysql:/var/lib/mysql
コンテナを作成して、起動します。
docker-compose up -d

2. Apache2の設定

サブディレクトリ形式のURLでアクセス出来るように設定していきます。
cd /etc/apache2/sites-available
新しく設定ファイルを作成し(001-blog.conf)、以下を書き込んでhttps://ドメイン/blogでアクセスできるようにします。
sudo vim 001-blog.conf

<Location /blog>
    ProxyPass http://localhost:8080/blog
    ProxyPassReverse http://localhost:8080/blog
    ProxyPassReverseCookieDomain localhost example.com
    ProxyPassReverseCookiePath / /blog/
    Header edit Location ^http:// https://
</Location>
設定ファイルを有効化のステージへシンボリックリンク
sudo a2ensite 001-blog.conf
因みに無効化です。
sudo a2dissite 001-ghost.conf

設定の確認

Apacheの設定に文法の間違いがないことを確認すします。
sudo apachectl -t

Syntax OK # <- これを確認

Apacheの再起動と起動確認

sudo systemctl restart apache2
sudo systemctl status apache2
目的のアドレスにアクセスすると、blogが表示できることを確認できました。
以上になります

鹿児島県の出水市という所に住んでいまして、インターネット周辺で色々活動して行きたいと思ってるところです。 Webサイト作ったり、サーバ設定したり、プログラムしたりしている、釣りと木工好きなMacユーザです。 今はデータサイエンスに興味を持って競馬AI予想を頑張ってます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください