- [Laravel-adminを導入しよう!その1] ConoHa VPSにCentOS Stream8をインストールしVSCodeでSSH接続できるようにする - Qiita
- [Laravel-adminを導入しよう!その2] CentOS Stream8にNginx、PHPをインストールする - Qiita
- [Laravel-adminを導入しよう!その3] CentOS Stream8にLaravel9(PHP8、Nginx、MariaDB)をインストールする - Qiita ←本記事
- [Laravel-adminを導入しよう!その4] [CentOS Stream8 & Nginx] 無料のSSL証明書「Let's Encrypt」でSSL化する - Qiita
- [Laravel-adminを導入しよう!その5] Laravel-adminをインストールしSSL化する - Qiita
サーバー構成
OS: CentOS Stream8
Nginx: 1.20.2
PHP: 8.1.5
MariaDB: 10.3.28
Laravel: 9.9.0
概要
本シリーズは、VPS上に構築したCentOSに、IT資産管理ツールを構築することを最終目的としています。
IT資産管理ツールのUIは、Laravelの管理画面ライブラリである「Laravel-admin」を使用する予定です。
前回の記事では、NginxとPHPのインストールをしました。
今回は、MariaDBとLaravelのインストール手順を説明していきます。
MariaDBをインストールする
MariaDBをインストール
MariaDB、Composerのインストールは下記サイトが参考になりました。
sudo dnf -y install mariadb-server
sudo systemctl enable mariadb
sudo systemctl start mariadb
# 下記コマンドを実行するとDBのセットアップが始まります。
sudo mysql_secure_installation
Enter current password for root (enter for none):
#空欄のままEnterキー
Set root password? [Y/n]
# yを押してEnter
# rootユーザーのパスワードを設定します。
# あとで使用するので控えておいてください。
あとはすべてyを押してEnterキーでOKです。
開発用データベースとユーザーの作成
MariaDBのコンソールにログインします。
mysql -u root -p
#さきほど設定したrootユーザーのパスワードを入力します。
# データベース作成(「laravel」という名前のデータベースを作成します。)
craete database laravel;
# ユーザー作成(「dev」という名前のユーザーを作成します。)
# パスワードは伏字にしています。
create user 'dev'@'localhost' identified by '********';
# データベース「laravel」へのアクセス権(全権)を付与
grant all on laravel.* to 'dev'@'localhost';
Laravelをインストールする
Composerをインストール
事前に、Composer公式サイトを参考にComposerをインストールします。
※インストールコマンドはバージョンによって異なるので必ず公式サイトを確認してください。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
chmod a+x ./composer.phar
sudo mv composer.phar /usr/local/bin/composer
rootユーザー以外で「sudo composer」を実行できるようにします。
sudo visudo
以下の項目を書き換えます。
# :/usr/local/bin を追記
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
Ecsキー→「:wq」と入力→Enterキーで上書き保存します。
Laravelをインストール(Laravelプロジェクトを作成)
本記事では、公開ディレクトリにLaravelプロジェクトを作成することにします。
# プロジェクトを作成するディレクトリに移動
cd /var/www/html/example.jp
# 「laravel-admin」という名前のプロジェクトを作成(「laravel-admin」ディレクトリが作成されます)
composer create-project laravel/laravel --prefer-dist laravel-admin
Nginxの設定を変更
このままだとトップページ以外が404エラーになってしまうので、
公開ディレクトリに関する記述等を書き換えます。
下記サイトが参考になりました。
server {
listen 80;
server_name example.jp;
root /var/www/html/example.jp/laravel-admin/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/example.jp/laravel-admin/public$fastcgi_script_name;
include fastcgi_params;
}
}
Nginxを再起動します。
sudo systemctl restart nginx
パーミッション等の設定
このままではパーミッションエラーが表示されるので各種ディレクトリのパーミッション設定を変更します。
下記サイトが参考になりました。
まず前提として、下記ユーザーが存在しています。
- dev: 開発用ユーザー(VSCodeでSSH接続しているのはこのユーザー)
- nginx: Webサーバーの実行ユーザー
下記コマンドを打ち込みます。
# Laravel用のグループを作成
sudo groupadd laravel
# 作成したグループにユーザー「dev」、「nginx」を参加させる
sudo gpasswd -a dev laravel
sudo gpasswd -a nginx laravel
# Laravelプロジェクトに移動
cd /var/www/html/example.jp/laravel-admin
# 配下のディレクトリ、ファイルのパーミッションを一括変更
sudo find ./ -type d -exec chmod 755 {} \;
sudo find ./ -type f -exec chmod 644 {} \;
# 所有グループを変更(これでエラーが修正される)
sudo chown -R :laravel ./storage
sudo chown -R :laravel ./bootstrap/cache
# 既存のディレクトリのパーミッションを一括変更
sudo find ./storage -type d -exec chmod 775 {} \;
sudo find ./storage -type f -exec chmod 664 {} \;
sudo find ./bootstrap/cache -type d -exec chmod 775 {} \;
sudo find ./bootstrap/cache -type f -exec chmod 664 {} \;
# SGIDを設定
# 今後作成されるファイルやディレクトリの所有グループがlaravelになるようにする
sudo find ./storage -type d -exec chmod g+s {} \;
sudo find ./bootstrap/cache -type d -exec chmod g+s {} \;
# ACLデフォルト設定を変更
# 今後作成されるファイルやディレクトリのパーミッションが、ファイル:664、ディレクトリ:775になる
sudo setfacl -R -d -m g::rwx ./storage
sudo setfacl -R -d -m g::rwx ./bootstrap/cache
# サーバー再起動
sudo shutdown -r now
動作確認
ブラウザでドメインにアクセスし下記画面が表示されたらインストールは成功です。
参考サイト
CentOS+NginxでLaravelを動かすまで(サーバー構築) | Reuhul tech memo
Composer
nginx + Laravel でホーム以外のページの404エラー解決 - Qiita
Laravelプロジェクトを本番サーバーで公開する時、Permission deniedでハマったら - バックエンドとフロントエンドを行き来するWEBプログラマ―のメモ帳
CentOS/Apache/Laravel使用時のpermission設定方法 - Qiita