以前、Cloud9にPHP7を入れてLaravel 5.5の開発環境を自動構築するシェルスクリプトを作成しましたが、今回はそれを大幅アップグレードしました!
大まかに以下の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 :: Download MySQL APT Repositoryここから最新のを探してきて、スクリプト内のmysql_apt_deb_fileにコピペします。
Cloud9はUbuntuで動いているのでこんな感じで書きます。
...
# 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 ~をする時にYesかNoか尋ねられることがあって、入力するまで先に進まなくなるので、[-y]オプションを追加しています。
Laravel5.5の認証機能
これは特に書くことはありません。
ドキュメントにある通り、Artisanコマンドを実行するだけです。
...
# Authentication and Migration
php artisan make:auth
php artisan migrate
...
ドキュメントルートの設定
最後にドキュメントルートを変更して完成です。
以前と同じように直接Cloud9の.confファイルを変更しようか迷いましたが、.haccessのRewriteで対処することにしました。
...
# Change DocumentRoot
sed -e "s/workspace/workspace/public/g" /etc/apache2/sites-enabled/001-cloud9.conf
# Change DocumentRoot
cat > .htaccess
メッセージの日本語化
日本人なので、ちゃっかり日本語化も対応。
...
# 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を自動で動かすことができますね。
出来上がったソースはGitHubにmasterとして置いておきます。 minoryorg/laravel-cloud9: Shell script for running "Laravel" with "Cloud 9" (Automatically installing PHP7 + Composer + Laravel)
- Original:https://minory.org/cloud9-mysql57.html
- Source:Minory
- Author:管理者