以前、Cloud9にPHP7を入れてLaravelの開発環境を自動構築するシェルスクリプトを作成しましたが、今回はそれを大幅アップグレードしました!
大まかに以下の3つの機能を加えてます。
- MySQL 5.5から5.7へアップグレード
- Laravel認証機能の構築
- ドキュメントルートの設定
![](https://minory.org/wp-content/uploads/2017/09/cloud9-php7-1-laravel5-5-300x205.jpg)
MySQL 5.7.xへアップグレード
Cloud9に最初から入っているMySQLのバージョンは5.5です。
MySQL 5.5のままでいいじゃん。と思うかもしれませんが、Laravel 5.5ではこれがちょっとした曲者。
Laravel 5.4以降は標準charaseがutf8mb4に変わったらしく、php artisan migrateをするとエラーになるのです。
![](https://minory.org/wp-content/uploads/2017/09/laravel-migrate-error-300x225.jpg)
もちろん対処法はあるので、後で手動で書くか、後に紹介するドキュメントルートの設定のように当スクリプトで差し込もうかと思いましたが、どうせなら新しい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';" |
参考サイト
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9QVdTJTIwQ2xvdWQ5JTIwJUUzJTgxJUFFUEhQJTJGTXlTUUwlMjAlRTMlODIlOTIlMjA3LjElMkY1LjclMjAlRTMlODElQUIlRTMlODElOTclRTMlODElQTYlRTMlODElQkYlRTMlODIlOEImdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTExYjZmOTQxODVhY2ZiY2E4YzQyZTI4MzVkOWRmYzM1&mark-x=120&mark-y=96&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBrdW5pdCZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YzBmZTI4Yjg4NjBlYTEyYjA0YmY3NDNlYjFjYjNlNzc&blend-x=120&blend-y=500&blend-mode=normal&s=88aa728d13a5838ed7c807babf43da72)
このサイトの通りにするとアップグレードはできるのですが、ウィザード形式で手動インストールすることになります。
どうしても自動にしたかったので以下を参考にしました。
詳しいソースはこちらです。
あと余談ですが、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 ... |
![](https://minory.org/wp-content/uploads/2017/12/laravel-japanese-300x225.jpg)
以上、いかがでしたでしょうか?
ここまですると、煩わしい環境構築作業から開放され、誰でもLaravel 5.5を自動で動かすことができますね。
出来上がったソースはGitHubにmasterとして置いておきます。
コメント