• 512MBプラン
    • スケールアップ・ダウン機能が利用不可
    • バックアップ機能(オプション)が利用不可
    • 処理能力 ... ConoHaで512MBプランを使ってみる ... まあ個人で使うには十分か

ドキュメント

ConoHaの薄い本

環境構築

方針

  • 現在ロリポップで運用しているWeb(WordPress, pukiwiki(これ)など)を順次移行
  • メールも移行してロリポップを卒業しようと思ったが、ロリポップのエコノミープランに変更で継続(今までのところ安定運用だし、月額100円ならいいかと)
  • テスト的に使うドメインは Docker コンテナで実現
  • マルチドメイン対応は以下のように実現する
    • 現在メインで使用しているドメイン、WordPressはDockerホスト上のnginxのバーチャルホスト設定で対応
    • それ以外のドメインはDockerの nginx-proxy で対応

マルチドメイン対応

やること

  • WordPressを移行するので、「KUSANAGI」でVPSを構築
  • Dockerをインストール

ホスト名変更

$ sudo hostnamectl set-hostname [ホスト名]

パッケージのupdate

$ sudo yum update -y

ユーザ作成、SSHの設定

vimの設定

  • vimでコピペする際に改行毎にインデントされないようにするため、root、ユーザアカウントに以下の内容で .vimrc を設置
    if &term =~ "xterm"
        let &t_ti .= "\e[?2004h"
        let &t_te .= "\e[?2004l"
        let &pastetoggle = "\e[201~"
    
        function XTermPasteBegin(ret)
            set paste
            return a:ret
        endfunction
    
        noremap <special> <expr> <Esc>[200~ XTermPasteBegin("0i")
        inoremap <special> <expr> <Esc>[200~ XTermPasteBegin("")
        cnoremap <special> <Esc>[200~ <nop>
        cnoremap <special> <Esc>[201~ <nop>
    endif

Docker

  • Docker のインストール
    $ sudo yum -y install docker-io
    $ sudo service docker start
    $ sudo docker --version
    Docker version 1.12.6, build 3a094bd/1.12.6
  • 再起動したときのために自動起動も設定
    $ sudo systemctl enable docker.service
  • Docker Compose のインストール
    # curl -L https://github.com/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    # chmod +x /usr/local/bin/docker-compose

nginx-proxy

  • nginx-proxy, LAMP のイメージを取得
    # docker pull jwilder/nginx-proxy
    # docker pull greyltc/lamp
  • proxyコンテナ作成・起動(Dockerホスト側:8080、コンテナ側:80)
    # docker run --name proxy -d --restart=always -p 8080:80 -p 8443:443 -v /var/run/docker.sock:/tmp/docker.sock:ro docker.io/jwilder/nginx-proxy
  • foo.bar.com のLAMPコンテナ作成・起動(Dockerホスト側:自動設定、コンテナ側:80)
    # docker run --name lamp01 -d -p :80 -p :443 -e VIRTUAL_HOST=foo.bar.com greyltc/lamp
    • VIRTUAL_HOSTを指定し、コンテナ側のポートを nginx-proxy と同じにすることで、nginx-proxy に登録される
  • DNSの設定で、foo.bar.com の宛先をDockerホストに指定

DNS設定変更

  • この後 KUSANAGI のインストールでSSL証明書を有効にする場合は、先にDNSを変更して ConoHa にアクセスされるようにしておかないと、SSL証明書の発行でエラーになる

KUSANAGI

  • KUSANAGIの初期設定
    $ kusanagi init --tz tokyo --keyboard ja --lang ja --passwd [ユーザ kusanagi のパスワード] --nophrase --dbrootpass [MySQLのrootパスワード] --nginx --hhvm
    • 起動するWebサーバをnginx
    • 起動するアプリケーションサーバをHHVM(Facebookが開発・公開しているC++で実装されたPHP実行環境)
  • KUSANAGIのプロビジョニング ... KUSANAGIでWordPress などを使用するためのプロファイルを作成
    $ kusanagi provision --wplang ja --fqdn [FQDN] --email [メールアドレス] --dbname [DB名] --dbuser [DBユーザ] --dbpass [DBユーザのパスワード] [プロファイル名]
    • /home/kusanagi/[プロファイル名] というディレクトリが作成され、この中にドキュメントルートが作成される
    • WordPress 日本語版をインストール
    • Let’s EncryptでSSL証明書を発行
  • WordPress の設定ファイル作成
    $ sed -ne '/\/\*\*\#\@\-\*\//,$ p' /home/kusanagi/[プロファイル名]/DocumentRoot/wp-config-sample.php | wp core config --dbname=[DB名] --dbuser=[DBユーザ] --dbpass=[DBユーザのパスワード] --dbhost=localhost  --dbcharset=utf8mb4 --extra-php --path=/home/kusanagi/[プロファイル名]/DocumentRoot
  • WordPress のインストール
    $ wp core install --url=[http://aaa.com] --title=test --admin_user=[WPユーザ] --admin_password=[WPユーザのパスワード] --admin_email=[メールアドレス] --path=/home/kusanagi/[プロファイル名]/DocumentRoot
  • もしミスったら、以下のコマンドを実行して「プロビジョニング」からやり直せば OK
    # kusanagi remove -y [プロファイル名]

nginx

マルチドメイン設定

  • 設定ファイル用のディレクトリを作成
    # mkdir /etc/nginx/sites-available
    # mkdir /etc/nginx/sites-enable
  • 設定ファイルを作成(/etc/nginx/sites-available/aaa.com 同様に bbb.com, ccc.com を作る)
    # aaa.com
    server {
    	listen 80;
    	server_name aaa.com;
    
    	access_log  /var/log/nginx/access.aaa.com.log;
    	error_log   /var/log/nginx/error.aaa.com.log;
    
    	location / {
    		root   /home/kusanagi/aaa.com/DocumentRoot/
    		index  index.php;
    	}
    }
  • リパースプロキシ用設定ファイル(/etc/nginx/sites-available/proxy)
    server {
           listen       80  default_server;
           server_name  _;
    
           access_log  /var/log/nginx/access.proxy.log;
           error_log   /var/log/nginx/error.proxy.log;
    
           proxy_redirect                                          off;
           proxy_set_header Host                           $host;
           proxy_set_header X-Real-IP                      $remote_addr;
           proxy_set_header X-Forwarded-Host       $host;
           proxy_set_header X-Forwarded-Server     $host;
           proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
    
           location / {
                   proxy_pass http://localhost:8080/;
           }
    }
    • マルチドメイン未設定のドメインは、localhost:8080(nginx-proxy)に流す
  • 設定ファイルをsite-enableディレクトリ側から参照するシンボリックリンクをはる
    # ln -s /etc/nginx/sites-available/aaa.com /etc/nginx/sites-enable/
    # ln -s /etc/nginx/sites-available/bbb.com /etc/nginx/sites-enable/
    # ln -s /etc/nginx/sites-available/ccc.com /etc/nginx/sites-enable/
    # ln -s /etc/nginx/sites-available/proxy /etc/nginx/sites-enable/
  • /etc/nginx/nginx.conf の最後の方にある「include /etc/nginx/conf.d/*.conf;」の直後に以下を追記
    include /etc/nginx/sites-enable/*;
  • nginxをrestart
    # service nginx restart

nginx + Perl

Postfix / Dovecot

環境構築で使うコマンド群

  • CentOSのバージョンを確認
    $ cat /etc/redhat-release
  • yum でパッケージがインストール済みか?
    $ yum list installed | grep '[パッケージ]'

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-05-03 (水) 15:54:57 (2549d)