phpの学習として、MAMP環境でWebサービスをローカルで開発したものの、
いざローンチするとなると、どうしていいかわからない。
そんな時のためのノートです。
【想定状況】
・ MANPで、phpmyadminを使ってお理、すでにDBにデータが入っている
・ DBとの接続に、PDOオブジェクトを使用している
・ ブログやポートフォリオ等で、すでにxserverを使用している
##xserver側でやること
ではまず、下準備。
MAMPはローカル環境用なので、外部サーバーのxserverでの準備です。
###xserverのサブドメインの申請
すでに、ドメインを持ってい人は、サブドメインを作成しましょう。
http://yahoo.co.jp
がメインドメインだとすると、サブドメインは
http://◯◯.yahoo.co.jp
となります。
新しいドメインとは異なり、無料かつお手軽に作成することができます。
xserverの「サーバーパネル」から
サブドメインの設定追加を行って行きます。
まずは
サーバーパネルから、ドメイン>サブドメイン設定
ドメイン選択画面から、サブドメインを作成したいドメインを選択
実際に使用していくサブドメイン名(任意の文字列)を入力、
右下の確認画面で、サブドメインの申請は終了です!
(コメントは入力しなくても大丈夫です。)
無事、サブドメインが認証されるまで1時間〜半日ぐらいかかります。
(深夜に行っても2時間くらいで反映されました。)
###xserverのphppmyadminの作成
次にローカル環境で使用していたDBを移行してくるためのDB設定を行います。
サーバーパネルの
データベース>MySQL設定へ
MySQL追加からDBの名前を入力します。
なんでもいいですが、今回「Egg」としました。
そうするとMySQL一覧のところに
「_Egg」というデータベースができています。
最初は、アクセス権未所有ユーザーのところに
自分のユーザーネームがあるので、アクセス権所有ユーザーに変更をしておいてください。
また後々、
MySQL ホスト名というところを使っていきますので
メモ帳なんかにコピーしておきます。
##ローカル環境周りでやること
次にやるべきことはDBの移行です。
今までもphpMyAdminを使用していましたが、
xserverに、新しく作りましたのでそちらに移動させていきます。
###phpMyAdiminへの移行
もともと使用していたphpMayAdminから
移行させたいDBを選択し、エクスポートを行います。
詳しいやり方は以下のサイトを参考にしました。
各項目にチェックをつけていき、
最終的に、sqlファイルとして保存し、
移行先であるxserverのphpmyadminにインポートすれば、
DBの移行は終了です。
###PDOオブジェクトの編集
サブアドレスも発行し、DBの移行も終わり、
あとは、xserver内にドキュメントを写すだけ....ではありません。
重要なDB接続の
PDOを変更する必要があります。
変更前までは$dsnのmyssql以下は
ローカルで開発していたため、
hostがlocalhostもしくは127.0.0.1でしたが
先ほどxserveでの設定時に出てきたhost名を入力する必要があります。
またそれに合わせて、DBnameも変更する必要があります。
変更前
function dbConnect(){
$dsn = 'mysql:dbname=egg;
host=localhost;
charset=utf8';
$user = 'root';
$password = 'root';
$options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
);
$dbh = new PDO($dsn, $user, $password, $options);
return $dbh;
}
変更後
function dbConnect(){
$dsn = 'mysql:dbname=▲▲_egg;
host=◯◯.xserver.jp;
charset=utf8';
$user = 'DBのユーザー名';
$password = 'DBのパスワード';
$options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
);
$dbh = new PDO($dsn, $user, $password, $options);
return $dbh;
}
変更後の
dsn文のdbnameとhostは
上で自分で決めたDB名とホスト名
DBのユーザー名とパスワードは
xserverでphpmydminに入るときに使用するやつです。
###FTPソフトを使用した移行
あとは、FTPソフトを使用して移行していくだけです。
やり方は以下を参考にCyberDuckを使用していきました。
ファイルさえ移行しておけば
DBの接続を失敗していない限り、正常にサブドメインのアドレスで
Webページが表示されているはずです。
##【困った時】SQLのエラーの一覧
これを行う上で、SQLのエラーとだいぶにらめっこしたので
まとめておきます。
###ホスト名のエラー
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known
###DB名のエラー
SQLSTATE[HY000] [1044] Access denied for user ‘example’@’%’ to database
###ユーザー名のエラー
SQLSTATE[HY000] [1045] Access denied for user ‘◯◯’@’127.0.0.1’ (using password: YES)
##最後に
役に立ったら、
いいねください!