💻

Laravel12 + vueをxserverにデプロイする方法

に公開

自身のHPをWordPressからlaravelに移行してxserverにデプロイした際の備忘録。

環境

PC:mac air m2
フレームワーク:laravel/breeze/vue(認証系画面はオミット)
サーバ:xserver

Xserverにssh接続する

ssh接続方法は下記参照(私はmacのターミナルで入ってます)
https://www.xserver.ne.jp/manual/man_server_ssh.php


CLI版のPHPバージョン変更

xserverではドメインでのPHP設定は管理画面でできるが、ssh接続時にcomposerのインストールなどに使うPHPとは別物なので、そっちは以下のCLI用のphpのバージョンアップが必要になる。

# 既存のphpリンク削除
rm ~/bin/php

# 新しいPHPにリンク作成
ln -s /usr/bin/php8.3 ~/bin/php

# 反映
source ~/.bash_profile

# 確認
php -v
作成したディレクトリのパスを通す
vi $HOME/.bash_profile

以下のパスを追加
PATH=$HOME/bin:$PATH

設定を保存
source ~/.bash_profile

プロジェクトの配置

プロジェクトのクローン

gitからプロジェクトをクローンして配置
ドメインルートに移動(public_htmlと同じ階層)

cd /home/{サーバID}/{ドメイン}/

※サブドメイン(サブドメイン.ドメインの形式選択時)の場合も上記のパス
※Xserverはpublic_htmlの中に入っているファイルがhttp://ドメイン名で閲覧できるようになります

git clone リポジトリのURL

クローンしたプロジェクトがpublic_htmlと同じ階層に作成されればOK
※public_htmlの中ではないです

.envの編集

gitには.venderと.envが入ってないと思うのでそれぞれ作成

cd プロジェクトのディレクトリ 
cp .env.example .env

.envをリリース用に編集
vi .env

編集する項目は以下
※事前にxserver管理画面でDBを作成しておく

APP_NAME={アプリ名}
APP_ENV=production 
APP_DEBUG=false 
APP_URL=http://ドメイン名(サイトを表示するURL) 

LOG_LEVEL=error
#mysql使用時(各情報はxserverのサーバパネルのDB設定のDocで確認できます)
DB_CONNECTION=mysql 
DB_HOST=localhost 
DB_PORT=3306 
DB_DATABASE=DB名 
DB_USERNAME=ユーザ名 
DB_PASSWORD=パスワード

#DB未使用の場合は以下を設定
SESSION_DRIVER=cookie

Composerのインストール

初期インストール時

Composerのセットアップスクリプトをダウンロード
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

セットアップスクリプトを使ってComposerをインストール
php composer-setup.php --install-dir=bin --filename=composer

インストールスクリプトを削除
php -r "unlink('composer-setup.php');"
export PATH="$PATH:$HOME/bin"

変更を有効にする
source ~/.bashrc

Composerのアップデート

下記でバージョン確認.

composer -V
composer --version

バージョンが古い場合は下記を実行

composer self-update

Node.jsのインストール

wget git.io/nodebrew perl nodebrew setup

パスを通すために**.bash_profile**を開く

vi $HOME/.bash_profile

nodebrewのパスを追記

PATH=$HOME/.nodebrew/current/bin:$HOME/bin:$PATH

保存

source ~/.bash_profile

Node.jsをインストール(バージョンは環境に合わせてください)

nodebrew install v16.17.0 nodebrew use v16.17.0

NodeJsの更新

現在の Node バージョン確認
node -v

利用可能なバージョンを一覧表示
nodebrew ls-remote

Node.jsをインストール(バージョンは環境に合わせてください)
nodebrew install v24.11.0
nodebrew use v24.11.0

Laravelプロジェクトのビルド

Composerの実行

composer install

NPMインストール

npm install && npm run build
npmが新しすぎる場合は以下で実行(おそらくLaravel11以降はこっち)
npm install --legacy-peer-deps && npm run build

APP_KEYを生成

php artisan key:generate

DB作成(DBを使う場合)

php artisan migrate

ストレージリンク作成

php artisan storage:link

シンボリックリンクの作成(ここが結構ミスやすいです)

Xserverでは、public_html ディレクトリが公開領域として用意されています。
ここに配置されたファイルは、ドメイン経由で外部から直接アクセス可能になります。

今回は Laravel プロジェクトの public を公開領域として使うため、
既存の public_html を削除してシンボリックリンクで置き換えます。
.htaccess を使う方法もありますが、ここでは採用しません。

まずはpublic_htmlのバックアップを取ります

ドメインディレクトリに移動
cd /home/サーバID/ドメイン名
コピーを作成
cp -r public_html public_html_bk

次に削除します

rm -rf public_html

そして Laravel プロジェクトの public にリンクを張ります:

ln -s /home/サーバID/ドメイン名/プロジェクトディレクトリ/public /home/サーバID/ドメイン名/public_html

※ln -s [リンク元] [リンク先] の順序に注意!
今回は public_html を Laravel の public へ「つなげる」イメージです。

サブドメインの場合

サブドメインの公開ディレクトリは下記のようになっています。

/home/サーバID/ドメイン名/public_html/サブドメイン名

※通常のドメインとの違いはサブドメイン自体が公開ディレクトリになっているところ

そのためシンボリックリンクを貼る際は下記のように一度このサブドメインディレクトリを消す必要があります。

cd /home/サーバID/ドメイン名/public_html
rm -rf サブドメイン名

シンボリックリンクを貼る
※実行する際は/home/サーバID/ドメイン名/public_htmlディレクトリ内で実行

ln -s ~/ドメイン名/laravelプロジェクト名/public サブドメイン名

サーバIDとかわからない場合はプロジェクトディレクトリにcdで移動してpwdコマンドを実行するとパスがとれます。

pwd

https://c4std.com/

Discussion