powered by フリーランスマネー

【Laravel入門】Xサーバーに構築する方法

Laravel

Xサーバー、及びXサーバー ビジネスにLaravelをゼロから構築し、GitHubのソースをデプロイして公開するところまでをご紹介します。

目次

SSHの設定

XサーバーのコントロールパネルでSSH設定をクリックします。

SSH設定

ONにするにチェクを入れ、設定するボタンをクリックします。

パスフレーズを入力し、確認画面へ進むをクリックします。

生成するをクリックします。

しばらくすると公開鍵認証用の鍵ペア(ファイル名:サーバーID.key)がダウンロードされます。

MACのターミナルから接続確認を行います。

MACのターミナルからの接続確認

ダウンロードした公開鍵認証用の鍵ペア(以下、ssh.key)が参照できるように権限を与えます。

 chmod 600 ssh.key 

下記のコマンドで接続します。

ssh -l サーバーID -i ssh.key ホスト名 -p 10022

サーバーIDはコントロールパネルの左上に表示されています。

ホスト名はサーバー情報のホスト名に記載されています。

下記のようにパスワードが聞かれますので、SSH設定で設定したパスフレーズを入力します。

Enter passphrase for key ‘ssh.key’: 

PHPの設定

最初のphpのバージョンが5.4など古いままなので、任意のバージョンに設定します。

実行フォルダを作成します。

mkdir bin

今回はphp7.4にシンボリックリンクを貼ります。

ln -s /usr/bin/php7.4 $HOME/bin/php

ls -la $HOME/bin/を実行し、$HOME/bin/phpにphp7.4が関連付けられているのが確認出来ます。

lrwxrwxrwx 1 xb674340 members  15  5月 30 17:16 php -> /usr/bin/php7.4

vi .bash_profileを実行し、bash_profileを下記にように書き換えます。これで上記で設定したphpが実行されます。

PATH=$HOME/bin:$PATH

source .bash_profileを実行し、bash_profileを再読み込みします。

php -vを実行してphp7.4が実行されていることを確認します。

phpの一連のインストール手順を実行した結果は下記の通りです。

Composerのインストール

https://getcomposer.org/download/ にアクセスし、インストールスクリプトが記述されているのでコピー&ペーストしてユーザのホームディレクトリで実行してください。

composer.pharをcomposerという名前にして.config/composer/vendor/bin/の下に保存します。

mkdir -p .config/composer/vendor/bin/
mv composer.phar .config/composer/vendor/bin/composer

パスを通します。

vi .bash_profile
PATH=$HOME/.config/composer/vendor/bin:$HOME/bin:$PATH

source .bash_profileを実行し、bash_profileを再読み込みします。

最後にcomposerのバージョンを確認し、正常にインストールされていることを確認します。

composerの一連のインストール手順を実行した結果は下記の通りです。

Node.jsのインストール

まずはnodebrewをインストールします。

wget git.io/nodebrew
perl nodebrew setup

nodebrewのパスを通します。

vi ~/.bash_profile
PATH=$HOME/.nodebrew/current/bin:$HOME/.config/composer/vendor/bin:$HOME/bin:$PATH

source .bash_profileを実行し、bash_profileを再読み込みします。

nodebrew -vでnodebrewが正常に実行されていることを確認します。

