Table of Contents
はじめに
Laravelアプリケーションのデプロイは、特にローカル開発環境から本番サーバーに移行する場合、複雑な作業になることがあります。AWS EC2は、アプリケーションをホストするための柔軟でスケーラブルなソリューションを提供します。このガイドでは、AWS EC2インスタンスにLaravelアプリケーションをデプロイするプロセスを順を追って説明します。
前提条件
始める前に、以下のものがあることを確認してください。
- AWSアカウント。
- Linuxコマンドの基本的な知識。
- デプロイ準備ができたLaravelアプリケーション(例:Gitリポジトリにプッシュ済み)。
ステップ1:EC2インスタンスの起動
- AWSマネジメントコンソールにログイン: EC2ダッシュボードに移動します。
- インスタンスの起動: 「インスタンスの起動」をクリックします。
- Amazonマシンイメージ(AMI)の選択: Ubuntu Server AMI(例:Ubuntu Server 22.04 LTS)を選択します。
- インスタンスタイプの選択: アプリケーションのニーズに基づいて適切なインスタンスタイプを選択します(例:テスト用の
t2.micro)。 - インスタンス詳細の設定: ほとんどの設定はデフォルトのままにします。「パブリックIPの自動割り当て」が有効になっていることを確認します。
- ストレージの追加: 基本的なLaravelアプリには、デフォルトのストレージ(8GB)で十分です。
- タグの追加: (オプション)
Name: LaravelAppServerなどのタグを追加します。 - セキュリティグループの設定: 新しいセキュリティグループを作成するか、既存のものを選択します。以下のポートが開いていることを確認してください。
- SSH(ポート22): インスタンスに接続するため。
- HTTP(ポート80): ウェブトラフィック用。
- HTTPS(ポート443): セキュアなウェブトラフィック用(推奨)。
- 確認と起動: 設定を確認し、「起動」をクリックします。
- 新しいキーペアの作成:
.pemファイルをダウンロードします。このキーはSSHアクセスに不可欠です。
ステップ2:EC2インスタンスへの接続
ターミナルを開き、以下のコマンドを使用してインスタンスに接続します。your-key.pemをキーペアファイルに、your-instance-ipをEC2インスタンスのパブリックIPアドレスに置き換えてください。
chmod 400 your-key.pem
ssh -i "your-key.pem" ubuntu@your-instance-ip
ステップ3:ウェブサーバー(Nginx)、PHP、Composerのインストール
接続後、パッケージリストを更新し、必要なソフトウェアをインストールします。
sudo apt update
sudo apt upgrade -y
# Nginxのインストール
sudo apt install nginx -y
# PHPと拡張機能のインストール(必要に応じてバージョンを調整、例:php8.1-fpm)
sudo apt install php8.1-fpm php8.1-mysql php8.1-mbstring php8.1-xml php8.1-bcmath php8.1-curl php8.1-zip php8.1-gd -y
# Composerのインストール
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
ステップ4:MySQLサーバーのインストール
sudo apt install mysql-server -y
sudo mysql_secure_installation
プロンプトに従ってMySQLのインストールを保護します。rootパスワードを覚えておいてください。
ステップ5:Laravelアプリケーションのデプロイ
- リポジトリのクローン:
/var/www/に移動し、Laravelプロジェクトをクローンします。
sudo mkdir -p /var/www/your-laravel-app
cd /var/www/your-laravel-app
sudo git clone https://github.com/your-username/your-laravel-app.git .
- パーミッションの設定: NginxとPHP-FPMが適切なパーミッションを持っていることを確認します。
sudo chown -R www-data:www-data /var/www/your-laravel-app
sudo chmod -R 775 /var/www/your-laravel-app/storage
sudo chmod -R 775 /var/www/your-laravel-app/bootstrap/cache
- Composer依存関係のインストール: プロジェクトルート(
/var/www/your-laravel-app)から。
composer install --no-dev --optimize-autoloader
```
4. **.envファイルの構成**: `.env.example`を`.env`にコピーし、データベースの認証情報を更新します。
```bash
sudo cp .env.example .env
sudo nano .env
```
`DB_DATABASE`、`DB_USERNAME`、`DB_PASSWORD`を更新します。
5. **アプリケーションキーの生成**:
```bash
php artisan key:generate
```
6. **マイグレーションとシーダーの実行**:
```bash
php artisan migrate --seed
```
## ステップ6:Nginxの設定
Laravelアプリケーション用の新しいNginx設定ファイルを作成します。
```bash
sudo nano /etc/nginx/sites-available/your-laravel-app
以下の内容を追加します。
server {
listen 80;
server_name your-instance-ip your-domain.com;
root /var/www/your-laravel-app/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
サイトを有効にし、Nginxを再起動します。
sudo ln -s /etc/nginx/sites-available/your-laravel-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
ステップ7:データベースの設定
MySQLに接続し、Laravelアプリケーション用のデータベースとユーザーを作成します。
sudo mysql -u root -p
CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
FLUSH PRIVILEGES;
EXIT;
これらの新しい認証情報で.envファイルを更新することを忘れないでください。
まとめ
AWS EC2インスタンスにLaravelアプリケーションを正常にデプロイしました。このガイドでは、インスタンスの起動からウェブサーバーとデータベースの設定までの重要な手順を説明しました。本番環境では、SSL、ドメイン名、およびより堅牢なセキュリティ対策の追加を検討してください。