Loading...

2022年3月21日

社内ESXiサーバーでWordPressサイト作成

頼まれごとがあり、dockerで構築していたWordPressサイトを外部公開することになりました。とりあえず、社内で契約しているレンタルサーバーでアップしようと考えました。WordPressのお引越しといえば、 WP Migration ですので、さくっとエクスポートして、インポート。このWordPressサイト、なかなか要領が大きく、エクスポートすると1GB超。。。レンタルサーバーの php.ini を変更するツールなどで、 post_max_size を調整してみます。すごい時間がかかる上に、途中でコケる。 以前は、 Cloudn を契約していたのですが、最近サービスが終了してしまいましたので、気楽に使えるクラウドがない(AWSは気軽には使えますが、金額的にはあまり気軽ではない)。 社内のサーバーを活用して、構築することにします。このコロナ禍、社内サーバー(いわゆるオンプレ、オンプレミス環境)はクラウドに押され圧倒的に肩身の狭い状態です。弊社でもいくつかのサービスは、オンプレからクラウドに転換しました。そのようなこともあり、社内サーバーには意外とリソースもあるので、試してみました。弊社の社内サーバーは、Mac mini上(Mac mini 2014あたりだったかな)にESXiを載せてます(ちょっとイレギュラー)。メモリも16GB積んでいるのでCPUは遅いがサーバーとしては問題ありません。そこに載っているサービスを一旦停止して、OS追加⇒docker⇒WordPress⇒Apacheにてリバースプロキシという流れで作ってみます。docker部分はもともと作っているのがあるので、特に設定は不要なはず。

全体構成

ざっくりと今回の構成はこんな感じ。

ESXiとhttpdサーバーはすでにあります。httpdサーバーだけが外部公開されていますので、apacheのリバースプロキシを使って、構築するWordPressサイトの8000ポートを公開してあげるようなイメージです。

ESXiに Centos Stream 8

CentOSは、バージョン8のサポート期限が2021/12末で切れることとなってしまい、 CentOS Stream 8 というものがリリースされましたが、こちらもサポート期限が2024/5/31ということで結構短め。実運用にはちょっと厳しいのかもしれません。とはいえ、使ってみることに。以下のようなサイトからBootイメージをダウンロードして、ESXiで立ち上げて、最小限でインストール。 http://ftp.riken.jp/Linux/centos/8-stream/isos/x86_64/

初期の設定は、以下のようなサイトで載っておりますので、行って頂ければと思います。社内サーバーなので、rootログインは継続で。 https://www.server-world.info/query?os=CentOS_Stream_8&p=initial_conf&f=1

docker / docker-composeの追加

ネットワークの設定とか終われば、SSHで接続できますので、ESXiの不便なコンソールからは離れてSSHで設定開始。 dockerは以下のサイトを見てインストール https://www.server-world.info/query?os=CentOS_Stream_8&p=docker&f=1

# curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose 

ダウンロードしたファイルの権限設定

# chmod 755 /usr/local/bin/docker-compose

という作業だけで docker-composeが使えるようになりました。で、早速元のdocker-compose.ymlファイルを持ってきて、 docker-compose up -dしてみます。 docker-compose.yml は以下の通り。

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
     volumes:
        - ./:/var/www/html/
        - ./.htaccess:/var/www/html/.htaccess
volumes:
    db_data:

このまま動かすと、 .htaccess がディレクトリ認識して、うまく起動しませんので、その行を一旦削除すると、さくっと起動します。 8000 ポートでWordPressがインストールできるようになりますので、インストールして、 WP Migration からエクスポートしたファイルをインポートします。( post_max_size 等の設定も行う必要があります)

ApacheにてReverseProxyの設定

このままだと、社内でしか見れないサービスとなってしまうので、外部公開されている httpdサーバー を経由して公開してあげます。

ProxyPass / http://社内のサーバー名:8000/
ProxyPassReverse / http://社内のサーバー名:8000/
ProxyRequests       Off
ProxyPreserveHost  On

後は、Let’s Encript使ってSSL使えるようにはしましたが、基本的にはこんな設定で動きました。この公開用サーバーは結構遅いのですが、裏側のESXiはメモリがしっかり積んでいて、反応速度も上々でした。

まとめ

dockerは、自分の Macbookに入れて使うことしかなかったのですが、Linux系のサーバーにインストールしてみた使ったのは初めてでした。他の仮想マシンのように遅くなったりすることもないので、自分のマシンで作ったものをさくっと公開するにはもってこいの環境だと思いました。古いMacminiがありましたらぜひ試してみてください(って、その説明は全然していませんね)

お問い合わせ

案件のご依頼やご相談などお気軽にご相談ください。

ご依頼やご相談はこちらから
ページトップへ
Menu