Node.jsのインストールを行います。
バージョンはv17系の最新版を指定してインストールします。
*v18以降ですと2022年8月時点で「`GLIBC_2.27′ not found」などのエラーが発生するため、v17の最新版を使用します。この事象が解決した場合は「nodebrew install-binary latest」コマンドで最新版をインストールして下さい。

nodebrew install-binary v17.9.1

インストールしたNode.jsのバージョンを確認し、そのバージョンを利用するようにします。

nodebrew list
nodebrew use  v17.9.1

最後にnodeやnpmが正常に動作することを確認します。

node -v
npm -v

MySQL(MariaDB)の設定

MySQL(MariaDB)の設定を行います。MySQLもMariaDBも同じ手順です。

コントロールパネルのMySQL設定をクリックします。

MySQL追加タブをクリックし、データベース名に任意の名前を入力して確認画面へ進むボタンをクリックします。

内容に問題が無ければ追加するボタンをクリックします。

次にユーザーを追加します。
MySQLユーザー追加タブでユーザーIDとパスワードを入力し、確認画面へ進むボタンをクリックします。

追加するユーザー情報に問題無ければ追加するボタンをクリックします。

最後に作成したデータベースとユーザーを紐付けます。

「MySQLデータベースへのアクセス権の追加を完了しました。」とメッセージが表示され、戻るボタンをクリックします。
下記のように作成したデータベースのアクセス権所有者ユーザー欄に作成したユーザーが表示されていることを確認します。

メールアカウントの設定

コントロールパネルのメールアカウント設定をクリックします。

メールアカウント、パスワードを入力し、確認画面へ進むボタンをクリックします。

追加するボタンをクリックします。

Githubのソースをデプロイ

クローンをダウンロードする

下記のコマンドを実行し、IDとパスワードを入力してコピーします。

git clone https://github.com/[ユーザーID]/[リポジトリ名].git

Githubのソースを公開フォルダにコピー

下記のコマンドでGithubのソースを公開フォルダにコピーします。

\cp -f  -r /home/[Githubのリポジトリ名] /home/[サーバーID]/[ドメイン]/public_html

必要なライブラリーをインストール

下記のコマンドで必要なライブラリーをインストールします。

cd /home/[サーバーID]/[ドメイン]/public_html
composer install

.envファイルを作成する

vi .envコマンドでenvファイルを作成します。
内容は.env.exampleなどを参考に作成して下さい。
Xサーバー特有の環境に合わせる必要があるメール設定DB(MySQL / MariaDB)の設定は下記を参考にして下さい。

メール設定

項目設定内容
MAIL_MAILERsmtpを設定して下さい。
MAIL_HOSTサーバー情報のホスト名を設定して下さい。
例:sv999.xbiz.ne.jp
MAIL_PORT587を設定して下さい。
MAIL_USERNAMEメールアカウントの設定で登録したメールアドレスを設定して下さい。
例:noreply@test.com
MAIL_PASSWORDメールアカウントの設定で登録したパスワードを設定して下さい。
例:1234567890
MAIL_ENCRYPTIONtlsを設定して下さい。
MAIL_FROM_ADDRESSメールアカウントの設定で登録したメールアドレスを設定して下さい。
例:noreply@test.com
MAIL_FROM_NAME“${APP_NAME}”を設定して下さい。
# メールの入力例
MAIL_MAILER=smtp
MAIL_HOST=sv999.xbiz.ne.jp
MAIL_PORT=587
MAIL_USERNAME=noreply@test.com
MAIL_PASSWORD=1234567890
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@test.com
MAIL_FROM_NAME="${APP_NAME}"

DB(MySQL / MariaDB)の設定

項目設定内容
DB_CONNECTIONmysqlを設定して下さい。
DB_HOSTMySQL(MariaDB)のMySQL(MariaDB)一覧タブ内のIPアドレスを設定して下さい。
例:123.45.67.89
DB_PORT3306を設定して下さい。
DB_DATABASEMySQL(MariaDB)で登録したデータベース名を設定して下さい。
例:XXXXX_test
DB_USERNAMEMySQL(MariaDB)で登録したユーザーIDを設定して下さい。
例:XXXXX_user
DB_PASSWORDMySQL(MariaDB)で登録したパスワードDを設定して下さい。
例:1234567890
# DBの入力例
DB_CONNECTION=mysql
DB_HOST=123.45.67.89
DB_PORT=3306
DB_DATABASE=XXXXX_test
DB_USERNAME=XXXXX_user
DB_PASSWORD=1234567890

マイグレーションを行う

php artisan migrateコマンドでマイグレーションを行う。

ここでSQLSTATE[HY000] [1045] Access denied for userのエラーが発生した場合は再度.envファイルのDB接続情報を確認する。

storage/app/publicへシンボリックリンクを張る

public/storageからstorage/app/publicへシンボリックリンクを張る必要がある場合は下記のコマンドでシンボリックリンクを張る。

php artisan storage:link

画像が表示されず、画像のパスを直接参照すると「403 Forbidden」とエラーとなりstorage内のファイルにアクセス出来ない場合は、publicフォルダに移動して「chmod 755 -Rf storage」コマンドを実行してstorageフォルダ以下の権限を誰でも参照出来るように変更してみて下さい。

公開フォルダをpublicからルートフォルダに変更し、SSLを強制適用する

Laravelのインストール直後のURLはドメイン/publicとなります。
それをドメインのみでアクセスできるように変更します。

またHTTPでアクセスしてきた場合にHTTPSにリダイレクトする設定も行います。

/home/[サーバーID]/[ドメイン]/public_htmlにある.htaccess を下記のように書き換えます。

# 常時SSL化 ここは先頭に記述する必要がある
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [QSA,L]
</IfModule>

Laravelのコマンドスケジューラ(Cron)設定

Laravelのコマンドスケジューラを利用する場合はCronの設定を行います。

コントロールパネルのCron設定をクリックします。

Cron設定1

Cron設定追加をクリックします。

下記のように設定し、確認画面へ進むをクリックします。

項目設定内容
*
時間*
*
*
曜日*
コマンドcd /home/プロジェクトのパス/ && /usr/bin/phpのバージョン artisan コマンド >> /dev/null 2>&1

*Xサーバーはphpのバージョンを指定する必要があります。
phpのバージョンはコントロールパネル → サーバー情報→コマンドパス一覧で確認できます。

Cron設定2

変更するをクリックします

Cron設定3

うまく動作しない場合はコマンドの/dev/nullの部分をcron.logなどにしてログを出力するようにし、
出力されたログを確認してみて下さい。

SNSでフォローする