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.json や buildディレクトリの内容を持ってきて動かすよう対応しました。
% 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
コメント