この記事では、さくらVPS上のCentOS 9でnginxを使用し、Laravelのsailを使ってDockerコンテナ上で稼働するアプリケーションにドメインを割り当てる方法を説明します。
仕様
- VPS: さくらVPS
- Webサーバー: nginx
- フレームワーク: Laravel (sailを使用)
- OS: CentOS 9
nginxをインストール
まず、nginxをインストールします。CentOS 9では、以下のコマンドでインストールできます。
sudo dnf install epel-release
sudo dnf install nginx
インストールが完了したら、nginxを起動し、自動起動設定を有効にします。
sudo systemctl start nginx
sudo systemctl enable nginx
Dockerをインストール
Laravelのsailを使用するには、Dockerが必要です。Dockerをインストールするには、以下のコマンドを実行します。
まず、Dockerのリポジトリを追加します。
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
次に、Dockerをインストールします。
sudo dnf install docker-ce --nobest -y
インストールが完了したら、Dockerを起動し、自動起動設定を有効にします。
sudo systemctl start docker
sudo systemctl enable docker
Laravelをインストール
次に、Laravelをインストールします。以下のコマンドを実行してLaravelをインストールし、ディレクトリに移動します。
curl -s https://laravel.build/example-app | bash
cd example-app
docker-compose.ymlのコンテナの80番ポートを変更
Laravelをインストールしてデフォルトで入っているdocker-compose.ymlは80番です。80番はnginxで使用するので、別のポート番号にしてあげましょう。別のポート番号にしない場合、nginxが起動しませんのでご注意。
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.0/app
ports:
- '8080:80' # ここを変更
sail upでLaravelを起動
Laravelのsailを使ってDockerコンテナを起動します。
./vendor/bin/sail up
取得したドメインをnginxのconf.dで設定
最後に、取得したドメインをnginxの設定ファイルで設定します。/etc/nginx/conf.dディレクトリに新しい設定ファイルを作成し、以下の内容を記述します。ポートは8080に設定しています。
例:/etc/nginx/conf.d/example.conf
server {
listen 80;
server_name example.com; # ここにドメイン名を入力
location / {
proxy_pass http://localhost:8080; # Dockerコンテナ上のLaravelアプリケーションへのリバースプロキシ設定
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
設定ファイルを保存した後、nginxの設定をリロードして変更を適用します。
sudo systemctl reload nginx
これで、ホストのnginxを使ってドメインがDockerのlocalhostのポートに割り当てられました。ブラウザでドメインを開いて、Laravelアプリケーションが表示されることを確認してください。