【Xサーバー】Webアプリ構築に必要なものをいろいろサーバーにいれる

まぐろさん

XサーバーLaravelを構築したときに色々入れたのでざっくりメモ

SSHログイン

  • アカウント」>「SSH設定」を押下してSSHの状態をONにする
  • 公開鍵認証用鍵ペアの生成」 タブでパスフレーズを入力して確認ボタン押下
    ※パスフレーズは入力しなくてもOK
    ※入力した場合はSSH接続時に必要になるので入力したパスフレーズを必ず控えておくこと
  • 生成するボタンを押してkeyファイルをダウンロードする
  • ダウンロードしたkeyファイルを任意の場所に移動して、権限を変更する
mv ~/Downloads/XXX.key ~/.ssh
chmod 600 ~/.ssh/XXX.key
  • SSH接続する
ユーザー名サーバーID (サーバーパネルにログインするときのID)
ホスト名サーバーホスト (サイドバーの「サーバー情報」> ホスト名で確認可能
ポート10022
パス公開鍵認証 (パスワード認証は不可)

ターミナルでは下記形式で接続可能

ssh {ユーザー名}@{ホスト名} -p 10022 -i {キーを置いた場所}

例えばユーザー名が「testUser」、ホスト名が「sv***.xserver.jp」、
キーの置き場所が「~/.ssh/XXX.key」の場合こんな感じ

ssh testUser@sv***.xserver.jp -p 10022 -i ~/.ssh/XXX.key

ターミナルでのPHPのバージョンを最新にしておく

XサーバーではデフォルトのSSH接続でのPHPのバージョン5.4になっているので
PHPのバージョン7.*に変更する

// ① 自分用のbinディレクトリを作成
mkdir $HOME/bin
// ② 作成したディレクトリにPHP7.4へのシンボリックリンクを貼る
ln -s /usr/bin/php7.4 $HOME/bin/php
// ③ パスを変更する
vi ~/.bashrc
  • ~/.bashrcの内容 (最後尾に追記)
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
# PHP7.4を使用するため追加
export PATH=$HOME/bin:$PATH 
  • 変更を反映 & PHP7.4が使えるか確認
// ④ 設定を反映 & PHPバージョン確認
$ source ~/.bashrc
$ php -v
PHP 7.4.13 (cli) (built: Dec  6 2020 21:19:47) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

詳細はこちら

XサーバーでPHP7.4を使う

composerをいれる

  • SSHでログイン後、下記コマンドでcomposerをいれる
curl -sS https://getcomposer.org/installer | php
php  composer.phar -v
  ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.0.8 2020-12-03 17:20:38

Usage:
  command [options] [arguments]

(省略)

Node.js (npm) をいれる

  • npmコマンドを実行するためにNode.jsを入れる
// インストール用のディレクトリを作る
mkdir ~/node
// 移動する
cd ~/node
// インストール用のファイルをダウンロード
wget https://raw.github.com/dmrub/portable-node/master/bin/install-node.sh
// 権限変更
chmod +x ./install-node.sh
// インストール
sh install-node.sh --version=14.13.1
// パスを通す
cd share/nodejs/node-v14.13.1-linux-x64/bin
chmod +x *
export PATH="$PATH:/home/$USER/node/share/nodejs/node-v14.13.1-linux-x64/bin"
// インストールできてるか確認
npm -v
6.14.8

データベースを作成・設定する

  • データベース」>「MySQL設定」の「MySQL追加」タブからデータベースを登録する
  • MySQLユーザー追加」タブからユーザーを登録する
    ※パスワードは後で確認できないので必ず控えておくこと
  • MySQL一覧」タブで先ほど追加したデータベースユーザーの紐付けを行う
    → 対象のデータベース列にある「アクセス権未所有ユーザ」で
    先ほど作成したユーザーを選択して、追加ボタンを押下すればOK
  • 同ページ下部にあるMySQL5.7情報を元に.envに設定する
  • .env
DB_CONNECTION=mysql
DB_HOST=mysqlXXX.xserver.jp # MySQL5.7 ホスト名
DB_PORT=3306
DB_DATABASE=XXXX # 追加したデータベース名
DB_USERNAME=XXXX # 追加したユーザー名
DB_PASSWORD=XXXX # 追加したユーザーのパスワード

メール送信に使用するSMTP情報を確認する

  • メール」>「メールアカウント設定」の「メールアカウント追加」タブを押下して対象のドメインのアカウントを追加する
    ※パスワードは後で確認できないので必ず控えておくこと
  • メールソフト設定」タブから送信用サーバーを確認できる
    これに合わせて、先ほど登録したメールアカウントの情報を使用して.envに設定する
  • .env
MAIL_MAILER=smtp
MAIL_HOST=sv***.xserver.jp
MAIL_PORT=465
MAIL_USERNAME=info@text.com
MAIL_PASSWORD=XXXXXXXXXXXX
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=info@text.com
MAIL_FROM_NAME="送信元名"

ここに詳細情報がのってる

LaravelのURLからpublicをなくす

  • プロジェクト直下に.htaccessを新規作成
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
       # Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ ^$1 [N]

    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
    RewriteRule ^(.*)$ public/$1

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ server.php
</IfModule>
  • 既存のpublic/.htaccessを編集
<IfModule mod_rewrite.c>
    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>