LoginSignup
3
1

Google Compute Engine(GCE)にLaravel10をデプロイする

Last updated at Posted at 2023-06-07

いつもEC2を使っているエンジニアなのですが、GCPを最近使う機会が増え、今回はLaravelをGCEにデプロイすることとなりました。

色々と忘れてしまうので備忘録として残しておきたいと思います。

Compute Engineを作成する

コンソールからCompute Engineを作成しましょう。ここは特に細かく話さないのでスルーしようかと思います。

作成後はgcloudコマンドでSSH接続します。

gcloud compute ssh --project [プロジェクト名] --zone [ゾーン名] [インスタンス名]

時刻を日本時間に変更する。

timedatectl set-timezone Asia/Tokyo
date

PHPのインストール

Laravel10はPHP8.1以上が必要なのですが、ローカルでの開発ではphp8.2のDockerイメージを使っていたので、今回はPHP8.2をインストールしていきたいと思います。

# アップデート
sudo apt update
sudo apt -y upgrade

# PHPパッケージのaptリポジトリをDebianサーバに追加する
sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
sudo apt update

# インストール
sudo apt-get install php8.2 php-pear
sudo apt-get install libapache2-mod-php8.2 php8.2-xml php8.2-gd php8.2-opcache php8.2-mbstring php8.2-curl zip unzip php8.2-zip php8.2-mysql

# バージョン確認
php -v

composerの導入

公式サイトの指示通り導入する。

# ハッシュ値が変わるので詳細コマンドは公式サイトを確認ください
# 今回は2.5.7を導入
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

# /binに移動
sudo mv composer.phar /bin/composer
composer --version

Gitの導入

sudo apt-get -y install git
git --version

Apacheの導入

sudo apt-get -y install apache2
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
sudo systemctl restart apache2

この状態でインスタンスの外部IPアドレスを叩いてApacheのデフォルトページが表示されるか確認しましょう。この時HTTPSではなくHTTP接続して確認してください。

ちなみにコンソールのVMインスタンスの一覧から外部IPのリンクを押すとHTTPSアクセスして「このサイトにアクセスできません」と表示されてしまう罠があるので気をつけましょう。

HTTPアクセスしても表示できない場合、VMインスタンスのVPCのファイアーウォール設定で0.0.0.0/0からの80番ポートを許可するルールがない可能性があるので、アクセスできない場合は確認してみてください。

Laravelの導入

# var/www/html内の所持者を変更
sudo chown -R ユーザー名 /var/www/html

# Gitからクローンする
cd /var/www/html
git clone https://github.com/ユーザー名/リポジトリ名.git

# 権限周り
sudo chgrp -R www-data /var/www/html/プロジェクト名
sudo chmod -R 775 /var/www/html/プロジェクト名/storage

# .envの作成
vi .env

# その他色々
php artisan key:generate
composer install
php artisan migrate

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

cd /etc/apache2/sites-available
sudo vi 任意の名前.conf

新しく作成したconfファイルの中身は下記

任意の名前.conf
<VirtualHost *:80>
    ServerName 使用するサーバー名(なければプロジェクト名).com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/プロジェクト名/public

    <Directory /var/www/html/プロジェクト名>
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

適用

sudo a2dissite 000-default.conf
sudo a2ensite 任意の名前.conf
sudo a2enmod rewrite
sudo service apache2 restart

外部IPアドレスに接続して表示されれば完了です!!

追加の設定その① SSL化

Let's EncryptでSSL化します。

sudo apt install certbot python3-certbot-apache
sudo certbot --apache

参考記事

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1