この記事では作成したLaravelアプリケーションをXserverVPSで環境を作成して公開するっていうことをやっていきます。
- XserverVPSでサーバーを立てる
- ローカルのLaravelアプリケーションをデプロイする
Laravelアプリを公開したいと思っている方はどんな流れでできるのか参考にしてみてください。
XserverVPSでLaravelアプリケーションをデプロイする流れ
XserverVPSでLaravelアプリケーションをデプロイする流れとしては大まかに以下の方法でやります。
- XserverVPSでサーバーを立てる
- XserverVPSの環境構築をする
- XserverVPSにLaravelアプリをアップロードする
- アプリの接続情報を整える
- ブラウザからアプリケーションを確認する
それぞれ細かい構築や設定はあるけど、サーバーの環境整えてLaravelアプリアップロードすれば公開できるはず。やっていきましょう。
公開するLaravelアプリケーション
今回公開してみるのはToDoアプリ。
データベースにはMySQLを使っているので、MySQLもXserverVPSではインストールして使っていきます。
XserverVPSでサーバーを立てる
XserverVPSでまずはサーバーを立てます。今回使うプランとOSは以下。
- メモリ・・・2GB
- OS・・・Ubuntu22.04
使用するプランは自分のアプリケーションのことを考えて選択するといいでしょう。迷ったら最安の2GBにしておいて、スペックが足りなくなったらプランを変更してやるといいです。
XserverVPSで環境構築を行う
Xserver VPSでLaravelアプリケーションを公開するのに必要な環境を整えていきます。SSH接続してやっていきますが、もしSSH接続の方法が分からなければ以下の記事を参考にしてみてください。
まずはパッケージの更新を行なってから諸々インストールしていきます。
$ apt update
$ apt upgrade
Nginxのインストールと設定
Webサーバーには今回Nginxを使います。インストールして起動しておきましょう。
$ apt install nginx -y
$ systemctl start nginx
// active(runnning)ならOK
$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2022-12-25 09:53:19 JST; 5s ago
Docs: man:nginx(8)
デフォルトでは80番ポートは閉じられているので、XserverVPSの管理画面にある接続許可ポート設定のWeb(20/21/80/443)をONにします。
これでIPアドレスにブラウザからアクセスしてみるとNginxの初期ページが表示されましたね。
MySQLのインストール
データベースにはMySQLを使いたいのでインストールします。
$ apt install mysql-server
$ sudo service mysql start
$ sudo service mysql status
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2022-12-25 15:36:07 JST; 24s ago
動作を確かめるだけならやらなくてもいい気もするけど、rootのパスワード設定とユーザー作成もしておきます。
$ sudo mysql -u root -p
パスワードが求められるけど、初回は空欄でEnterで入れます。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<パスワード>';
mysql> FLUSH PRIVILEGES;
ユーザーの作成もしておきます。
mysql> CREATE USER 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';
mysql> GRANT ALL PRIVILEGES ON * . * TO 'ユーザー名'@'localhost';
mysql> FLUSH PRIVILEGES;
最後に今回Laravelアプリケーションで使用するデータベースも作成しておきましょう。
mysql> create database 〇〇;
ここで作成したデータベースをLaravelアプリケーションで使用します。
PHPをインストールする
PHPをインストールします。
$ sudo apt install -y php
$ php -v
PHP 8.1.2-1ubuntu2.9 (cli) (built: Oct 19 2022 14:58:09) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.9, Copyright (c), by Zend Technologies
他のパッケージもインストールしておきます。
$ sudo apt-get install -y php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmath
$ sudo apt install php-fpm
Composerのインストール
LaravelアプリケーションのパッケージインストールにはComposerを使うので、Composerをインストールしておきます。
ComposerはComposerの公式を参考にダウンロードします。
$ 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');"
ComposerをPHPが入っているディレクトリに移動させて権限を付与しておきましょう。
$ mv ./composer.phar $(dirname $(which php))/composer && chmod +x "$_"
$ composer --version
Composer version 2.5.1 2022-12-22 15:33:54
ローカルのLaravelアプリをXserverVPSにアップロードする
ローカルで作成したLaravelアプリケーションをXserverVPSにアップロードします。アップロードにはFTPソフトを使いましょう。
どこにアップロードするかだけど、今回は/var/www/htmlにしたいと思います。
vendorなどの不要なフォルダはアップロードしないでOKです。
アプリケーションの設定をする
公開する上で諸々必要な設定があるのでやっていきます。
composer installする
アップロードしたディレクトリに移動してcompose installします。
$ cd /var/www/html/app
$ composer install --optimize-autoloader --no-dev
Storageに権限を付与する
$ chmod -R 777 storage
.envを編集する
.envのDB接続情報を記述している欄を編集します。作成したデータベース情報に合わせましょう。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=作成したデータベース
DB_USERNAME=作成したユーザー
DB_PASSWORD=作成したパスワード
php artisan migrateする
DB接続情報を変更したのでうまくいけばデータベースへのmigrateもできるはずです。
$ php artisan migrate
INFO Preparing database.
Creating migration table ......................................... 10ms DONE
INFO Running migrations.
2014_10_12_000000_create_users_table ............................. 33ms DONE
2014_10_12_100000_create_password_resets_table ................... 11ms DONE
2019_08_19_000000_create_failed_jobs_table ....................... 50ms DONE
2019_12_14_000001_create_personal_access_tokens_table ............ 42ms DONE
2022_0926_0000000_create_todos_table .............................. 6ms DONE
これでテーブルが作成されました。
最適化を行う
設定ローディング・ルートロード・ビューロードの最適化をおこなっておきます。
$ php artisan config:cache
$ php artisan route:cache
$ php artisan view:cache
Nginxの設定ファイルを記述する
NginxからLaravelのアプリケーションに接続できるように設定ファイルを記述します。
server {
listen 80;
listen [::]:80;
server_name IPアドレス;
root /var/www/html/app/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
- server_name・・・IPアドレス
- root・・・公開したいLaravelアプリケーションのディレクトリ
- fastcgi_pass・・・fpm.sockの場所
Nginxを再起動しておきます。
$ sudo systemctl restart nginx
ブラウザからアクセスする
IPアドレスをブラウザに入力して確認します。確認してみるとちゃんと表示されました。
入力した項目もちゃんと反映されます。お疲れ様でした。
まとめ
XserverVPSでLaravelアプリケーションを公開するっていうことをやってみたけど、ちゃんと公開することができました。
やったこととしては大まかに以下です。
- XserverVPSでサーバーを立てる
- XserverVPSの環境構築をする
- XserverVPSにLaravelアプリをアップロードする
- アプリケーションの設定をする
- Nginxの設定ファイルを記述すり
- ブラウザからアプリケーションを確認する
デプロイ作業は面倒なところが多いけど無事に公開することができましたね。
Laravelアプリケーションを公開したいと思っている人はXserver VPS使ってみるといいでしょう。