Laravelアプリをエックスサーバーに移管しました

Laravel

概要

さくらサーバー上のLaravelアプリをGithubでエックスサーバーに移管しました。
コードはGithubで管理していたため、クローンするだけかなと考えていましたが、PHPのバージョン設定など、色々詰まったため備忘録も兼ねて手順を記録しておきます。

環境

  • エックスサーバー スタンダード
    • PHP 7.4.25

手順

早速進めていきます。

エックスサーバーにSSH接続

公式ドキュメント通り、SSH鍵ペアを作成して、下記コマンドで接続します。

サーバーIDは、xs123456としました。秘密鍵ファイルは、~/.ssh/xs123456.keyのような形式になっていることが多いと思います。

ssh -i {秘密鍵ファイル} -p 10022 xs123456@xs123456.xserver.jp

PHPのバージョン変更

エックスサーバーのPHPのバージョン

こちらの記事が参考になりました。この辺りからディレクトリ構成の森に迷い込んでしまったため、主要登場人物を含んだディレクトリ地図を作り始めました。下記は詰まったり色々した後の最終版です。(->はシンボリックリンクです。)

root/
├ .ssh/
│ ├ id_rsa
│ └ id_rsa.pub
├ etc/
│ └ php.ini (元々参照しているphp.ini)
├ opt/
│ └ php-7.4.25/
│   ├ bin/
│   │ └ php (C)
│   └ etc/
│     └ php.ini
├ usr/
│ └ bin/
│   ├ php (元々参照しているphp)
│   └ php7.4 (B) -> (C)
└ home/
  └ xs123456/
    ├ .bash_profile
    ├ bin/
    │ └ php -> (B)
    └ {ドメイン名}/
      ├ public_html
      │ ├ public -> (A)
      │ └ .user.ini (コンパネから編集できる)
      ├ xserver_php
      │ └ php.ini
      └ laravel/ (git clone場所)
        └ {{プロジェクト名}/
          └ public (A)

GitHubへのSSH接続を設定する

下記コマンドで鍵ペアを作成し、公開鍵(~/.ssh/id_rsa.pub)をGitHubに登録します。

cd ~/.ssh
ssh-keygen

npmをインストールする

こちらの記事を参考に、nodebrewを使って、npmをインストールします。

対象ディレクトリに移動し、git clone

git cloneするディレクトリは、個人差があります。今回はドメインの下にlaravelというディレクトリを作成しました。

リポジトリのURLはGitHubから確認できます。https://github.com/{ユーザー名}/{リポジトリ名}.gitのような形式ですね。

cd ~/ドメイン/laravel
git clone {リポジトリのURL}

Laravelの初期設定

Laravel関連の初期設定を行います。

php artisan key:generate
composer install
npm install

無事git cloneが終わっていたので、意気揚々と進めていましたが、このcomposer installでエラー。PHPに割り当てられるメモリの上限が決まっており(2G?)、それが足りないと怒られました。

PHP Fatal error:  Allowed memory size of 2097152 bytes exhausted (tried to allocate 1974272 bytes)

設定ファイルのphp.iniの項目composer_memory_linitを変更することで解決するかに思われましたが、エックスサーバーのサーバーパネルから設定できるphp.iniと実際に参照している設定が乖離していたり、参照していると考えられるphp.iniはroot権限以外では編集できなかったりと、だいぶん苦悩しました。(先程記載したディレクトリ地図に.iniファイルが数多く現れているのはそのためです。)

結局、そのコマンドだけ設定を適用する下記コマンドで解決しました。

こちらの記事のおかげです…ありがとうございます…

COMPOSER_MEMORY_LIMIT=-1 composer install

あとはシンボリックリンクを張り、

ln -s ~/{ドメイン名}/laravel/{プロジェクト名}/public ~/{ドメイン名}/public_html/public

.htaccessに下記記述を記載して完成です。

RewriteEngine On
RewriteRule ^(.*)$ public/$1 [QSA,L]

一旦、こちらでデプロイは完了です。

GitHub Actionsを用いて、デプロイを自動化する方法についてもこちらの記事で解説していますので、参考にしてみてください。

参考リンク

最後に参考リンクを記載します。

インターネットの向こうのエンジニアの方々、いつもありがとうございます。

Laravel, エックスサーバー関連

Git関連

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