LaravelアプリケーションをUbuntuのLEMPスタック上でNginxサーバーとともに設定し、動作させる方法について、詳細かつ包括的に説明します。LEMPスタックはLinux(Ubuntu)、Nginx、MySQL(またはMariaDB)、PHPを組み合わせた環境です。この記事では、LaravelのインストールとNginxの設定を含む、開発から本番環境での運用までの手順を順を追って解説します。
前提条件
- Ubuntu 20.04以上のサーバー
- サーバーにSSHでアクセス可能
- サーバーにsudo権限があるユーザーが設定済み
- Nginx、PHP、MySQL/MariaDBがインストールされている
- Composerがインストールされている
ステップ 1: サーバー環境の準備
まず、サーバー上で必要なソフトウェアをインストールします。
1.1 Nginxのインストール
まず、Nginxをインストールします。
bashsudo apt update sudo apt install nginx
インストールが完了したら、Nginxが自動的に起動しているか確認します。
bashsudo systemctl status nginx
Nginxが正常に動作していれば、「active (running)」と表示されます。
1.2 PHPと必要なモジュールのインストール
LaravelはPHPで動作するため、PHPと必要なモジュールをインストールします。
bashsudo apt install php-fpm php-mysql php-xml php-mbstring php-curl php-zip php-bcmath
インストールが完了したら、PHP-FPMが動作しているか確認します。
bashsudo systemctl status php7.4-fpm
「active (running)」と表示されていれば、PHP-FPMは正常に動作しています。
1.3 MySQL(またはMariaDB)のインストール
MySQLまたはMariaDBをインストールして、データベースの準備をします。
bashsudo apt install mysql-server
MySQLがインストールされたら、設定を開始します。
bashsudo mysql_secure_installation
必要な設定を行った後、データベースにLaravel用のデータベースを作成します。
bashsudo mysql -u root -p
MySQLのコマンドラインで以下のコマンドを実行して、データベースを作成します。
sqlCREATE DATABASE laravel_db;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
ステップ 2: Laravelのインストール
2.1 Composerのインストール
LaravelのインストールにはComposerが必要です。もしComposerがインストールされていない場合は、以下のコマンドでインストールします。
bashsudo apt install composer
インストール後、Composerが正常にインストールされているか確認します。
bashcomposer --version
2.2 Laravelのインストール
Composerを使用して、Laravelをインストールします。作業ディレクトリを移動し、Laravelをインストールします。
bashcd /var/www
composer create-project --prefer-dist laravel/laravel laravel-app
これにより、laravel-appというディレクトリにLaravelがインストールされます。
2.3 ディレクトリの権限設定
インストールしたLaravelアプリケーションには、書き込み権限が必要なディレクトリがあります。適切な権限を設定するため、次のコマンドを実行します。
bashsudo chown -R www-data:www-data /var/www/laravel-app
sudo chmod -R 775 /var/www/laravel-app/storage /var/www/laravel-app/bootstrap/cache
ステップ 3: Nginxの設定
3.1 Nginxの設定ファイルを作成
LaravelをNginxで動作させるために、Nginxの設定ファイルを作成します。
bashsudo nano /etc/nginx/sites-available/laravel-app
設定ファイルに以下の内容を記述します。
nginxserver {
listen 80;
server_name example.com;
root /var/www/laravel-app/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
error_log /var/log/nginx/laravel-app_error.log;
access_log /var/log/nginx/laravel-app_access.log;
}
この設定では、example.comというドメインでアクセスされるように設定されています。適切なドメイン名に変更してください。
3.2 サイトの有効化
設定ファイルをsites-enabledディレクトリにリンクします。
bashsudo ln -s /etc/nginx/sites-available/laravel-app /etc/nginx/sites-enabled/
3.3 Nginxの設定をテスト
Nginxの設定に問題がないかをテストします。
bashsudo nginx -t
エラーがなければ、Nginxを再起動して設定を反映させます。
bashsudo systemctl restart nginx
ステップ 4: Laravelの環境設定
4.1 .envファイルの設定
Laravelアプリケーションの環境設定ファイル(.env)を編集して、データベースの設定を行います。
bashcd /var/www/laravel-app
nano .env
以下のように、データベース接続の設定を変更します。
iniDB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=your_password
4.2 アプリケーションキーの生成
Laravelアプリケーションにはセキュリティ用のアプリケーションキーが必要です。以下のコマンドでキーを生成します。
bashphp artisan key:generate
これにより、.envファイルにアプリケーションキーが自動的に追加されます。
ステップ 5: ファイアウォールの設定
もしUFW(Uncomplicated Firewall)を使用している場合は、HTTPとHTTPSのポートを開放します。
bashsudo ufw allow 'Nginx Full'
ステップ 6: 動作確認
ブラウザを開き、設定したドメイン(またはサーバーのIPアドレス)にアクセスします。Laravelのウェルカムページが表示されれば、設定は正常に完了しています。
arduinohttp://your_server_ip
結論
以上の手順で、UbuntuのLEMPスタック上にLaravelをインストールし、Nginxで動作させることができました。この設定をもとに、さらにセキュリティやパフォーマンスの最適化を行い、本番環境での運用に向けた準備が整いました。
