自作WebサービスをXserverで公開するときの注意点と学び

#1.はじめに
自作ポートフォリオをXserverにデプロイした時の注意点をまとめます。

#2.Xserverへのアップ手順
Xserverへのアップ手順はコチラの記事がわかりやすいです。

参考：[WebサービスをXserverで公開する方法](https://qiita.com/kgkgon/items/c2a72f1bc22d0993cda5)

しかし、私はソースファイルをXserver上にアップロードするときに一気にアップできる**ssh**を上手く使うことができなかったので**WebFTP**を使って1つずつアップしました。
（ちょっと面倒でしたが問題なくアップできました）

流れだけ簡単にまとめると以下の通りです。
1.レンタルサーバー（Xserver）を契約
2.独自ドメインを取得（今回はお名前.comを利用しました）
3.DNSサーバの設定（DNS：Domain Name System）
4.データベースをローカルからレンタルサーバに移行
5.ソースファイルをレンタルサーバーにアップロード

僕はここまででサーバー上で見ることができるようになりました。

#3.Xserverで公開するときの注意点
無事にXserverで自作サービスを公開することができたのですが、つまづいたことやあらかじめ知っておいた方が良いと思うことがあるので今からあげていきます。

##3-1.トップページとして表示するファイル名はindex.○○にする
Webサービスのドメインでアクセスしたときに最初に表示されるページ（トップページ）のファイル名は「**index.○○**」にしなければ表示されませんので要注意です。
Xserverの[公式HP](https://support.xserver.ne.jp/faq/service_ftp_setting_upload.php)にも書いてます。

私はトップページを`toppage.php`という名前で作成してしまっていたので、
1.`toppage.php`を`index.php`に変更
2.他ページに入力している`toppage.php`に遷移する処理のコード（`header('Location:toppage.php'）;`）を全て`header('Location:index.php'）;`に変更
このような作業をするはめになりました・・・

なのでこれからWebサイトなりWebサービスを作ろうとしている方はトップページを**index.html**なり**index.php**にすることをオススメします！！

プログラミングの学習教材では、何か作るときにだいたいindex.htmlが使われてて、「なんでindexなんやろ？」って思っていましたが、この時にその理由がわかりました。

##3-2.PHPでDB接続する時のホスト名はMySQL設定のホスト名を入力する

Xserverにデータベースを移行したら、データベース接続設定を編集することになるのですが、ホスト名に注意です。


```php:dbConnect.php

function dbConnect() {
    //DBへの接続準備
    $dsn = 'mysql:dbname=データベース名;host=ホスト名;charset=utf8';
    $user = 'ユーザーネーム';
    $password = 'パスワード';
    $options = array(
        //SQL実行失敗時にはエラーコードのみ設定
        PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT,
        //デフォルトフェッチモードを連想配列形式に設定
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        //バッファードクエリを使う（一度結果をセットを全て取得し、サーバー負荷を軽減）
        //SELECTで得た結果に対してもrowCountメソッドを使えるようにする
        PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
    );
    

    //PDOオブジェクトを生成（DBへ接続）
    $dbh = new PDO($dsn, $user, $password, $options);
    return $dbh;
}
```

入力するホスト名はXserverサーバーパネルの**MySQL設定**に記載されているホスト名にしてください。
私は**サーバー情報**に記載されてるホスト名を入力してしまい、何度も接続エラーになってしまいました。
※間違える人いないかもしれませんが、私は間違えましたので記事として残しておきます（笑）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/512695/9c0fdedd-8dae-45fa-98da-c375ff0c4b88.png)

##3-3.プロトコルをhttps化する方法
Xserverで公開した場合、デフォルトではプロトコルはhttpになっていますのでhttps化する方法を紹介します。
こちらもXserverの[公式HP](https://www.xserver.ne.jp/manual/man_server_fullssl.php)に説明があるのでその通りにすれば簡単にできます。


ちなみにhttpとhttpの違いについては[サイバーセキュリティ.comさんの記事](https://cybersecurity-jp.com/security-measures/25772#HTTPS)で以下の通り記載されております。
>HTTPとは「Hyper Text Transfer Protocol（ハイパーテキストトランスファープロトコル）」の事です。ホームページのデータは文字だけでなく画像や動画などがあります。これらのデータをサーバとクライアントの間で通信するときの通信規約（プロトコル）がHTTPです。

>HTTPに対してHTTPSには文字列の最後に「S」が付いています。この最後の「S」は「Secure（セキュア）」の「S」です。「Secure」という単語を辞書で調べてみると、
安全な、危険のない、安全で、安定した、心配のない、保証された、確実な、約束された、安心して、心配がなくて（secureの意味・使い方 - 英和辞典 Weblio辞書）
と意味が記載されています。IT業界では「セキュリティがしっかりしている」といった意味で使われている単語です。
HTTPSもHTTPと同じプロトコルの一つですが、HTTPSではSSL（Secure Socket Layer）というプロトコルが使用されています。厳密に言うと現在はSSLではなくTLS（Transport Layer Security）というプロトコルが使われています。SSLという言葉が長い間使われてきたため、現在でもSSLと呼んだり、あるいはSSL/TLSと呼ばれたりする状況になっています。

といった感じで書かれていますが、簡単にいうとhttpsの方がセキュリティがしっかりしているということです。

ユーザー登録をするようなサービスでは個人情報を扱うため漏洩するとかなりの問題となるのでhttps化しておくのが良いと思います。

#4.おわりに
本記事では私が自作WebサービスをXserverで公開した時に感じた注意点と学びについて紹介させていただきました。
同じところでつまづいた人の問題の解決に少しでも役に立てれば良いなと思って書きました。

ご覧いただいた方は少しは参考になったでしょうか？

もし参考になった方がいましたら幸いです。
いいね、コメントなどしていただけたら嬉しいです。