概要
前回の記事で作成したアプリを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
最後までお読みいただきありがとうございました。