Laravel4をEC2で動かそう

タグ: Laravel4   AWS  

AWSには便利な機能があり、自分でEC2インスタンス(まあ、仮想サーバーマシンとでもいいましょうか)を構築しなくても、誰かの作成したインスタンスを無料、有料で利用できます。

ところが、こうした既存のインスタンスを拝借する方法は、問題を含んでいます。

  • 設定の内容が見えないため、サーバーの内側を調査する必要がある。
  • 真面目に公開するには、セキュリティーに注意する必要がある。
  • 使用する場合も、実用にするにはセキュリティーに注意する必要がある。

お手軽に利用できるのかと思い、Laravelを組み込んだマイクロインスタンスを共有AMIにしたのですが、検索がダサいし、セキュリティーに対応するのが面倒だという事実に直面し、公開を速攻で止めました。

とは言え、AWSを触り始めてから、作っては壊しを繰り返し、そのたびに参考になるサイトを見ていたのですが、これも面倒になりました。こういう場合はプロビジョニングツールが便利なのでしょうが、それも利用者に知識の負担とインストールの手間をかけてしまいます。そこで、手順をテキストエディターにまとめていたものを公開します。

これなら、何をしているかは一目瞭然です。手間もかかりません。

利用法

Amazon Linux(64ビット)のインスタンスを生成し、SSHでつないだら、以下のコードを一つ一つ叩くか、もしくはまとめてコピペし、端末に流し込みましょう。インスタンス作成の際は、セキュリティー(ポートの解放)で、SSH(22)とHTTP(80)を開いておくのを忘れずに!

後は、終了するまで(2分ほど)待てば、完成です。

そのインスタンスのパブリックDNSへアクセスすれば、おなじみのLaravelロゴのでもページが表示されます。/phpmyadminにアクセスすれば、PHPMyAdminも利用できます。ユーザーとパスワードは両方共にrootです。テーブルを作成し、指定すればすぐにMySQLが利用できますよ。ドキュメントルートは、/var/www/html/public、Laravelのインストールディレクトリーはその下の/var/www/htmlです。

実行が終わったら、一度SSHを切断し、再度接続して下さい。ec2-userのグループに追加したwwwを反映させるためです。



# 最初にインストール済みパッケージの更新(重要) sudo yum -y update # デフォルトではなく、PHP5.4とApach2.4をインストール # yum list php54*で表示されるパッケージを確認し、必要に応じて他のパッケージも導入して下さい。お好みであれば、PHP5.5もあります。 sudo yum install -y php54 httpd24 php54-mbstring php54-mcrypt php54-mysql php54-pdo php54-pecl-ssh2 git # Composerのインストール curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer # Laravelインストーラー(日本語+機能拡張版)のインストール(http://kore1server.com/232) wget http://laravel4.qanxen.info/laravelja.phar sudo chmod a+x laravelja.phar sudo mv laravelja.phar /usr/local/bin/laravel # 上記インストーラーのLaravel設定項目置き換えの指定 cat <<EOF > .laravel.install.conf.php <?php return array( 'app/config/app.php' => array( 'locale' => 'ja', ), 'app/config/database.php' => array( 'user' => 'root', 'password' => 'root', ), 'bootstrap/start.php' => array( 'local' => "array('".gethostname()."')" ) ); EOF # ドキュメントルートをApacheとec2-userから、読み書きできるようにグループwwwを作成し、ユーザーapacheとec2-userを所属させる sudo groupadd www sudo usermod -a -G www ec2-user sudo usermod -a -G www apache # /var/www下をwwwグループの所有にする sudo chown -R ec2-user:www /var/www sudo chmod 2775 /var/www find /var/www -type d -exec sudo chmod 2775 {} + find /var/www -type f -exec sudo chmod 0664 {} + # Laravelオリジナル英語版をインストール laravel new tmp cd tmp chmod -R 775 app/storage sudo mv * /var/www/html cd rm -R tmp sudo chown -R ec2-user:www /var/www/html sudo chmod 2775 /var/www/html # PHPMyAdminのインストール(/phpmyadminへアクセス、ユーザー名root、パスワードrootでログイン。MySQLの設定は安全を考慮していない。実用には調節が必要。) wget http://jaist.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.1.3/phpMyAdmin-4.1.3-all-languages.tar.bz2 tar -jxf phpMyAdmin* rm -rf *.tar.bz2 sudo mv phpMyAdmin* /var/www/html/phpmyadmin # Apache設定ファイルの書き換え cat <<EOF > tmp.sed s+DirectoryIndex index.html+DirectoryIndex index.php index.html+ s+DocumentRoot "/var/www/html"+DocumentRoot "/var/www/html/public"+ s+<Directory "/var/www/html">+<Directory "/var/www/html/public">+ /<Directory "\/var\/www\/html\/public">/,/<\/Directory>/ s+AllowOverride None+AllowOverride All+ $ a Alias /phpmyadmin /var/www/html/phpmyadmin EOF sudo sed -i -f tmp.sed /etc/httpd/conf/httpd.conf rm tmp.sed # Apache起動 sudo service httpd start # ブートするごとにApcheが起動するように設定 sudo chkconfig httpd on # MySQLのインストール sudo yum groupinstall -y "MySQL Database" # MySQLの起動 sudo service mysqld start # ブートごとに、自動起動するように設定 sudo chkconfig mysqld on # rootパスワードを'root'に設定 mysqladmin -u root password "root" echo ec2-userのwwwグループを有効にするために、一度ログアウトし、再度SSH接続して下さい。

お手軽に試したり、ちょっと調べたい場合にご利用下さい。本格的に利用するには、手を入れる必要があります。(本格的に利用したい人ならば、自分でセットアップできるでしょうから、この記事は余り役に立ちそうもありませんね。:D)