Laravel9 | GitLabからエックスサーバーへデプロイする方法

GitLab.com でリモートリポジトリを管理している Laravel のプロジェクトをエックスサーバーへデプロイする方法のメモ。(*以下の作業はエックスサーバーにSSHで接続した状態で行います。)

環境確認と設定

PHPバージョン

Laravel9を動かすためにPHP8以上が必要ですので、PHP5系やPHP7系7など下位バージョンの設定になっている場合はバージョンを変更します。

PHPバージョン確認

$ php -v
PHP 5.4.16 (cli) (built: Apr  1 2020 04:07:17) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies

PHPバージョン変更

こちらの「エックスサーバーでコマンド実行時(CLI)に最新のPHPを利用出来るようにする方法」を参考に利用するPHPのバージョンを変更します。(*別途エックスサーバーのサーバーパネルから同じバージョンのPHPに変更します。)

ln -s /opt/php-8.1.12/bin/php $HOME/bin/php
echo '' >> ~/.bashrc
echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

変更作業が上手くいけば以下のように変更が確認出来ます。

$ php -v
PHP 8.1.12 (cli) (built: Oct 31 2022 09:30:38) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.25, Copyright (c) Zend Technologies

Composerバージョン

デフォルトで1系がインストールされていますが、2系が必要ですので2系をインストールします。

Composerバージョン確認

$ composer -V
Composer version 1.10.26 2022-04-13 16:39:56

Composerインストール

こちらの「エックスサーバー Composerをインストール(バージョン変更)する方法」を参考に新しいバージョンのComposerをインストールします。

インストールが上手くいけばデフォルトの1系から2系のComposerに変わっていることが確認出来ます。

$ composer -V
Composer version 2.2.18 2022-08-20 11:33:38

Node.jsインストール

Node.jsをインストールしていない場合は「Node.jsをエックスサーバーにインストールする方法(nodebrew利用)」を参考にインストールします。

インストール完了後、”node -v” , “npm -v” で確認します。

$ node -v
v17.9.1

$ npm -v
8.11.0

SSHキー(公開鍵と秘密鍵)を作成と設定

SSHキー作成

$ ssh-keygen -t rsa -f ~/.ssh/rsa_key_gitlab
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/xxxxx/.ssh/rsa_key_gitlab.
Your public key has been saved in /home/xxxxx/.ssh/rsa_key_gitlab.pub.

.ssh/config 編集( Or 作成)

# GitLab.com
Host gitlab.com
  User userid
  IdentityFile ~/.ssh/rsa_key_gitlab

GitLab.com にSSHキーの公開鍵を登録

GitLabのリモートリポジトリをクローン

プロジェクト用ディレクトリ作成・移動

$ mkdir projects
$ cd projects

クローン

$ git clone git@gitlab.com:xxxxx/example-app.git example-app
Cloning into 'example-app'...
remote: Enumerating objects: 257, done.
remote: Counting objects: 100% (257/257), done.
remote: Compressing objects: 100% (223/223), done.
remote: Total 257 (delta 70), reused 124 (delta 15), pack-reused 0
Receiving objects: 100% (257/257), 138.02 KiB | 0 bytes/s, done.
Resolving deltas: 100% (70/70), done.

クローンしたプロジェクトのディレクトリへ移動

$ cd example-app

Composerパッケージインストール

プロジェクトのディレクトリに移動してComposerパッケージをインストールします。

$ composer install
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Package operations: 107 installs, 0 updates, 0 removals
  - Downloading doctrine/inflector (2.0.6)
  - Downloading doctrine/deprecations (v1.0.0)
  - Downloading doctrine/lexer (2.1.0)
  - Downloading symfony/polyfill-ctype (v1.27.0)
  .
  .
  .
  - Installing spatie/backtrace (1.2.1): Extracting archive
  - Installing spatie/flare-client-php (1.3.2): Extracting archive
  - Installing spatie/ignition (1.4.1): Extracting archive
  - Installing spatie/laravel-ignition (1.6.4): Extracting archive
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi

   INFO  Discovering packages.  

  laravel/sail .................................. DONE
  laravel/sanctum ............................... DONE
  laravel/tinker ................................ DONE
  nesbot/carbon ................................. DONE
  nunomaduro/collision .......................... DONE
  nunomaduro/termwind ........................... DONE
  spatie/laravel-ignition ....................... DONE

80 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

プロジェクトの設定

設定ファイル作成

$ cp .env.example .env

APP_KEYを更新

以下のコマンドを実行すると .env の APP_KEY に生成したキーが設定されます。

$ php artisan key:generate
INFO  Application key set successfully.

.env 編集

ENV / DEBUG / URL
APP_ENV=production
APP_DEBUG=false
APP_URL=https://xxxx.xsrv.jp
データベース設定
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=xxx_laravel
DB_USERNAME=xxx_usr
DB_PASSWORD=xxxxxxxx

マイグレーション実行

$ php artisan migrate
APPLICATION IN PRODUCTION.
Do you really wish to run this command? (yes/no) [no]
❯ yes

INFO  Preparing database.  

Creating migration table ........................................ 6ms DONE

INFO  Running migrations.  

  2014_10_12_000000_create_users_table ............................ 7ms DONE
  2014_10_12_100000_create_password_resets_table .................. 5ms DONE
  2019_08_19_000000_create_failed_jobs_table ...................... 3ms DONE
  2019_12_14_000001_create_personal_access_tokens_table ........... 4ms DONE

シンボリックリンク作成

既存の public_html リネーム

$ mv public_html _old_public_html

シンボリックリンク作成

$ ln -s $HOME/xxxxx.xsrv.jp/projects/example-app/public $HOME/xxxxx.xsrv.jp/public_html

storageディレクトリ用シンボリックリンク

フォームからアップした画像などを公開ディレクトリから参照出来るようにするためシンボリックリンクを作成します。

php artisan storage:link
INFO  The [public/storage] link has been connected to [storage/app/public].

上記コマンド実行後に確認するとシンボリックリンクが作成できていることが確認出来ます。

lrwxrwxrwx 1 xxxxx members   63  2月  1 12:27 storage -> /home/xxxxx/xxxxx.xsrv.jp/projects/example-app/storage/app/public

npmパッケージのインストールとビルド

パッケージインストール

$ npm install

added 93 packages, and audited 94 packages in 2s

20 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
npm notice 
npm notice New major version of npm available! 8.11.0 -> 9.4.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.4.1
npm notice Run npm install -g npm@9.4.1 to update!

ビルド

$ npm run build

> build
> vite build

vite v4.0.4 building for production...
✓ 51 modules transformed.
public/build/manifest.json              0.26 kB
public/build/assets/app-21eefc3d.css   26.54 kB │ gzip:  5.29 kB
public/build/assets/app-fe5e93e3.js   141.71 kB │ gzip: 52.19 kB

動作環境情報

"エックスサーバー" スタンダード(旧X10)
"PHP" 8.1.12
"MariaDB" 10.5
"Laravel Framework" 9.48.0

関連記事

コメント

タイトルとURLをコピーしました