レンタルサーバーにwordpressを移設

さくらインターネットとXserverでの作業を元に記載しています
今回の作業の目的は awsで動かしていた wordpress サイトを さくらかxserverに引っ越そうかなと。

さすがに負荷がないからか速度に顕著な差がありませんでしたが、今後課金プラグインや多言語開発をする予定があるので、XServerにする事にしました

# XServer

## ssh設定を行う

契約管理ページにログイン後、サーバー管理画面から作業をします

1. SSH設定をクリックし、SSH設定をONにし、「設定する」
1. 公開鍵認証用鍵ペアの生成をおこなう。パスフレーズは空白でもOK
1. 秘密鍵がダウンロードされる。公開鍵がサーバー上に自動でセットされるので便利
1. クライアントの.sshフォルダに移動し、configファイルに設定する。portが 10022になるので要注意

```
Host xserver.jp
  User <<サーバーID>>
  port 10022
  Hostname <<サーバー情報のホスト名を記載>>
  IdentityFile <<保存したファイル>>
```

## サーバー上にキーペアーを作成し、git ダウンロードに備える

```
$ ssh-keygen
$ cat ~/.ssh/id_rsa.pub
```

## サーバーにファイルを置いてブラウザからもアクセスを確認する
```
$ cd ~/<<初期ドメイン>>/public_html
$ vi index.html
```

アクセスURL : <<初期ドメイン>>

## bitbucketに先ほど作成した公開鍵を登録し、wordperssソースをcloneする
```
$ mkdir staging
$ cd staging
$ git clone <<bitbucekt ssh url>>
```

## データベースを設定する

サーバー管理からMySQL設定を開き、MySQL追加タブをクリックする
1. データベース名を設定
1. MySQLユーザー追加に移動して、MySQLユーザーIDとパスワードを設定する
1. MySQL一覧から、先ほど追加したMySQLユーザーがアクセス権未所有ユーザーに表示されていることを確認し、「追加」ボタンを押し、アクセス権所有ユーザーとする

## WordpressのDB接続情報を更新

以下の環境変数を先ほど設定した情報を元にセットする。
XServerのデフォルトシェルはbashのようなので、.bash_profilercに環境変数を定義します
ログイン時に実行されるのは .bashrcではなく、.bash_profile なので、環境変数は .bash_profile に設定します

```
export DB_HOST=localhost
export DB_NAME=<<データベース名>>
export DB_USER=<<MySQLユーザーID>>
export DB_PASSWORD=<<パスワード>>
```

設定後は source ~/.bash_profile で読み込み、環境変数でアクセスをしてみます

```
$ source ~/.bash_profile
$ mysql -h $DB_HOST -u $DB_USER -p$DB_PASSWORD $DB_NAME
```

データベース接続に成功したら、wordpressにデータベース情報を設定します。
ここからは、プロジェクト毎に異なりますが、私の流儀として、接続情報を環境変数から取得してwp_homeなど環境毎に異なる設定をenv/config-local.phpにしています。
wordpressは.bash_profileを読まないため、.htaccessに設定するのが便利かと。

1. サーバーパネルから .htaccess編集により、編集したいドメインを指定して「選択する」
1. 更に、「.htaccess編集」をする

もしくは、vi .htaccessで編集をします

```
SetEnv DB_HOST localhost
SetEnv DB_NAME <<データベース名>>
SetEnv DB_USER <<MySQLユーザーID>>
SetEnv DB_PASSWORD <<パスワード>>
```

## wordpressのroutingを更新

wordpress は環境変数 WP_HOME, WP_SITEURL を渡すことで、ルートURLを変更することができます。
更に、管理画面 (wp_admin) からパーマリンク設定を保存すると、ルーティングが更新されるので便利。



# さくらインターネット


## ssh接続情報を取得する
サーバー仮登録のメールに記載の
* FTPサーバー名
* FTPアカウント
* サーバーパスワード
を記録します

ssh接続は

ssh [FTPアカウント]@[FTPサーバー名]
パスワードを求められたら [サーバーパスワード] を入力

## サーバー接続

ssh接続後、ルートフォルダで lsコマンドを入力し、サーバー仮登録メール記載のFTP初期フォルダ が存在することを確認

cd [初期フォルダ] で移動後
vi index.html
で `hello'
という記載し、保存。

その後、[FTPサーバー] にアクセスして、 helloと記載したページが見えることを確認

## sshキーを登録し、bitbucketに登録

`ssh-keygen`
で、.ssh 以下に、 id_rsa, id_rsa.pub ファイルを作成

id_rsa.pubの内容をbitbucketやgithub.com のユーザーページから登録する

例： `https://bitbucket.org/account/settings/ssh-keys/`

## web公開フォルダに bitbucketにプッシュしたリポジトリを取得

`git clone git@bitbucket.org:[ユーザー名]/[リポジトリ名]`


今回は本番環境とステージング環境を作成する予定なので、

```
% pwd
/home/[username]/www
% mkdir prod
% cd prod
% git clone git@bitbucket.org:[ユーザー名]/[リポジトリ名]
```
で、コードをクローンした後

[FTPアカウント]/prod/[リポジトリ名]
にアクセス

`データベース接続確立エラ-`
のページが表示されることを確認

## データベースを作成
データベース名と、パスワードを指定する
ユーザー名は[FTPアカウント]で固定の模様

以下の3つを記録します。
* データベースサーバー名
* データベース名
* 接続ユーザー名
* 接続パスワード

## wordpressの接続情報をコード等に記載

ここからは、プロジェクト毎に異なりますが、私の流儀として、接続情報を環境変数から取得してwp_homeなど環境毎に異なる設定をenv/config-local.phpにしているのと、データベース操作系のスクリプトが環境変数を使っていることもあるので、以下のファイルに必要な環境変数を記載します

* .cshrc
* .htaccess

## wordpressのroutingを更新

wordpress は環境変数 WP_HOME, WP_SITEURL を渡すことで、ルートURLを変更することができます。
更に、管理画面 (wp_admin) からパーマリンク設定を保存すると、ルーティングが更新されるので便利。