概要
前回の記事で作成したアプリをLAMP環境へデプロイしてみました。
前提条件
以下の環境を構築したVPSや仮想マシンを前提にLaravel9で作成したアプリをデプロイします。LAMP環境の構築やセキュリティなどの設定は各自で行ってください。Laravel9の動作にはPHPのバージョン8以上が必要です。
Ubuntu v22.04.1
Apache v2.4.52
MariaDB
PHP v8.1.2
こちらの記事でLAMP環境を構築しています。
データベースの作成
新しいデータベースとユーザーを作成し、新しく作成したユーザーに権限を与えます。
下記のコマンドでroot権限に昇格します。
| 1 | sudo su | 
mysqlに接続します。
| 1 | mysql | 
新しいデータベースを作成します。構文は以下になります。
CREATE DATABASE [データベース名];
※[]内を任意で変更してください。
| 1 | CREATE DATABASE laravel; | 
新しいユーザーを作成します。
CREATE USER [ユーザー名]@localhost IDENTIFIED BY ‘[パスワード]’;
| 1 | CREATE USER laravel@localhost IDENTIFIED BY '********'; | 
新しく作成したユーザーに権限を付与します。
GRANT ALL ON [データベース名].* TO [ユーザー名]@localhost;
| 1 | GRANT ALL ON laravel.* TO laravel@localhost; | 
権限を付与したらリロードをします。
| 1 | FLUSH PRIVILEGES; | 
MariaDBサーバーの接続を終了します。
| 1 | exit | 
一般ユーザに変更します。
| 1 | exit | 
PHPの拡張モジュールとComposerのインストール
Laravel9を動作させるために必要なPHP拡張機能とパッケージ管理システムのComposerをWebサーバーに用意します。以下は必要なPHP拡張機能です。
- BCMath PHP拡張
- Ctype PHP拡張
- cURL PHP拡張
- DOM PHP拡張
- Fileinfo PHP拡張
- JSON PHP拡張
- Mbstring PHP拡張
- OpenSSL PHP拡張
- PCRE PHP拡張
- PDO PHP拡張
- Tokenizer PHP拡張
- XML PHP拡張
phpにインストールされている拡張モジュール一覧を取得。
| 1 | php -m | 
不足している拡張モジュールとmysqlの接続に必要なphp-mysqlモジュールをインストール。
| 1 | sudo apt install -y php-bcmath php-curl php-mbstring php-xml php-mysql | 
Composerをインストール。
| 1 | sudo apt install composer | 
GitHubからプロジェクトをクローンとLaraveの設定
任意のディレクトリ(今回はドキュメントルートの一つ上の階層にしました。)にLaravelで作成したプロジェクトをGitHubからクローンをしてプロジェクトに必要なライブラリをComposerでインストールします。その後.envファイルを作成し、データベースの設定を行います。
ドキュメントルートの一つ上の階層に移動。
| 1 | cd /var/www | 
プロジェクトをGitHubからクローン。
git clone [リポジトリのパス]
| 1 | sudo git clone https://github.com/bubudoufu/laravel9-CRUD.git | 
プロジェクトのディレクトリへ移動。
| 1 | cd laravel9-CRUD | 
プロジェクトで必要とするライブラリをインストール。
| 1 | sudo composer install | 
Laravelの設定に使用する.envファイルを生成。
| 1 2 | sudo cp .env.example .env sudo php artisan key:generate | 
.envファイルを開く。
| 1 | sudo nano .env | 
デバックモードをOFFにする。
| 1 | APP_DEBUG=false | 
データベースの設定をする。
| 1 2 3 4 5 6 | DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel DB_PASSWORD=******** | 
artisanコマンドを使用してテーブを作成。
| 1 | php artisan migrate | 
Apacheの設定
ドキュメントルートにプロジェクトを公開する為の設定を行っていきます。.htaccessを有効にする為に設定ファイルに追記とmod_rewriteの有効化を行います。storageディレクトリ以下のファイルにApacheが書き込みできるように権限を付与し、ドキュメントルートに公開するpublicディレクトリのシンボリックリンクを貼ります。最後に設定を有効化するためにApacheを再起動します。
設定ファイルを開く。
| 1 | sudo nano /etc/apache2/sites-available/000-default.conf | 
14行目から16行目を追記。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <VirtualHost *:80>         # The ServerName directive sets the request scheme, hostname and port that         # the server uses to identify itself. This is used when creating         # redirection URLs. In the context of virtual hosts, the ServerName         # specifies what hostname must appear in the request's Host: header to         # match this virtual host. For the default virtual host (this file) this         # value is not decisive as it is used as a last resort host regardless.         # However, you must set it for any further virtual host explicitly.         #ServerName www.example.com         ServerAdmin webmaster@localhost         DocumentRoot /var/www/html <Directory /var/www/html>     Allowoverride All </Directory>         # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,         # error, crit, alert, emerg.         # It is also possible to configure the loglevel for particular         # modules, e.g.         #LogLevel info ssl:warn         ErrorLog ${APACHE_LOG_DIR}/error.log         CustomLog ${APACHE_LOG_DIR}/access.log combined         # For most configuration files from conf-available/, which are         # enabled or disabled at a global level, it is possible to         # include a line for only one particular virtual host. For example the         # following line enables the CGI configuration for this host only         # after it has been globally disabled with "a2disconf".         #Include conf-available/serve-cgi-bin.conf </VirtualHost> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet | 
mod_rewriteの有効化。
| 1 2 | sudo a2enmod rewrite sudo systemctl restart apache2 | 
Apacheにstorageディレクトリ以下の書き込み権限を与える。
| 1 | sudo chown -R www-data:www-data storage | 
ドキュメントルートにシンボリックリンクを貼る。
ln -s [リンク元] [リンク名]
| 1 | sudo ln -s /var/www/laravel9-CRUD/public /var/www/html/laravel9-CRUD | 
設定を有効にするためにApacheを再起動。
| 1 | sudo service apache2 restart | 
以下にアクセスするとアプリが表示されます。
http://[ipアドレス or ドメインネーム]/laravel9-CRUD/products
最後までお読みいただきありがとうございました。
