Laravel9 | GitLabからさくらのレンタルサーバへデプロイする方法

GitLab.com でリモートリポジトリを管理している Laravel9 のプロジェクトをさくらのレンタルサーバへデプロイする方法のメモ。

PHPバージョン確認

Laravel9 の動作要件以外のバージョンであったり開発環境と異なるバージョンアップの場合は動作可能なバージョンへ変更します。

% php -v
PHP 8.0.25 (cli) (built: Nov  8 2022 12:53:17) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.25, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.25, Copyright (c), by Zend Technologies

Composerインストール

インストール

さくらのレンタルサーバはデフォルトでComposerはインストールされていませんので、インストールしていない場合は、「さくらのレンタルサーバ | Composerをインストールする方法」を参考にインストールします。

バージョン確認

% composer -V
Composer version 2.4.4 2022-10-27 14:39:29

Node.jsインストール

インストール

さくらのレンタルサーバはデフォルトでNode.jsはインストールされていませんので、インストールしていない場合は、「Node.jsをさくらのレンタルサーバにインストールする方法(ソースからコンパイル)」を参考にインストールします。

バージョン確認

nodeバージョン

% node -v
v17.9.1

npmバージョン

% 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 作成)

% cd $HOME/.ssh/
% touch config

config に以下の内容を追加します。

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

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

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

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

% mkdir -p $HOME/projects && cd $HOME/projects

クローン

% git clone git@gitlab.com:xxxxxx/example-app.git example-app
Cloning into 'example-app'...
remote: Enumerating objects: 263, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (77/77), done.
remote: Total 263 (delta 43), reused 123 (delta 43), pack-reused 140
Receiving objects: 100% (263/263), 189.00 KiB | 827.00 KiB/s, done.
Resolving deltas: 100% (58/58), done.

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

cd example-app

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

% composer install
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Package operations: 109 installs, 0 updates, 0 removals
  - Downloading doctrine/deprecations (v1.0.0)
  - Downloading doctrine/lexer (2.1.0)
  - Downloading fakerphp/faker (v1.21.0)
  .
  .
  .
  - Installing spatie/flare-client-php (1.3.5): Extracting archive
  - Installing spatie/ignition (1.4.3): 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/breeze ................... DONE
  laravel/sail ..................... DONE
  laravel/sanctum .................. DONE
  laravel/tinker ................... DONE
  nesbot/carbon .................... DONE
  nunomaduro/collision ............. DONE
  nunomaduro/termwind .............. DONE
  spatie/laravel-ignition .......... DONE

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

プロジェクトの設定

設定ファイル作成

% cp .env.example .env

APP_KEYを更新

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

.env 編集

$ vim .env

ENV / DEBUG / URL

APP_ENV=production
APP_DEBUG=false
APP_URL=https://xxxxx.sakura.ne.jp

データベース設定

DB_CONNECTION=mysql
DB_HOST=mysql57.xxxxx.sakura.ne.jp
DB_PORT=3306
DB_DATABASE=xxx_laravel
DB_USERNAME=xxxxx
DB_PASSWORD=xxxxxxxxxxxxx

マイグレーション実行

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

Creating migration table ................................... 15ms DONE
INFO  Running migrations.  

  2014_10_12_000000_create_users_table ....................... 11ms DONE
  2014_10_12_100000_create_password_resets_table ............. 11ms DONE
  2019_08_19_000000_create_failed_jobs_table .................. 9ms DONE
  2019_12_14_000001_create_personal_access_tokens_table ...... 15ms DONE

公開設定

シンボリックリンク作成

ln -s $HOME/projects/example-app/public/ $HOME/www/example-app

.htaccess リライトルール設定

<Ifmodule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^(.*)$ example-app/$1 [QSA,L]
</IfModule>

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

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

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

パッケージインストール

% npm install

added 95 packages, and audited 96 packages in 2s

21 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 notice

ビルド

npm run build でビルドしたかったのですが、すぐに Killed となってしまいビルド出来ませんでしたので、別環境でビルドした manifest.jsonbuildディレクトリの内容を持ってきて動かすよう対応しました。

% npm run build

> build
> vite build

Killed

動作環境情報

さくらのレンタルサーバ スタンダード
"PHP" 8.0.25
"Composer" 2.4.4
"node" v17.9.1
"npm" 8.11.0
"Laravel Framework" 9.50.2

関連記事

コメント

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