確認環境:
laravel 5.7
XSERVER X10プラン
php >= 7.1.3
mysql 5.7
前提
・XSERVERに契約しておく
・サブドメインが使えるよう初期ドメインとは別のドメインを取得しておく。
・ローカルでlaravelが使えるようにしておく。
手順1:SSHを有効にする
XSERVERのサイトにアクセスして、
サーバーパネル ー> ssh設定 を選択する。
SSH を有効にする。
XSERVERはパスワード認証によるSSH接続が利用できません。
なので、公開鍵認証でSSH接続をします。
生成するボタンを押すと、
[サーバーID].key
の秘密鍵ファイルがダウンロードされます。
これは手順4でSSH接続するときに使用します。
手順2:サブドメインの設定
サーバーパネル ー> サブドメイン設定 を選択する。
laravelのプロジェクト名のサブドメインを作る。
例)blog サブドメインを作る。
サブドメイン設定の追加を行うと、サーバー上の「public_html」フォルダ以下にサブドメイン名のフォルダが作成されます。
上記の例の場合、以下にサブドメイン「blog」フォルダが作成されます。
/home/jellyfish000/0jellyfish.xyz/public_html/blog
手順3:PHP 7.1設定
サーバーパネル ー> PHP Ver.切替 を選択する。
現在のバージョンを確認する。
laravel 5.7 は、PHP >= 7.1.3
なので、
要件を満たすように必要に応じてPHPのバージョンを変更します。
例)ドメインをPHP 7.2.6にする。
手順4:SSHでサーバーにアクセスする
ここで、手順1でダウンロードした秘密鍵ファイル名を使います。
<Macの場合>
ホームディレクトリに「.ssh」フォルダを作ります。
ここに手順1でダウンロードした秘密鍵ファイル名を置きます。
このファイルを適当な名前に変更します。
[サーバーID].key ー> id_xserver_rsa
「.ssh」ディレクトリと秘密鍵のパーミッションを変更します。
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_xserver_rsa
作成した「.ssh」フォルダに移動します。
ここまでの準備ができたら、ターミナルでサーバーにアクセスします。
ssh -l [ユーザー名(サーバーID)] -i [秘密鍵ファイル名] [サーバー名(ドメイン名)] -p[ポート番号]
例)
ssh -l jellyfish000 -i id_xserver_rsa 0jellyfish.xyz -p10022
この後、パスワードを聞かれるので入力する。
macのターミナルなら、パスワードのコピペができます。
ssh の接続に成功したら、
[サーバーID@サーバー番号 〜]$
のプロンプトが表示されます。
ssh を終了するときは、exit と入力します。
<Windowsの場合>
XSERVERのマニュアルを参考に、Tera Termを使ってSSH接続をします。
SSHソフトの設定(Tera Term)
手順5:サーバーでディレクトリを移動する
pwd で、今いる場所を確認。
例)
/home/jellyfish000
ls で、ファイル、フォルダを確認する。
例)
0jellyfish.xyz Maildir jellyfish000.xsrv.jp ssl
のような感じで、表示されます。
上の例では、
・0jellyfish.xyz <--取得したドメイン
・ jellyfish000.xsrv.jp <--初期ドメイン
の2つドメインがあります。
初期ドメインはサブドメインの追加ができないので、
取得した「0jellyfish.xyz」ドメインにlaravel プロジェクトを設定します。
cd 0jellyfish.xyz
で、ディレクトリの移動。
/home/jellyfish000/0jellyfish.xyz
ls すると、「public_html」があるはずなので、
cd public_html
で、
/home/jellyfish000/0jellyfish.xyz/public_html
に移動する。
ここにlaravelをインストールします。
手順6:composerのインストール
laravelを使うためには、composerのインストールが必要です。
Download Composer
ここに記載されているコマンドを実行します。
注意する点は、XSERVERでは
/usr/bin/php7.2
この場所にversion7.2のphpがあります。
なので、以下のようにphpを指定しなおして、コマンドを実行します。
/usr/bin/php7.2 -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" /usr/bin/php7.2 -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" /usr/bin/php7.2 composer-setup.php /usr/bin/php7.2 -r "unlink('composer-setup.php');"
コマンドを実行したら、
/home/jellyfish000/0jellyfish.xyz/public_html
に、composer.phar
ができていることを確認します。
composer -v
を実行して、composerのバージョンが表示されれば
composerのインストールが成功しています。
ローカルも同様にcomposerをインストールします。
手順7:laravelのインストール
composerのインストールが完了したら、
以下のコマンドで、サーバーにlaravelをインストールします。
/usr/bin/php7.2 composer.phar create-project --prefer-dist laravel/laravel [プロジェクト名] "5.7.*"
ここで指定する、プロジェクト名は、上記の手順2で作ったサブドメイン名と合わせてください。
なお、手順2でサブドメインを作った時に、サブドメイン名のフォルダが作成されますが、これは一旦、削除して、laravelをインストールしてください。
このフォルダがあると、laravelをインストールに失敗します。
ローカルも同様にlaravelをインストールします。
手順8:FTPツールでファイル転送
インストールできたら、FTPツールを使って、ローカルにインストールでできたファイル
(「vendor」フォルダ以外)を丸ごと、サーバーにアップロードします。
FTPツールは、macでもwindowsでも使える FileZilla がおすすめです。
サーバー設定 ー> FTPアカウント設定 を選択する。
FTPソフト設定タブ を確認する。
FTPツールの接続設定で、ここらへんの設定を使う。
FTPツールでファイルのアップロードが完了したら、
以下にアクセスして表示の確認する。
http://[プロジェクト名(サブドメイン名)].[ドメイン名]/public
例)
http://blog.0jellyfish.xyz/public/
にアクセスしてください。
以下のような画面が表示されれば、インストールが上手くできてます。
/[ドメイン名]/public_html/[サブドメイン名]
の下に
.htaccessファイルを作成し以下の設定をすれば、
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [QSA,L]
http://blog.0jellyfish.xyz
にアクセスで上記の画面が表示されます。
XSERVERでは、HerokuやGDPのようにデプロイができないので、
こんな感じで、ローカルとサーバーを手動で同期させています。
あとは、ローカルで編集したファイルをFTPツールでサーバーへアップロード
を繰り返し行います。
手順9:データベースの作成
上記の手順で、MVCモデルの「V」と「C」にあたる部分は環境が整いましたので、
あとは、「M」にあたる部分の環境構築として、データベースの設定を行います。
XSERVERのサイトにアクセスして、
サーバーパネル ー> MySQL設定 を選択します。
MySQL追加タブを選択します。
以下の設定を行い、追加するボタンを押します。
データベース名:jellyfish000_blog001
アクセス権所有ユーザ:jellyfish000_wp1
Laravelのプロジェクト名を連想させる名前がよいと思います。
手順10:.envファイルの設定
データベースを作成したら、プロジェクト名フォルダの直下にある「.env」ファイルの
以下の箇所を編集します。
DB_CONNECTION=mysql
DB_HOST=[下記のMySQL5.7 ホスト名]
DB_PORT=3306
DB_DATABASE=[手順9で指定した、データベース名]
DB_USERNAME=[手順9で指定した、アクセス権所有ユーザ名]
DB_PASSWORD=[手順9で指定した、アクセス権所有ユーザの接続パスワード]
ローカルで編集し、FTPツールでサーバーにアップロードします。
手順11:artisan migrateする。
手順4の通り、SSHでサーバーに接続して、laravelのプロジェクトフォルダに移動して、
以下のコマンドを実行します。
/usr/bin/php7.2 artisan migrate
laravelは、データベースの設定を何もしなくても、上記コマンドを実行すると、
デフォルトで以下の3つテーブルが作成されます。
migrations
password_resets
users
なお、
Illuminate\Database\QueryException エラーが出た場合はこちらの記事の対処をしてください。
MySQL5.6だと、以下のエラーが出るようです。
laravel migrate エラー Illuminate\Database\QueryException
手順12:phpMyAdminを確認する。
サーバーパネル ー> phpmyadmin(MySQL5.7) を選択し、
phpMyAdminの画面がでますので、
手順9で設定した、
ユーザ名、パスワード、サーバー名を選択し、実行ボタンを押します。
手順11の3つのデータベースが作成されていれば、成功です。
あとは、laravelで自由に、データベースを操作していきます。