1年間なら300ドル分のクレジットもある。
表題
GCP上に仮想マシンを立ち上げる
コンソールへログイン。
https://console.cloud.google.com
メニュー
→ Compute Engine
→ VM インスタンス
作成
リージョンは日本だと無料にならないらしい。
マシンタイプをf1-micro
ブートディスクをCentOs 7に変更する(何でもいいが手順が微妙に異なる)
ファイアウォールの HTTP トラフィックを許可する にチェックを入れる。
作成
インスタンスが作成されるまで数分程度かかる。
仮想マシンへSSH接続
キーペアを作る
https://qiita.com/rog-works/items/74402f09b5aecc73f823#ssh%E6%8E%A5%E7%B6%9A
ブラウザからSSH接続
今回はブラウザからSSH接続して操作する。
SSHをクリック。
プロジェクトをアップロード
すでにLaravel Projectが存在することを想定している。
SSHウィンドウの右上の歯車→ファイルアップロード
ホームディレクトリにアップロードされる(結構遅い)
事前にstorage/framework 以下は削除しておくこと。
プロジェクトは圧縮する(node_modules以下は削除推奨)
新規プロジェクトの場合はホームディレクトリで
composer create-project "laravel/laravel=5.8.*" code --prefer-dist
phpのインストールに加えてcomposerとgitの追加インストールが必要。
https://qiita.com/inakadegaebal/items/d370bcb1627fce2b5cd1
以下新規プロジェクトを作成する手順
f1-micro だとメモリが足りない。
cd ~
sudo yum -y install git
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
rm composer-setup.php
sudo mv composer.phar /usr/local/bin/composer
cd /var/www/
composer create-project "laravel/laravel=5.8.*" [project] --prefer-dist
sudo yum -y install git
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
rm composer-setup.php
sudo mv composer.phar /usr/local/bin/composer
cd /var/www/
composer create-project "laravel/laravel=5.8.*" [project] --prefer-dist
アップロードに少し時間がかかるのでもう一度SSHをクリックして別ウィンドウで作業をおこなう。
NGINXインストール
以下のコマンドを順に
sudo tee /etc/yum.repos.d/nginx.repo << 'EOS'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
EOS
sudo yum install nginx
全部y(es).
失敗したらリトライしてみる。
バージョンの確認
nginx -v
起動
sudo systemctl start nginx
VMインスタンスの外部IPをクリックして見慣れた画面が出てきたらNGINXインストール完了。
クリックできない場合HTTPを許可していない。vmクリック → 編集から設定できる。
NGINXでPHPが動作するか確認する
簡単な表示ができるか確認する。
NGINXの設定ファイルを変更する
以下を参考に
https://readouble.com/laravel/5.8/ja/deployment.html
sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
/etc/nginx/conf.d/*.conf は全て読み込まれる('.conf.bakは読み込まれない)
/etc/nginx/nginx.confに記述がある。
sudo vi /etc/nginx/conf.d/default.conf
以下を書き換え
以降[project]は任意のディレクトリに置き換える。
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
↓
location / {
root /var/www/[project]/public;
index index.php index.html index.htm;
}
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
↓
location ~ \.php$ {
root /var/www/[project]/public;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/[project]/public$fastcgi_script_name;
include fastcgi_params;
}
root /usr/share/nginx/html;
index index.html index.htm;
}
↓
location / {
root /var/www/[project]/public;
index index.php index.html index.htm;
}
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
↓
location ~ \.php$ {
root /var/www/[project]/public;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/[project]/public$fastcgi_script_name;
include fastcgi_params;
}
viエディタについて
i 挿入モードに変更
Ctrl + [ 挿入モードを終了
Shift + ZZ 保存してviエディタ終了
q! 保存せずにviエディタ終了
rootはプロジェクトを配置するディレクトリを指定する。
今回は/var/www/[project]/publicに配置する。
ユーザディレクトリ以下はうまくいかなかった(やりたいならリンクを貼るなどの工夫が必要)
アクセスログ、エラーページの設定などもこのファイルでおこなう。
nginx再起動
sudo service nginx restart
php-fpm起動
sudo service php-fpm start
PHPの動作を確認する
プロジェクトをアップロード(作成)済みのこと。
sudo mkdir /var/www/[project]
sudo mkdir /var/www/[project]/public
cd /var/www/[project]/public
sudo tee /var/www/webedi/public/index.php << 'EOS' <?php phpinfo(); EOS
sudo mkdir /var/www/[project]/public
cd /var/www/[project]/public
sudo tee /var/www/webedi/public/index.php << 'EOS' <?php phpinfo(); EOS
外部IPにアクセスして確認できればOK.
Laravelのプロジェクトが動作するように設定する
プロジェクトのアップロードが完了していること。
centosだとunzipが入っていない(gzipはある)ので必要に応じてインストール。
sudo yum install unzip
cd ~
unzip [project].zip
unzip [project].zip
解凍したプロジェクトを移動する。リンクを貼るやり方もあると思うがうまくいかなかった。
sudo rm -rf /var/www/[project]
sudo mv ~/[project] /var/www/[project]
sudo chown -R nginx:nginx /var/www/[project]
sudo mv ~/[project] /var/www/[project]
sudo chown -R nginx:nginx /var/www/[project]
MySQLインストール
sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
インストール
sudo yum install mysql-community-server
すべてy(es)
たまに失敗する。
確認
mysqld --version
起動
sudo systemctl start mysqld.service
パスワード確認
sudo cat /var/log/mysqld.log | grep password
2019-08-27T06:39:52.963218Z 1 [Note] A temporary password is generated for root@localhost: XXXXXXf8qdD;
2019-08-27T06:39:52.963218Z 1 [Note] A temporary password is generated for root@localhost: XXXXXXf8qdD;
id/pass
root@localhost/XXXXXXf8qdD;
mysqlのパスワードを変更
初回パスワードログイン。
mysql -u root -p
XXXXXXf8qdD;
XXXXXXf8qdD;
ログイン後操作するためにはパスワードを変更しないといけない。
set password for root@localhost=password('Laravel5.7_deploy_test_p@ssword');
パスワードは大文字、数字、記号含む必要あり。
データベースを作成する必要がある。
Create database [dbname];
exit;
exit;
.envの設定を変更する。
開発環境と同じなら不要(推奨されない)
sudo vi /var/www/[project].env
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
DB_USERNAME=homestead
DB_PASSWORD=secret
を書き換える。
DB_DATABASE=[dbname]
DB_USERNAME=root
DB_PASSWORD=Laravel5.7_deploy_test_p@ssword
DB_USERNAME=root
DB_PASSWORD=Laravel5.7_deploy_test_p@ssword
マイグレーションをおこなう。
cd /var/www/[project]
php artisan migrate
php artisan migrate
Laravelのマイグレーション機能を使用していない場合は自前でテーブルを作成する。
必要に応じてデータ投入。
SELinux 無効化
無効化しないと動作しない。
sudo setenforce 0
エラー対応
権限周りでどうしてもエラーになる。
sudo chmod 777 /var/www/[project]/storage/logs
sudo chmod 777 /var/www/[project]/storage/framework/views/
sudo chmod 777 /var/www/[project]/storage/framework/views/
自動起動設定
sudo chkconfig nginx on
sudo chkconfig php-fpm on
sudo systemctl enable mysqld.service
sudo chkconfig php-fpm on
sudo systemctl enable mysqld.service
各種設定やデプロイの自動化などやらないといけないことがまだまだある。
特にセキュリティ周りが激甘すぎるのでこのままでは使用に耐えない。
参考
NGINXインストール
https://qiita.com/tomy0610/items/0884c77f1ac52957fa96
GCP
https://qiita.com/ndxbn/items/7ef0a96e409a5b5837bd
その他情報
https://qiita.com/nobu666/items/891705a4d34c91232ec1
https://qiita.com/mofmofneko/items/bf003d14670644dd6197
https://qiita.com/yumatsud/items/7093fc9b389070ddecd1
https://readouble.com/laravel/5.8/ja/deployment.html