XSERVER Business (エックスサーバー社が提供する法人向けレンタルサーバサービス)にLaravelアプリケーションを新規導入した際の手順メモです。
制約事項
- レンタルサーバなので、root権限がない。
- 対象のサーバが、かつて存在したシックスコアを継承したものであるため、最新ハード/ソフトが導入されたサーバに移行できない。
という制約があります。
また、ディストリビューションなどの仕様は非公開となっています。
手順
サーバーパネルでの操作
XSERVER Business のサーバーパネルにログインします。
PHPバージョン切替
【PHP】-【PHPバージョン切替】-【ドメイン名】から設定します。
今回導入するのはLaravel9ベースになるので、PHPのバージョンは8.1以上を指定します。
PHPスクリプトの動作モードには、Webサーバ経由で実行するCGI版と、Webサーバを経由せずコマンドラインで実行するCLI版があります。
サーバーパネルから変更できるのはCGI版です。
データベースの作成
【データベース】-【MySQL設定】から設定します。
「MySQL追加」のタブをクリックし、データベース名を入力します。
必ず固定のプレフィックス(サーバーID)が付きます。
「MySQLユーザ追加」のタブをクリックし、ユーザIDとパスワードを入力します。
最後に、追加したデータベースのアクセス権を、追加したユーザに付与します。
ターミナルでの操作
SSHでサーバにログインします。
SSHが無効なら、サーバーパネルから有効化し、公開鍵認証の鍵ペア生成と公開鍵の登録を済ませて下さい。
ホームディレクトリ(/home/[サーバーID]
)に移動します。
cd ~
PHPの設定
コマンドラインで動作するPHPのバージョンを切り替えます。(シンボリックリンク)
mkdir bin
ln -s /usr/bin/php8.1 $HOME/bin/php
パスを通します。
PATH=$HOME/bin:$PATH
即時反映し、PHPのバージョンを確認します。
source .bash_profile
php -v
Composerのインストール
https://getcomposer.org/download/ からインストールスクリプトをターミナルにコピペし、実行します。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
パスの通ったディレクトリにコマンドを移し、composerのバージョンを確認します。
mv composer.phar bin/composer
composer -V
Laravelプロジェクトの作成
cd $HOME/[ドメイン名]
mkdir laravel && cd laravel
composer create-project laravel/laravel [プロジェクト名]
プロジェクトのルートディレクトリに移動し、Laravelのバージョンを確認します。
cd [プロジェクト名]
php artisan --version
プロジェクトディレクトリのpublicフォルダを公開フォルダに設定
ln -s $HOME/[ドメイン名]/laravel/[プロジェクト名]/public $HOME/[ドメイン名]/public_html
.htaccess
にURLリダイレクトのルールを記述します。
エックスサーバーはnginxですが、.htaccess
をそのまま利用できるようです。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1
</IfModule>
https://[ドメイン名]
にアクセスし、トップページの正常表示を確認します。
独自SSLを設定しなかった場合は、https
をhttp
に読み替えて下さい。
Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0".
のエラーになった場合は、サーバーパネルにおいてPHPバージョン切替ができていません。
データベースの設定
サーバーパネルで設定したデータベース情報をLaravelの環境ファイルに記述します。
プロジェクトのルートディレクトリにある.env
を編集します。
DB_CONNECTION=mysql
DB_HOST=mysql5b.sixcore.ne.jp
DB_PORT=3306
DB_DATABASE=データベース名(サーバーID含む)
DB_USERNAME=ユーザー名
DB_PASSWORD=パスワード
マイグレーションできることを確認します。
php artisan migrate
Node.js のインストール
ここからは必要に応じて。
nodebrew
を使ってNode.js
をインストールしていきます。
wget git.io/nodebrew
perl nodebrew setup
パスを通します。
PATH=$HOME/.nodebrew/current/bin:$HOME/bin:$PATH
即時反映し、nodebrew
のバージョンを確認します。
source .bash_profile
nodebrew -v
いったん、最新バージョンのNode.js
をインストールしてみます。
nodebrew install-binary latest
nodebrew use v19.5.0
node -v
nodeコマンドでエラーになりました。
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)
このNodeバージョンでは、GLIBCのさらに新しいバージョンを必要としているようです。
インストールされているGLIBCのバージョンを確認します。
$ ldd --version
ldd (GNU libc) 2.17
今現在利用可能なNodeバージョンの一覧を確認します。
nodebrew ls-remote
GLIBC 2.17で動くNodeバージョンをインストールします。
nodebrew install-binary v17.9.1
nodebrew list
Nodeバージョンを切り替えます。
nodebrew use v17.9.1
Laravelプロジェクトのルートディレクトリに移動し、package.json
に記述されたパッケージを一括でインストールします。
cd /home/[サーバーID]/[ドメイン名]/laravel/[プロジェクト名]
npm install