Xサーバー、及びXサーバー ビジネスにLaravelをゼロから構築し、GitHubのソースをデプロイして公開するところまでをご紹介します。
目次
XサーバーのコントロールパネルでSSH設定をクリックします。
ONにするにチェクを入れ、設定するボタンをクリックします。
パスフレーズを入力し、確認画面へ進むをクリックします。
生成するをクリックします。
しばらくすると公開鍵認証用の鍵ペア(ファイル名:サーバーID.key)がダウンロードされます。
MACのターミナルから接続確認を行います。
ダウンロードした公開鍵認証用の鍵ペア(以下、ssh.key)が参照できるように権限を与えます。
chmod 600 ssh.key
下記のコマンドで接続します。
ssh -l サーバーID -i ssh.key ホスト名 -p 10022
サーバーIDはコントロールパネルの左上に表示されています。
ホスト名はサーバー情報のホスト名に記載されています。
下記のようにパスワードが聞かれますので、SSH設定で設定したパスフレーズを入力します。
Enter passphrase for key ‘ssh.key’:
最初の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の一連のインストール手順を実行した結果は下記の通りです。
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の一連のインストール手順を実行した結果は下記の通りです。
まずは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設定をクリックします。
MySQL追加タブをクリックし、データベース名に任意の名前を入力して確認画面へ進むボタンをクリックします。
内容に問題が無ければ追加するボタンをクリックします。
次にユーザーを追加します。
MySQLユーザー追加タブでユーザーIDとパスワードを入力し、確認画面へ進むボタンをクリックします。
追加するユーザー情報に問題無ければ追加するボタンをクリックします。
最後に作成したデータベースとユーザーを紐付けます。
「MySQLデータベースへのアクセス権の追加を完了しました。」とメッセージが表示され、戻るボタンをクリックします。
下記のように作成したデータベースのアクセス権所有者ユーザー欄に作成したユーザーが表示されていることを確認します。
コントロールパネルのメールアカウント設定をクリックします。
メールアカウント、パスワードを入力し、確認画面へ進むボタンをクリックします。
追加するボタンをクリックします。
下記のコマンドを実行し、IDとパスワードを入力してコピーします。
git clone https://github.com/[ユーザーID]/[リポジトリ名].git
下記のコマンドでGithubのソースを公開フォルダにコピーします。
\cp -f -r /home/[Githubのリポジトリ名] /home/[サーバーID]/[ドメイン]/public_html
下記のコマンドで必要なライブラリーをインストールします。
cd /home/[サーバーID]/[ドメイン]/public_html
composer install
vi .envコマンドでenvファイルを作成します。
内容は.env.exampleなどを参考に作成して下さい。
Xサーバー特有の環境に合わせる必要があるメール設定とDB(MySQL / MariaDB)の設定は下記を参考にして下さい。
項目 | 設定内容 |
---|---|
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}”を設定して下さい。 |
# メールの入力例
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_CONNECTION | mysqlを設定して下さい。 |
DB_HOST | MySQL(MariaDB)のMySQL(MariaDB)一覧タブ内のIPアドレスを設定して下さい。 例:123.45.67.89 |
DB_PORT | 3306を設定して下さい。 |
DB_DATABASE | MySQL(MariaDB)で登録したデータベース名を設定して下さい。 例:XXXXX_test |
DB_USERNAME | MySQL(MariaDB)で登録したユーザーIDを設定して下さい。 例:XXXXX_user |
DB_PASSWORD | MySQL(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接続情報を確認する。
public/storageからstorage/app/publicへシンボリックリンクを張る必要がある場合は下記のコマンドでシンボリックリンクを張る。
php artisan storage:link
画像が表示されず、画像のパスを直接参照すると「403 Forbidden」とエラーとなりstorage内のファイルにアクセス出来ない場合は、publicフォルダに移動して「chmod 755 -Rf storage」コマンドを実行してstorageフォルダ以下の権限を誰でも参照出来るように変更してみて下さい。
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の設定を行います。
コントロールパネルのCron設定をクリックします。
Cron設定追加をクリックします。
下記のように設定し、確認画面へ進むをクリックします。
項目 | 設定内容 |
---|---|
分 | * |
時間 | * |
日 | * |
月 | * |
曜日 | * |
コマンド | cd /home/プロジェクトのパス/ && /usr/bin/phpのバージョン artisan コマンド >> /dev/null 2>&1 |
*Xサーバーはphpのバージョンを指定する必要があります。
phpのバージョンはコントロールパネル → サーバー情報→コマンドパス一覧で確認できます。
変更するをクリックします
うまく動作しない場合はコマンドの/dev/nullの部分をcron.logなどにしてログを出力するようにし、
出力されたログを確認してみて下さい。