目次
環境構築
環境
- CentOS Stream9
- 512MB
ssh接続
- 接続
ssh -i 1-13.pem root@IPアドレス
再構築のためホストが変わった警告がでます
- WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
- まずknown_hostsから削除(今回は再構築のため削除)します
ssh-keygen -R 160.251.234.68
権限がないためkey-pairにアクセスできない警告がでます
- WARNING: UNPROTECTED PRIVATE KEY FILE!
- 600の権限をつけておきます
chmod 600 1-13.pem
laravelプロジェクトの構築★
アプリの作成
- 自動でsqliteのデータベース作るので後ほど修正します
composer create-project --prefer-dist laravel/laravel coffee-laravel
cd coffee-laravel
mysqlに変更
- ローカルのmysqlを使う設定に変更します
#.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=root
DB_PASSWORD=
- ローカルのmysqlでデータベースを作ります
- ※2回目からは違います!
mysql -u root -p
CREATE DATABASE laravel_db;
EXIT;
- マイグレーションを実行します
php artisan migrate
アプリの起動確認
php artisan serve
- [http://127.0.0.1:8000]にアクセスして動作確認を行います
サーバーの準備
インストール
#1.必要なパッケージをインストール
sudo dnf update -y
sudo dnf install -y epel-release
sudo dnf install -y nginx php php-fpm php-mysqlnd mariadb-server git unzip
#2.サービスを起動
sudo systemctl enable --now nginx
sudo systemctl enable --now php-fpm
sudo systemctl enable --now mariadb
mysqlの設定
sudo mysql_secure_installation
Enter current password for root (enter for none):enter
Switch to unix_socket authentication [Y/n]n
Change the root password? [Y/n]Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n]Y
Disallow root login remotely? [Y/n]Y
Remove test database and access to it? [Y/n]Y
Reload privilege tables now? [Y/n]Y
プロジェクトの転送★
プロジェクトをサーバーにコピー
- 大変時間がかかるので、githubからcloneしたほうが無難
scp -r -i ~/.ssh/24-7-13/1-13.pem ./coffee-laravel root@サーバーのipアドレス:/var/www/coffee-laravel
サーバー上で権限設定
sudo chown -R nginx:nginx /var/www/coffee-laravel
sudo chmod -R 775 /var/www/coffee-laravel/storage /var/www/coffee-laravel/bootstrap/cache
nginxの設定 *2回目からは違います!
sudo vim /etc/nginx/conf.d/coffee-laravel.conf
server {
listen 80;
server_name kkappservice.com www.kkappservice.com;
root /var/www/coffee-laravel/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /.ht {
deny all;
}
}
設定をテストして再起動します
sudo nginx -t
sudo systemctl restart nginx
Laravelの設定と動作確認
composerのインストール
cd /usr/local/bin
sudo curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
- インストールの確認
composer --version
phpのアップデート
- php8.2に変更します
- レポジトリの更新
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
sudo dnf module reset php
sudo dnf module enable php:remi-8.2
- php8.2をインストール
sudo dnf install -y php php-cli php-fpm php-mysqlnd php-xml php-json php-mbstring
- インストールの確認
php -v
依存関係をインストール★
- 2回目以降はバージョンの違いに注意が必要です。
cd /var/www/coffee-laravel
composer install
mysqlの確認
設定ファイル
/etc/my.cnf.d/mariadb-server.cnf
#bind-address=0.0.0.0
- コメントアウトされていれば、デフォルトで127.0.0.1:3306です
パスワードの設定
sudo mysql -u root -p
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');
FLUSH PRIVILEGES;
.env ファイルのパスワード変更★
- ※2回目からは違います!
#.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=root
DB_PASSWORD=your_password # 新しいパスワードに変更
マイグレーション★
データベースの作成
- ※2回目からは違います!
mysql -u root -p
CREATE DATABASE laravel_db;
EXIT;
環境ファイルの調整とキー生成
php artisan key:generate
php artisan migrate
サーバーの設定
port 80番の開放
# 許可されていないか確認
sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
# 80番を許可する
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
success
# 再読み込みする
sudo firewall-cmd --reload
success
# 80番が許可されているか確認
sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports: 80/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
PHP-FPM, nginxの設定確認
/etc/php-fpm.d/www.conf
ファイルのlisten
設定を確認します
listen = /run/php-fpm/www.sock
- Nginx の設定ファイルを編集し、
fastcgi_pass
をソケットに変更します
fastcgi_pass unix:/run/php-fpm/www.sock;
- 再起動します
sudo systemctl restart php-fpm
sudo systemctl restart nginx
権限の付与★
# storageディレクトリ全体に書き込み権限を与える
sudo chown -R nginx:nginx /var/www/coffee-laravel/storage
# storageディレクトリとそのサブディレクトリに適切なパーミッションを設定する
sudo chmod -R 775 /var/www/coffee-laravel/storage
# bootstrap/cacheのパーミッション
sudo chown -R nginx:nginx /var/www/coffee-laravel/bootstrap/cache
sudo chmod -R 775 /var/www/coffee-laravel/bootstrap/cache
laravelのキャッシュクリア
# Laravelのキャッシュをクリア
php artisan cache:clear
php artisan config:clear
php artisan view:clear
php artisan route:clear
# キャッシュを再生成
php artisan config:cache
php artisan route:cache
php artisan view:cache
再起動
sudo systemctl restart php-fpm
アプリにアクセス
http://サーバーのIPアドレス
2つ目のアプリをデプロイする
★がついているものを実行します
DNSはAレコードに前と同じIPアドレスを指定します。
- 1台のサーバーで複数のアプリが動きます。
nginxの設定
sudo vim /etc/nginx/conf.d/pancake-laravel.conf
server {
listen 80;
server_name kadaikanriserviceapp.com www.kadaikanriserviceapp.com;
root /var/www/coffee-laravel/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /.ht {
deny all;
}
}
データベースの作成
mysql -u root -p
CREATE DATABASE pancake_laravel_db;
EXIT;
.envファイルの設定
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pancake_laravel_db
DB_USERNAME=root
DB_PASSWORD=password
うまくいかないとき
ログファイル
- Laravelのログは
storage/logs/laravel.log
に保存されます。 - Nginxのエラーログは
/var/log/nginx/error.log
にあります。 - PHP-FPMのエラーログは
/var/log/php-fpm/www-error.log
にあります。
ログファイルの手動生成
sudo touch /var/www/pancake-laravel/storage/logs/laravel.log
sudo chown nginx:nginx /var/www/pancake-laravel/storage/logs/laravel.log
sudo chmod 664 /var/www/pancake-laravel/storage/logs/laravel.log
- 権限の付与を順番に実施します
SSL
certbotとnginx用プラグインのインストール
sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginx
DNSのCNAME追加
タイプ | 名称 | TTL | 値 |
NS | @ | 3600 | a.conoha-dns.com |
NS | @ | 3600 | b.conoha-dns.org |
A | @ | 3600 | サーバーのIPアドレス |
CNAME | www | 3600 | kadaikanriserviceapp.com |
証明書の取得
sudo certbot --nginx -d kadaikanriserviceapp.com -d www.kadaikanriserviceapp.com
- DNSが更新されるまで30分くらい時間がかかります
port443番の開放
# 443番を許可する
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
success
# 再読み込みする
sudo firewall-cmd --reload
success
# 80番が許可されているか確認
sudo firewall-cmd --list-all