以前、Cloud9にPHP7を入れてLaravelの開発環境を自動構築するシェルスクリプトを作成しましたが、今回はそれを大幅アップグレードしました!
大まかに以下の3つの機能を加えてます。
- MySQL 5.5から5.7へアップグレード
- Laravel認証機能の構築
- ドキュメントルートの設定
MySQL 5.7.xへアップグレード
Cloud9に最初から入っているMySQLのバージョンは5.5です。
MySQL 5.5のままでいいじゃん。と思うかもしれませんが、Laravel 5.5ではこれがちょっとした曲者。
Laravel 5.4以降は標準charaseがutf8mb4に変わったらしく、php artisan migrateをするとエラーになるのです。
もちろん対処法はあるので、後で手動で書くか、後に紹介するドキュメントルートの設定のように当スクリプトで差し込もうかと思いましたが、どうせなら新しいMySQLを入れてしまいます。
リポジトリを追加
ここから最新のを探してきて、スクリプト内のmysql_apt_deb_fileにコピペします。
Cloud9はUbuntuで動いているのでこんな感じで書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
... # Copy filename from mysql_apt_deb_file=mysql-apt-config_0.8.9-1_all.deb# Add MySQL 5.7.x Repository curl -LO http://repo.mysql.com/${mysql_apt_deb_file} 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をインストール
インストールした後、起動までしておきます。
1 2 3 4 5 6 |
... # 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のデフォルトです。
1 2 |
mysql-ctl start mysql -u root -e "create user homestead;create database homestead;grant all on homestead.* to homestead@localhost identified by 'secret';" |
参考サイト
このサイトの通りにするとアップグレードはできるのですが、ウィザード形式で手動インストールすることになります。
どうしても自動にしたかったので以下を参考にしました。
詳しいソースはこちらです。
あと余談ですが、sudo apt-get ~をする時にYesかNoか尋ねられることがあって、入力するまで先に進まなくなるので、[-y]オプションを追加しています。
Laravel5.5の認証機能
これは特に書くことはありません。
ドキュメントにある通り、Artisanコマンドを実行するだけです。
1 2 3 4 5 |
... # Authentication and Migration php artisan make:auth php artisan migrate ... |
ドキュメントルートの設定
最後にドキュメントルートを変更して完成です。
以前と同じように直接Cloud9.confのファイルを変更しようか迷いましたが、.haccessのRewriteで対処することにしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
... # 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 ... |
メッセージの日本語化
日本人なので、ちゃっかり日本語化も対応。
1 2 3 4 5 6 |
... # Change Locale Japanese git clone https://github.com/minoryorg/laravel-resources-lang-ja.git mv laravel-resources-lang-ja/resources/lang/* ./resources/lang/ sed -i -e "s|'locale' => 'en',|'locale' => 'ja',|g" config/app.php ... |
以上、いかがでしたでしょうか?
ここまですると、煩わしい環境構築作業から開放され、誰でもLaravel 5.5を自動で動かすことができますね。
出来上がったソースはGitHubにmasterとして置いておきます。
コメント