Laravel 5.5(Cloud9)の開発環境自動構築スクリプトに3つの機能を追加!

cloud9-mysql57

以前、Cloud9PHP7を入れてLaravel 5.5開発環境自動構築するシェルスクリプトを作成しましたが、今回はそれを大幅アップグレードしました!
大まかに以下の3つの機能を加えてます。

  1. MySQL 5.5から5.7へアップグレード
  2. Laravel認証機能の構築
  3. ドキュメントルートの設定

MySQL 5.7.xへアップグレード

Cloud9に最初から入っているMySQLバージョン5.5です。
MySQL 5.5のままでいいじゃん。と思うかもしれませんが、Laravel 5.5ではこれがちょっとした曲者。
Laravel 5.4以降は標準charaseutf8mb4に変わったらしく、php artisan migrateをするとエラーになるのです。

もちろん対処法はあるので、後で手動で書くか、後に紹介するドキュメントルートの設定のように当スクリプトで差し込もうかと思いましたが、どうせなら新しいMySQLを入れてしまいます。

リポジトリを追加

MySQL :: Download MySQL APT Repositoryここから最新のを探してきて、スクリプト内のmysql_apt_deb_fileにコピペします。
Cloud9Ubuntuで動いているのでこんな感じで書きます。

...
# Copy filename from 
mysql_apt_deb_file=mysql-apt-config_0.8.9-1_all.deb# Add MySQL 5.7.x Repository
curl -LO 
echo mysql-apt-config mysql-apt-config/select-product          select Apply              | sudo debconf-set-selections
echo mysql-apt-config mysql-apt-config/select-server           select mysql-5.7          | sudo debconf-set-selections
echo mysql-apt-config mysql-apt-config/select-connector-python select none               | sudo debconf-set-selections
echo mysql-apt-config mysql-apt-config/select-workbench        select none               | sudo debconf-set-selections
echo mysql-apt-config mysql-apt-config/select-utilities        select none               | sudo debconf-set-selections
echo mysql-apt-config mysql-apt-config/select-connector-odbc   select connector-odbc-x.x | sudo debconf-set-selections
export DEBIAN_FRONTEND=noninteractive
sudo -E dpkg -i ${mysql_apt_deb_file}
...

MySQL 5.7をインストール

インストールした後、起動までしておきます。

...
# Upgrade MySQL Version 5.7.x
sudo apt-get -y install mysql-server
mysql-ctl start
sudo mysql_upgrade -u root --force --upgrade-system-tables
...

データベース構築

また、すぐ使えるようにデータベースも構築しておきます。
データベース名とユーザー名のhomesteadとパスワードのsecret.envのデフォルトです。

mysql-ctl start
mysql -u root -e "create user homestead;create database homestead;grant all on homestead.* to homestead@localhost identified by 'secret';"

参考サイト

AWS Cloud9 のPHP/MySQL を 7.1/5.7 にしてみる – Qiitaこのサイトの通りにするとアップグレードはできるのですが、ウィザード形式で手動インストールすることになります。
どうしても自動にしたかったので以下を参考にしました。
詳しいソースはこちらです。
hnakamur/noninteractive_install_mysql_from_apt_repository_to_ubuntu_trusty: Non interactive installation of MySQL from MySQL Apt repository to Ubuntu Trustyあと余談ですが、sudo apt-get ~をする時にYesNoか尋ねられることがあって、入力するまで先に進まなくなるので、[-y]オプションを追加しています。

Laravel5.5の認証機能

これは特に書くことはありません。
ドキュメントにある通り、Artisanコマンドを実行するだけです。

...
# Authentication and Migration
php artisan make:auth
php artisan migrate
...

認証 5.5 Laravel

ドキュメントルートの設定

最後にドキュメントルートを変更して完成です。
以前と同じように直接Cloud9.confファイルを変更しようか迷いましたが、.haccessRewriteで対処することにしました。

...
# Change DocumentRoot
sed -e "s/workspace/workspace/public/g" /etc/apache2/sites-enabled/001-cloud9.conf
# Change DocumentRoot
cat > .htaccess << "EOF"
RewriteEngine on
RewriteBase /
RewriteRule ^$ public/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ public/$1 [L]
EOF
...

メッセージの日本語化

日本人なので、ちゃっかり日本語化も対応。

...
# Change Locale Japanese
git clone 
mv laravel-resources-lang-ja/resources/lang/* ./resources/lang/
sed -i -e "s|'locale' => 'en',|'locale' => 'ja',|g" config/app.php
...

以上、いかがでしたでしょうか?
ここまですると、煩わしい環境構築作業から開放され、誰でもLaravel 5.5自動で動かすことができますね。
出来上がったソースはGitHubmasterとして置いておきます。 minoryorg/laravel-cloud9: Shell script for running "Laravel" with "Cloud 9" (Automatically installing PHP7 + Composer + Laravel)


Amazonベストセラー

返信を残す

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

CAPTCHA