joppot

コピペで絶対動く。説明を妥協しない

サーバ

AMIMOTO AMIのnginx上でvirtual hostを設定してphpサービスをリリースする

投稿日:

Pocket

iidoa

概要

みなさんこんにちはcandleです。今回はAMIMOTO AMIのnginx上でバーチャルホストを使う場合の設定をやってみたいと思います。

AMIMOTO AMIは高速でwordpressを作成できる素晴らしいAMIなのです。
まずはwordpressから始めてまた他のサービスを出したいなと思う人は多いと思います。

そこで、別のphpサービスをvirtualhostを使ってデプロイメントできるように設定してみましょう。


前提

EC2上でAMIMTO AMIのwordpressが動いている

テスト用のドメインを持っていて割と自由に使える
私はお名前.comさんのドメインを使います。



nginxのvirtual hostの設定

それではやっていきましょう。
nginxの設定は割りと簡単です。

EC2にssh接続しましょう。

接続したら、/etc/nginx/conf.d/に移動します。

cd /etc/nginx/conf.d

cdnginxconfd

virtual.confを開きます。
その中のどこでも良いので下の記述を書きます。

server {
  listen       80;
  server_name  新しく付けたいドメイン名;
  root  /var/www/vhosts/プロジェクト名;
  index  index.php index.html index.htm;
  charset     utf-8;
  location ~ \.php$ {
    fastcgi_pass phpfpm;
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

例えば、ccimagesearch.comというドメイン名を/var/www/vhosts/ccimagesearchで公開したい場合は下のようになります。

setvirtualhost

保存しましょう。
nginxの設定は終わりです。

バーチャルホストで動かすプロジェクトを作る

動作確認も含めて、プロジェクトを作ってみます。先ほどバーチャルホストの設定のrootという項目で書いたパスに移動します。

cd /var/www/vhosts/

もしも、wordpressを作っているならここにi-90ujr0auみたいなフォルダがあると思います。
それは置いておいて、試しに先ほどvirtual.confで設定したnginxで公開するフォルダを作ります。私は上の例の通り、ccimagesearchというフォルダを作ります。

sudo mkdir ccimagesearch

フォルダの管理者を変更します。下のようにしましょう。

sudo chown -R nginx:ec2-user ./ccimagesearch/
sudo chmod 775 ./ccimagesearch/
cd ccimagesearch

createpublicfolder-1

今、作成したフォルダの中でテスト用のphpファイルを作ります。

touch index.php

index.phpをエディタで開いて下の内容を書き込みます。

<?php

phpinfo();

?>

保存しましょう。念のためindex.phpの管理者を見ておいてください。nginx ec2-userになっているでしょうかもしなっていなかったら、下のコマンドで変更しておいてください。

whoisowner

sudo chown nginx:ec2-user index.php

これで、公開ディレクトリの準備が出来ました。


nginxとphp-fpmの再起動

まずはphp-fpmを再起動します。

sudo service php-fpm restart

nginxの再起動の前にnginxの構文をチェックします

sudo nginx -t

okとかsuccessfulとでれば設定ファイルに間違いがありません。

下のコマンドでnginxを再起動します。

sudo service nginx restart


お名前.comのDNSをec2と紐付ける

これは、細かく説明すると大変なので、適当に説明します。
もしもお名前じゃないサービスを使っている場合はそちらから設定してください。

ec2のAMIMOTO AMIが動いているpublic IPを調べます。
インスタンスを選んでpublic IPの項目をみれば分かります。
checkpublicip

お名前.comに移動して、ログインをします。
タブの「ドメイン設定」を押し、「DNS関連機能の設定」を選び、「DNSレコード設定を利用する」を押します。
使いたいドメインを選択して、「入力画面に進む」を押します。
「入力」の項目を埋めます。

ホスト名空のまま
TYPEA
TTL3600
VALUE EC2のpublic IP
優先空のまま
状態有効

public IPを入力したら右の「追加」ボタンを押します。
画面の一番下の青い「確認画面へ進む」を押します。

IPアドレスをもう一度確認して、問題がなければ、青い「設定する」ボタンを押しましょう。
これでドメインがEC2にひも付きました。

ドメインがEC2にひも付くには多少時間がかかります。早ければ10分とか遅ければ30~40分かかります。


バーチャルホストを確認する

ドメインがEC2のPublic IPと紐付いたら、サイトにアクセスしましょう。
私は今回、「ccimagesearch.com」というのをバーチャルホストに設定しました。そこにアクセスしてみます。
もしも、作成したindex.phpのphpinfo関数が実行されれば成功です。

phpinfo


まとめ

ざっくりと説明して参りましたが、できたでしょうか。
無事にphpinfo関数が実行されればあとはこっちのもので、phpプロジェクトなりを作成した公開ディレクトリに置けばもう動きます。
1つ気になるのは確かphp-fpmのセッションの問題でもしかするとsessionを扱うphpサービスの場合は上手くいかないかもしれません。
もちろん対処法があるので、調べてみてください。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-サーバ
-,

執筆者:


comment

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

関連記事

railsのfluent-loggerとdevise gemを使ってユーザーの行動をfluentdサーバに収集する

概要 fluentdと言えば、ビックデータで扱うようなデータを集め出力するサーバですが、これとrailsのfluent-logger gemとdevise gemを組み合わせてユーザーの行動ログをとっ …

vagrantで取得したlet’s encryptのssl証明書をec2のnginxで使用する

概要 みなさんこんにちはcandleです。今回は取得したvagrantのubuntuで取得したlet’s encryptを実際に使用してみます。 もしも、まだ取得してない人は前回の記事を確 …

MAMPでphpのshell_execを使用してunixコマンドを実行できない場合の対処(imagemagick,convert)

概要 みなさんこんにちはcandleです。今回はちょっと問題が起きてshell_execがうまくいかないときのトラブルシューティングをまとめます。 私はMAMPをバージョンアップする前は、phpのsh …

apache2.4でvirtualhost毎に環境変数を定義しphpで使用する方法

English 日本語 概要 みなさんこんにちはcandleです。 今回はapache2.4でバーチャルホスト毎に環境変数を定義して、それをphp側で受け取る方法を紹介します。 例えば、wordpre …

fabricでvagrantのデフォルトの秘密鍵を使ってサーバにアクセスする

概要 みなさんこんにちはcandleです。今回はfabricを使ってvagrant上のvmにアクセスする方法を紹介します。様々なサイトを閲覧すると、あまりvagrantのデフォルトの鍵を使用して、fa …

  • English
  • 日本語

プロフィール


ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー

スポンサードリンク

アーカイブ