#author("2017-05-03T15:53:32+09:00","default:admin","admin") #author("2017-05-03T15:54:57+09:00","default:admin","admin") -[[ConoHa:https://www.conoha.jp]] --[[料金:https://www.conoha.jp/pricing/?btn_id=header_pricing_a_170418]] --[[豊富なテンプレート:https://www.conoha.jp/function/template/?banner_id=a02_conohanews_5_20170503_jp]] ---[[WordPress(KUSANAGI):https://www.conoha.jp/function/wordpress/]] ---[[KUSANAGI for ConoHaとLet’s Encryptの小粋な使い方:https://www.myzkstr.com/archives/684]] -512MBプラン --スケールアップ・ダウン機能が利用不可 --バックアップ機能(オプション)が利用不可 --処理能力 ... [[ConoHaで512MBプランを使ってみる:https://www.myzkstr.com/archives/626]] ... まあ個人で使うには十分か *ドキュメント [#y917135b] **ConoHaの薄い本 [#me3673eb] -[[vol.0「クラウド?VPS?ConoHaがわかるはじめの一歩」:https://www.conoha.jp/wp-content/uploads/2015/03/00_ConoHa.pdf]] -[[vol.1「ボタンひとつで本格「WordPress」はじめよう!」:https://www.conoha.jp/wp-content/uploads/2014/04/01_WordPress.pdf]] -[[vol.2「VPSで自分専用のメールサーバーを立てよう!」:https://www.conoha.jp/wp-content/uploads/2014/06/02_Postfix.pdf]] -[[vol.3「ConoHa+Dockerでサーバーをドカドカ立てよう!」:https://www.conoha.jp/download/books/conoha-book-03-docker.pdf]] -[[Vol.4「VPSでAndroid開発環境をつくろう!」:https://www.conoha.jp/wp-content/uploads/2014/08/04_android.pdf]] -[[Vol.5「Gitを使ってみよう & 自分だけのGitサーバーを構築してみよう!」:https://www.conoha.jp/wp-content/uploads/2014/09/05_Git.pdf]] *環境構築 [#u852e291] -[[WordPressサイトをConoHa VPSに移行しよう:https://www.conoha.jp/guide/wordpress2.php]] -[[「KUSANAGI for ConoHa」へのWordPress移転方法を考えて方針を決める:http://cafe-system.com/system1983.html]] **方針 [#g17c9df2] -現在ロリポップで運用しているWeb(WordPress, pukiwiki(これ)など)を順次移行 --WordPress => KUSANAGi for ConoHa --pukiwiki => adiary(予定) --メールも移行してロリポップを卒業しようと思ったが、ロリポップのエコノミープランに変更で継続(今までのところ安定運用だし、月額100円ならいいかと) -テスト的に使うドメインは Docker コンテナで実現 -マルチドメイン対応は以下のように実現する --現在メインで使用しているドメイン、WordPressはDockerホスト上のnginxのバーチャルホスト設定で対応 --それ以外のドメインはDockerの nginx-proxy で対応 **マルチドメイン対応 [#qed1c01b] -[[Docker × Nginx × Let'sEncrypt | 俺の考えた最強のサーバー構築方法:https://hackerslog.net/post/labs/docker-letsencrypt-on-docker-and-nginx/]] -[[VirtualHostをお手軽に実現できるDockerコンテナnginx-proxyの起動方法:https://suin.io/531]] -[[nginx-proxyによるマルチドメイン環境:http://qiita.com/sigelinde/items/95c154dc807a4bbc9cf0]] -[[Dockerを使って1サーバで複数Webサービスを運用するためのマイベストプラクティス:http://qiita.com/miyasakura_/items/5cd3b05aa9c5e4f3f4be]] --nginx-proxy ---複数のサービスはそれぞれのコンテナで動いているので、各リクエストを振り分けるリバースプロキシが必要 ---nginx-proxyを使うと立ち上がっているDockerコンテナに自動的に振り分けを行うことができる --docker-letsencrypt-nginx-proxy-companion ---Let's Encryptは最近注目の無料でSSL証明書を発行できるサービス ---このコンテナを動かすだけで自動でSSL証明書の発行・更新を行ってくれる **やること [#p231057f] --WordPressを移行するので、「KUSANAGI」でVPSを構築 --Dockerをインストール **ホスト名変更 [#b4847cce] $ sudo hostnamectl set-hostname [ホスト名] **パッケージのupdate [#u5145961] $ sudo yum update -y **ユーザ作成、SSHの設定 [#f14dcf53] -[[ConohaにVPSを設置して、SSHログイン、ポート番号変更、rootログイン禁止までを30分で!:http://qiita.com/ongaeshi/items/bb17ebfbd4d22057c8fd]] -[[ConoHaでVPSを借りて、SSH接続などの初期設定:http://tkm-71.hatenablog.com/entry/2016/03/20/153825]] **vimの設定 [#r4b3f6a1] -[[vimでペーストする際に、自動でpaste modeにする方法のメモ:http://qiita.com/ryoff/items/ad34584e41425362453e]] -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 [#k93e57f0] -[[ConohaにDockerをインストールする:http://qiita.com/ongaeshi/items/d590f58753b05fda672d]] -[[ConoHa + Docker + ghostで30分で技術ブロクを作る:http://blog.personal-factory.com/2015/07/04/conoha-docker-ghostde30fen-deji-shu-burokuwozuo-ru/]] -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 [#o0a252fb] -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 -p :80 -p :443 -d -e VIRTUAL_HOST=foo.bar.com greyltc/lamp # 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設定変更 [#rbdb687c] -この後 KUSANAGI のインストールでSSL証明書を有効にする場合は、先にDNSを変更して ConoHa にアクセスされるようにしておかないと、SSL証明書の発行でエラーになる **KUSANAGI [#o7196843] -[[KUSANAGI ドキュメント:https://kusanagi.tokyo/document/]] -[[KUSANAGIを設定してWordPressを立ち上げる:https://ygkb.jp/2321/]] -[[KUSANAGIの初期設定:https://kusanagi.tokyo/document/kusanagi-init/]] $ kusanagi init --tz tokyo --keyboard ja --lang ja --passwd [ユーザ kusanagi のパスワード] --nophrase --dbrootpass [MySQLのrootパスワード] --nginx --hhvm --起動するWebサーバをnginx --起動するアプリケーションサーバをHHVM(Facebookが開発・公開しているC++で実装されたPHP実行環境) -[[KUSANAGIのプロビジョニング:https://kusanagi.tokyo/document/kusanagi-provision/]] ... KUSANAGIでWordPress などを使用するためのプロファイルを作成 $ kusanagi provision --wplang ja --fqdn [FQDN] --email [メールアドレス] --dbname [DB名] --dbuser [DBユーザ] --dbpass [DBユーザのパスワード] [プロファイル名] --/home/kusanagi/[プロファイル名] というディレクトリが作成され、この中にドキュメントルートが作成される --WordPress 日本語版をインストール --[[Let’s Encrypt:https://letsencrypt.jp]]で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 [#ra5fdb1f] ***マルチドメイン設定 [#n967a12e] -[[nginxのインストールからマルチドメインの設定まで:http://data-hacker.blogspot.jp/2014/03/nginxcentos.html]] -設定ファイル用のディレクトリを作成 # 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 [#af862825] -[[NginxでPerlを動かす CentOS6:https://sys-guard.com/post-10029/]] **Postfix / Dovecot [#lf33bbb2] -[[メールサーバー構築(Postfix+Dovecot):https://centossrv.com/postfix.shtml]] *環境構築で使うコマンド群 [#i4482e12] -CentOSのバージョンを確認 $ cat /etc/redhat-release -yum でパッケージがインストール済みか? $ yum list installed | grep '[パッケージ]'