Laravelのプロジェクトをサーバにデプロイ

Table of Contents

ローカルで作成したLaravelのプロジェクトをサーバにデプロイ

プロジェクトを取得(git)

# cd /opt/apache
# git clone ssh://hoge@ns.chinaz.org/var/lib/git/(プロジェクト名).git  /opt/apache/(プロジェクト名)
# chown apache.apache (プロジェクト名)/ -R

環境ファイルの設定(DB,Mail等)

# cd /opt/apache/(プロジェクト名)
# cp .env.example .env

-------------------------------------
APP_NAME=diary
APP_ENV=production  ←本番環境
APP_DEBUG=false     ←テストモード無効

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=(DB名)
DB_USERNAME=(ユーザ名)
DB_PASSWORD=(パスワード)

//redisでキャッシュの有効化(実装していないので無効?
CACHE_DRIVER=redis
QUEUE_CONNECTION=redis
SESSION_DRIVER=redis

MAIL_MAILER=smtp
MAIL_HOST=(smtpサーバ名)
MAIL_PORT=587
MAIL_USERNAME=(アカウント)
MAIL_PASSWORD=(パスワード)
MAIL_ENCRYPTION=
MAIL_FROM_ADDRESS="(送信元メールアドレス)"
MAIL_FROM_NAME="${APP_NAME}"
-------------------------------------

使用するデータベースの枠とアカウント登録

# mysql -u root -p
CREATE DATABASE (DB名) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 
CREATE USER '(ユーザ名)'@'localhost' IDENTIFIED BY '(パスワード)';
GRANT ALL PRIVILEGES ON (DB名).* TO '(ユーザ名)'@'localhost';
CREATE USER '(ユーザ名)'@'172.0.0.1' IDENTIFIED BY '(パスワード))';
GRANT ALL PRIVILEGES ON (DB名).* TO '(ユーザ名)'@'172.0.0.1';

Composer で必要なファイルをインストールする

# sudo -u apache php /usr/local/bin/composer install

.envの「APP_KEY=」アプリケーションキーを生成する。

# php artisan key:generate

JNode.jsのnpmコマンドをインストール

# npm install

npm installでエラー

[root@hp diary]# npm install
npm ERR! code ECONNREFUSED
npm ERR! syscall connect
npm ERR! errno ECONNREFUSED
npm ERR! FetchError: request to https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz failed, reason: connect ECONNREFUSED 2606:4700::6810:1723:443
npm ERR!     at ClientRequest.<anonymous> (/usr/lib/node_modules/npm/node_modules/minipass-fetch/lib/index.js:130:14)
npm ERR!     at ClientRequest.emit (node:events:513:28)
npm ERR!     at TLSSocket.socketErrorListener (node:_http_client:502:9)
npm ERR!     at TLSSocket.emit (node:events:525:35)
npm ERR!     at emitErrorNT (node:internal/streams/destroy:151:8)
npm ERR!     at emitErrorCloseNT (node:internal/streams/destroy:116:3)
npm ERR!     at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
npm ERR!  FetchError: request to https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz failed, reason: connect ECONNREFUSED 2606:4700::6810:1723:443
npm ERR!     at ClientRequest.<anonymous> (/usr/lib/node_modules/npm/node_modules/minipass-fetch/lib/index.js:130:14)
npm ERR!     at ClientRequest.emit (node:events:513:28)
npm ERR!     at TLSSocket.socketErrorListener (node:_http_client:502:9)
npm ERR!     at TLSSocket.emit (node:events:525:35)
npm ERR!     at emitErrorNT (node:internal/streams/destroy:151:8)
npm ERR!     at emitErrorCloseNT (node:internal/streams/destroy:116:3)
npm ERR!     at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
npm ERR!   code: 'ECONNREFUSED',
npm ERR!   errno: 'ECONNREFUSED',
npm ERR!   syscall: 'connect',
npm ERR!   address: '2606:4700::6810:1723',
npm ERR!   port: 443,
npm ERR!   type: 'system'
npm ERR! }
npm ERR!
npm ERR! If you are behind a proxy, please make sure that the
npm ERR! 'proxy' config is set properly.  See: 'npm help config'

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2023-05-13T08_59_50_956Z-debug-0.log

registry.npmjs.orgのIPv6での名前解決でエラーになっていることが原因であったので、hostsに下記を追加してIpv4の名前解決で、回避

# vi /etc/hosts
-------------------------------------
104.16.20.35 registry.npmjs.org
-------------------------------------

JSファイルやCSSファイルをマージ

# npm run build

データベースマイグレーションを生成

# php artisan migrate

apacheの設定

#vi /etc/httpd/conf.d/laravel.conf
-------------------------------------
Alias /diary "/opt/apache/(プロジェクト名)/public"

<Directory "/opt/apache/(プロジェクト名)/public">
  Require all granted
  Options FollowSymlinks MultiViews Indexes
  AllowOverride All
</Directory>
-------------------------------------
# vi /opt/apache/(プロジェクト名)/public/.htaccess
-------------------------------------
 RewriteEngine On の下に下記を追加
 RewriteBase /(プロジェクト名)/
-------------------------------------

Apacheの再起動

# systemctl restart httpd

参考URL

ローカルで動かしたLaravelをCentOSにデプロイする方法 – 今日の役に立たない一言 - Today’s Trifle! -
viteを使ってみようと思ったら最初から詰まった – Qiita
npm で ECONNREFUSEDとか言われた – Qiita

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です