LoginSignup
1
0

More than 1 year has passed since last update.

[Laravel-adminを導入しよう!その3] CentOS Stream8にLaravel9(PHP8、Nginx、MariaDB)をインストールする

Last updated at Posted at 2022-04-25
  1. [Laravel-adminを導入しよう!その1] ConoHa VPSにCentOS Stream8をインストールしVSCodeでSSH接続できるようにする - Qiita
  2. [Laravel-adminを導入しよう!その2] CentOS Stream8にNginx、PHPをインストールする - Qiita
  3. [Laravel-adminを導入しよう!その3] CentOS Stream8にLaravel9(PHP8、Nginx、MariaDB)をインストールする - Qiita ←本記事
  4. [Laravel-adminを導入しよう!その4] [CentOS Stream8 & Nginx] 無料のSSL証明書「Let's Encrypt」でSSL化する - Qiita
  5. [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エラーになってしまうので、
公開ディレクトリに関する記述等を書き換えます。
下記サイトが参考になりました。

/etc/nginx/conf.d/default.conf
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

動作確認

ブラウザでドメインにアクセスし下記画面が表示されたらインストールは成功です。
image.png

参考サイト

CentOS+NginxでLaravelを動かすまで(サーバー構築) | Reuhul tech memo
Composer
nginx + Laravel でホーム以外のページの404エラー解決 - Qiita
Laravelプロジェクトを本番サーバーで公開する時、Permission deniedでハマったら - バックエンドとフロントエンドを行き来するWEBプログラマ―のメモ帳
CentOS/Apache/Laravel使用時のpermission設定方法 - Qiita

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0