Laravelで作成したWebアプリをXサーバーにデプロイする方法について記します。
必要な作業が多くて少し大変ですが、一つずつゆっくり行っていけば大丈夫です。
必要な作業
- XサーバーにSSH接続する
- PHPのバージョンを変更
- Composerのインストール
- Node.jsのインストール
- プロジェクトを設置する
- envファイルの修正
- composerとnpmの実行
- DB作成+migration
- シンボリックリンクを貼る
1. XサーバーにSSH接続する
XサーバーでLaravelを動かす環境を構築していくためにはSSH接続をする必要があります。
手順は下記記事が参考になると思います。
SSH接続する(Xserver from Win, Mac)
2. PHPのバージョンを変更
Laravelを問題なく動かすためにPHPのバージョンを開発環境に合わせる必要があります。
CGI版とCLI版両方ともバージョンを合わせます。
CGI版のPHPのバージョン変更
CGI版のPHPのバージョン変更はサーバーパネルで行います。
下記記事が参考になると思います。
【簡単3分】エックスサーバーで使ってるPHPをバージョンアップする方法
CLI版のPHPバージョン変更
CLI版のPHPのバージョン変更はコマンドで行います。
ホームディレクトリに適当なディレクトリを作り、使いたいPHPのバージョンにシンボリックリンクを貼ります。
mkdir $HOME/bin
ln -s /usr/bin/php8.1 $HOME/bin/php
※バージョン(php8.1の所)は開発環境に合わせてください。
使えるPHPのバージョンは下記コマンドで確認できます。
find /opt/php-*/bin -type f -name 'php'
先ほど、作成したディレクトリのパスを通します。
下記コマンドで.bash_profileを開き、
vi $HOME/.bash_profile
作成したディレクトリのパスを追記し、.bash_profileファイルを閉じ、
PATH=$HOME/bin:$PATH
設定を保存します。
source ~/.bash_profile
3. Composerのインストール
Xサーバーにcomposerは入っているのですがバージョンが古いので、最新のものをインストールして使えるようにします。6行目で先ほどパスを通した$HOME/binにcomposerを移動しています。
下記コマンドを1行ずつ実行します。
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');"
mv composer.phar $HOME/bin/composer
Composerのバージョンによって2行目のハッシュ値が変わるので、1~4行目は下記公式サイトのものを使うことをお勧めします。
https://getcomposer.org/download/
4. Node.jsのインストール
npmコマンドを使えるようにするために、Node.jsをインストールします。Node.jsはnodebrewを使ってインストールできます。Xサーバーにはnodebrewが入っていないようなので、nodebrewからインストールします。
wget git.io/nodebrew
perl nodebrew setup
下記コマンドで.bash_profileを開き、
vi $HOME/.bash_profile
nodebrewのパスを追記して、.bash_profileファイルを閉じ、
PATH=$HOME/.nodebrew/current/bin:$HOME/bin:$PATH
設定を保存します。
source ~/.bash_profile
Node.jsをインストールします。
バージョン(v16.17.0となっている所)は開発環境と合わせてください。
nodebrew install v16.17.0
nodebrew use v16.17.0
5. プロジェクトを設置する
プロジェクトをXサーバーに設置します。
設置する場所はpublic_htmlと同階層(ドメイン直下)です
通常はpublic_html直下にプロジェクトを置くと思うのですが、直下に置くとURLでアクセスする時にhttps://ドメイン/publicという風にしないといけなくなってしまいます。(Laravelの公開フォルダがpublicフォルダなため)
public_htmlと同階層(ドメイン直下)にプロジェクトを置きpublic_htmlからLaravelのpublicフォルダへシンボリックリンクを貼ることで、https://ドメイン/ というURLでアクセスできるようになります。
※シンボリックリンクの貼り方は記事の最後で説明しています。
プロジェクトの設置はFTPでアップロードするか、GITでcloneするか、どちらかで行えます。
6. envファイルの修正
Laravelの.envファイルを修正します。
おそらく本番環境用に変える必要が出てくるのは下記項目あたりだと思います。
APP_ENV=local
APP_DEBUG=true
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=user
MAIL_PASSWORD=password
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
GITから落として、.envファイルがない場合、.env.exampleをコピーして修正します。
下記コマンドで.env.exampleをコピーできます。
cp -p $HOME/ドメイン/public_html/プロジェクト/.env.example $HOME/ドメイン/public_html/プロジェクト/.env
7. composerとnpmの実行
composer installとnpm installで、Webアプリに必要なパッケージとモジュールをインストールします。
package.jsonを元にnode_modulesフォルダ、composer.jsonを元にvenderフォルダが作成されます。
composer install
npm install
8. DB作成+migration
エックスサーバーでのDB作成方法は下記が参考になると思います。
(PHP)エックスサーバーでDB作成・DB接続
DBを作成したらmigrationでテーブルを作成します。
cd $HOME/サーバーID/ドメイン/プロジェクトフォルダ
php artisan migrate
9. シンボリックリンクを貼る
シンボリックリンクを貼る必要がある箇所はpublic_htmlとstorageです。
public_htmlのシンボリックリンク
下記コマンドでpublic_htmlからpublic(Laravelの公開フォルダ)へのシンボリックリンクを貼ります。
ln -s /home/サーバーID/ドメイン/プロジェクトフォルダ/public /home/サーバーID/ドメイン/public_html
storageのシンボリックリンク
storageのシンボリックリンクを忘れるとアップロードした画像などが表示されなかったりするので、忘れずに行います。これはLaravelのコマンドで行えます。
cd $HOME/サーバーID/ドメイン/プロジェクトフォルダ
php artisan storage:link
以上、Laravelで作成したWebアプリをXサーバーにデプロイする手順でした。
コメント