はじめてのさくらVPS

読者です 読者をやめる 読者になる 読者になる

はじめてのさくらVPS

はじめてさくらインターネットのVPSを使用する際に必要となる情報を初心者でもわかりやすくまとめていきます。

さくらのVPSについて

基本情報

さくらのVPSは、ホスティングサーバの提供を行っている国内最大手の老舗会社「さくらインターネット株式会社(SAKURA Internet Inc.)」のVPSのサービス。

専用サーバーの自由度とクラウドの拡張性を合わせもつ「複数台対応」仮想専用サーバーサービスで月額685円(税込)から。

さくらのVPSの特長

複数台対応のコントロールパネル

コントロールパネルからはユーザー自身で、サーバーの起動・停止・再起動が行なえる。

他にもOSのインストールやトラフィック状況やディスクI/0の確認も行え、まず最初にチェックする画面である。

さくらのVPSでは2016年8月現在、契約時に東京と石狩(北海道)の2つのリージョン(サーバー設置場所)を選ぶことができ、同一リージョンを複数台借りた場合にローカル接続も可能。

f:id:photoblg:20160825124954p:plain

画像引用:VPSコントロールパネル|VPS(仮想専用サーバー)はさくらインターネット

ローカルネットワーク

さくらのVPSでは、台数無制限で複数台のサーバー間を接続できるローカルネットワークが使用可能。外部ネットワークを介さず接続できるため、安全で速度の速い通信を実現。

下図のようにベアメタルサーバー(物理サーバー)との接続も可能なのもうれしい。

f:id:photoblg:20160825132655p:plain

画像引用:ローカルネットワーク|VPS(仮想専用サーバー)はさくらインターネット

安心のサポート体制

さくらのVPSでは、専門の技術者が24時間365日サーバー状況を監視。

サーバーはすべて国内のデータセンターに収容。データ保全を冗長化構成のRAIDにて行い、万が一の障害発生時にも速やかに対処されるようです。

当サイトの歩き方

当サイト「はじめてのさくらVPS」は、さくらのVPSを検討〜契約〜設定をする方を想定して構成しています。

そのため以下の順番で見ていただけるとわかりやすいです。

まとめ

上記のような業務でも使えるサーバー構成が、個人でも安価で使えるのがさくらのVPSです。

自由度が高い分ある程度の知識も必要となりますのが、はじめてVPSを利用する方でもわかるように、当サイトでは基本的な設定等を解説していきます。

KUSANAGIのSSLの設定

個別設定

サーバー証明書はドメイン同様年間で更新費用がかかるので個人ユーザーには縁遠いものでした。

一からサーバー証明書を設定するのはなかなか難儀ですが、常時SSLの需要が高まりリーズナブルなSSLも登場しています。

このページではkusanagiで用意したWordPressにSSL(サーバー証明書)を設定する手順をまとめます。

ここではLet’s Encrypt(無料)のサーバー証明書を使っていますので費用はかかりませんのでご安心を。

あらかじめ、プロビジョニング・WordPressをインストールしておきます。

sakuravps.hajimete-guide.com

SSLの設定

SSLの設定は「kusanagi ssh コマンド」で行います。

  • メールアドレス:hoge@example.com
  • プロファイル名:hogehoge
  • ドメイン:blog.example.com
[root@kusanagi71 kusanagi]# kusanagi ssl --email hoge@example.com hogehoge
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Cert not yet due for renewal
Keeping the existing certificate

-------------------------------------------------------------------------------
Certificate not yet due for renewal; no action taken.
-------------------------------------------------------------------------------
証明書の自動更新は既に無効です。何もしません。
unexpected status 403 Forbidden from log server:

{
  "error_message": "This log is frozen, no further entries may be added.",
  "success": false,
  "i": "   __      ",
  "c": "-=(o '-    ",
  "e": "   `.-.\\   ",
  "p": "   /|  \\\\  ",
  "a": "   '|  ||  ",
  "l": "    _\\_):,_"
}
Cannot execute ct-submit ct.googleapis.com/aviator < /etc/letsencrypt/live/blog.example.com/fullchain.pem
CTを有効化します。
nginx/httpd の設定を変更し、再起動しました。
完了しました。

httpsのポート(443)が開放されていない場合はiptablesで適宜開放するようにします。

sakuravps.hajimete-guide.com

正しく動作している場合はURLの入力ボックスに「保護された通信」と表示されます。

f:id:photoblg:20170221233405p:plain

場合によっては「!」のままになる場合も。

f:id:photoblg:20170221233233p:plain

HTTPとHTTPSのコンテンツが混在している場合、セキュアな通信が行えないため「保護された通信」と表示されません。

これを回避するためにはエラーになっているコンテンツの読み込みをhttpsにするかどちらにも対応できる記述に変更する必要があります。

Firefoxでは認証局にLet’s Encryptが使われているのが確認できます。

f:id:photoblg:20170221235737p:plain

httpsのリダイレクト設定

https以外でアクセスがあった際、httpsにリダイレクトする設定も用意されています。

[root@kusanagi71 kusanagi]# kusanagi ssl --https redirect hogehoge
mvno.hikaku-db.com 上のすべてのトラフィックを永久的にHTTPSにリダイレクトするよう設定します。
nginx/httpd の設定を変更し、再起動しました。
完了しました。

サーバー証明書の自動更新

Let’s Encryptのサーバー証明書の有効期限は90日と有料のサーバー証明書と比べると短いです。

都度更新するのは手間がかかるので自動更新の設定をしておきます。

[root@kusanagi71 kusanagi]# kusanagi ssl –auto on hogehoge
証明書の自動更新は既に無効です。何もしません。

「証明書の自動更新は既に無効です」と日本語がおかしいのですが翻訳の問題のようです。設定は問題ないとのこと(2017/2/22時点)

iPhoneのSafariで接続できない

SSL適用後、iPhone(iOS10.2)のSafariで表示できない状態でした。

f:id:photoblg:20170223221219p:plain:w250

原因を調べていたところ以下の記事を見つけ、kusanagi ssl –ct offコマンドでオフにすることで表示できました。

Certificate Transparency Aviatorサーバのログ受付が終了 – しりわけ

[root@kusanagi71 nginx]# kusanagi ssl --ct off hogehoge

SSL Labsでチェック

Qualys SSL Labs社が提供している、SSL Server Testで脆弱性のチェックをしてみたところ問題なさそうな結果となりました。

f:id:photoblg:20170223221830p:plain

設置後は是非チェックしてみてください。

www.ssllabs.com

最後に

以上でKUSANAGIのSSL設定は完了です。KUSANAGI Version 8.0.1-2では特に設定無しでHTTP/2にも対応されるので何ともお手軽なものです。

バックアップ

個別設定

さくらのVPSにはバックアップ機能はありませんので、データのバックアップを行う場合は自前で用意する必要があります。

MySQLなどデータベースを利用の場合はレプリケーションを行うことで冗長化させることが出来ますが、別途サーバーを用意するなど初期導入コストがかかります。

ここでは簡易バックアップとしてdropboxに定期バックアップをする手順を説明します。

アカウントの準備

まずdropboxのアカウントを用意します。

アカウントを持っていない方はココから作成してください。(無料です)

アプリの作成

API Consoleよりアプリの作成をしてAccess tokenを取得します。

https://www.dropbox.com/developers/apps へアクセスして「Create app」

f:id:photoblg:20170218002904j:plain

  • Choose an API → Dropbox API
  • Choose the type of access you need → App folder
  • Name your app → 名前をつける

I agree to Dropbox API Terms and Conditionsにチェックを入れて「Create app」をクリック

f:id:photoblg:20170218003001j:plain

【Settings】の【Generated access token】のGenerateボタンをクリック

f:id:photoblg:20170218004107j:plain

生成されたaccess tokenを後ほど使うので控えておきます。

f:id:photoblg:20170218004222j:plain

スクリプトの設置

ファイルのアップロードはDropbox-Uploaderを使用します。

github.com

まずファイルのダウンロードをします。

[root@kusanagi71 ~]# curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 45660 100 45660 0 0 55165 0 --:--:-- --:--:-- --:--:-- 55144

パーミッションの設定

[root@kusanagi71 ~]# chmod +x dropbox_uploader.sh

スクリプトを実行して先ほど控えておいたAccess Tokenを入力

[root@kusanagi71 ~]# ./dropbox_uploader.sh

This is the first time you run this script, please follow the instructions:

1) Open the following URL in your Browser, and log in using your account: https://www.dropbox.com/developers/apps 2) Click on "Create App", then select "Dropbox API app" 3) Now go on with the configuration, choosing the app permissions and access restrictions to your DropBox folder 4) Enter the "App Name" that you prefer (e.g. MyUploader321292434714039) Now, click on the "Create App" button. When your new App is successfully created, please click on the Generate button under the 'Generated access token' section, then copy and paste the new access token here: # Access token: (入力)
The access token is (入力したAccess Token). Looks ok? [y/N]: y The configuration has been saved.

Dropbox-Uploaderの使い方

./dropbox_uploader.sh (パラメーター) (コマンド) (ファイル・ディレクトリ)

上記が基本的な使い方でコマンド部分をupload、deleteなどに変更してバックアップに使っていきます。

コマンド例

./dropbox_uploader.sh upload /etc/passwd /myfiles/passwd.old
./dropbox_uploader.sh upload *.zip /
./dropbox_uploader.sh download /backup.zip
./dropbox_uploader.sh delete /backup.zip
./dropbox_uploader.sh mkdir /myDir/
./dropbox_uploader.sh upload “My File.txt” “My File 2.txt”
./dropbox_uploader.sh share “My File.txt”
./dropbox_uploader.sh list

参考:GitHub - andreafabrizi/Dropbox-Uploader: Dropbox Uploader is a BASH script which can be used to upload, download, list or delete files from Dropbox, an online file sharing, synchronization and backup service.

シェルプログラムを作成してバックアップ

準備中

KUSANAGIのプロビジョニング

KUSANAGI 個別設定

KUSANAGIのプロビジョニング

ドメインの設定、ディレクトリの設定は「kusanagi provisionコマンド」で行います。

  • プロファイル名:hogehoge
  • 言語:ja
  • ホスト名:hoge.com
  • メールアドレス:info@hoge.com
  • データベース名:wp_db
  • DBユーザー名:db_user
[root@kusanagi71 ~]# kusanagi provision hogehoge
ターゲットディレクトリは /home/kusanagi/hogehoge に変更されました。
WordPress のインストールで使用する言語を選択してください。
1 : en_US
2 : ja

q : 終了

どれを使用しますか?:  2

ja を選択しました

Webサイトで使用するホスト名(FQDN)を入力してください。 例) kusanagi.tokyo
hoge.com
Webサイトで使用するホスト名(FQDN)をもう一度入力してください。
hoge.com

Let's Encryptを使用される場合、Let's Encrypt の使用規約に同意される必要があります。
使用規約に同意される場合、あなたのメールアドレスを入力してください。同意されない場合、Enterキーを二回押してください。
使用規約は次のURLより確認できます: https://letsencrypt.org/repository/
info@hoge.com
メールアドレスを再入力してください。
info@hoge.com

データベース名を入力してください。
wp_db
データベース名を再度入力してください。
wp_db

wp_db のユーザー名を入力してください。
db_user
wp_db のユーザー名を再度入力してください。
db_user

データベースユーザ'db_user'のパスワードを入力してください。[a-zA-Z0-9.!#%+_-]の文字列が使用できます。最小は8文字以上です。
再度 'db_user' のパスワードを入力してください。 --2016-11-18 22:07:48-- https://ja.wordpress.org/latest-ja.tar.gz ja.wordpress.org (ja.wordpress.org) をDNSに問いあわせています... 66.155.40.249, 66.155.40.250 ja.wordpress.org (ja.wordpress.org)|66.155.40.249|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 8402893 (8.0M) [application/octet-stream] `wordpress.tar.gz' に保存中 100%[======================================>] 8,402,893 313KB/s 時間 37s 2016-11-18 22:08:26 (222 KB/s) - `wordpress.tar.gz' へ保存完了 [8402893/8402893] Saving debug log to /var/log/letsencrypt/letsencrypt.log Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Obtaining a new certificate Performing the following challenges: http-01 challenge for hoge.com Using the webroot path /home/kusanagi/hoge/DocumentRoot for all unmatched domains. Waiting for verification... Cleaning up challenges Failed authorization procedure. hoge.com (http-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: DNS problem: NXDOMAIN looking up A for hoge.com IMPORTANT NOTES: - If you lose your account credentials, you can recover through e-mails sent to info@hoge.com. - The following errors were reported by the server: Domain: hoge.com Type: connection Detail: DNS problem: NXDOMAIN looking up A for hoge.com To fix these errors, please make sure that your domain name was entered correctly and the DNS A record(s) for that domain contain(s) the right IP address. Additionally, please check that your computer has a publicly routable IP address and that no firewalls are preventing the server from communicating with the client. If you're using the webroot plugin, you should also verify that you are serving files from the webroot path you provided. - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. Cannot get Let\'s Encrypt SSL Certificate files. hoge のプロビジョニングは完了しました。hoge.com にアクセスし、WordPressをインストールしてください! 完了しました。

プロビジョニング完了後は通常通りWordpressのインストールを進めます。

sakuravps.hajimete-guide.com

なお、プラグインなどのインストール時のFTP情報はkusanagiユーザ作成時のパスワードを入力してください。

f:id:photoblg:20161123120048p:plain:w300

sakuravps.hajimete-guide.com

WordPressのサイトURL(ドメイン)変更方法

個別設定

WordPressで独自ドメインを利用している際、途中でサイトのURLを変更しなくてはならない場合があるかと思います。

  • ドメインの失効
  • サイト名の変更に伴う変更
  • サーバー移転時の一時URL

ドメインの失効、そもそもドメイン自体を変更する場合のほか、動作テストやサーバー移転時にまずは別のドメインで準備して移行したいケースもあります。

WordPressはデータベースにドメイン情報が登録されているため、データベースを変更をすれば済むことなのですが書き込まれている範囲が複数あるため、安易に変更してしまうと中途半端な変更になってしまい後悔することになるでしょう・・・。手作業は難しいので変更する際はツールを使います。

DATABASE SEARCH AND REPLACE SCRIPT IN PHP

変更にはDATABASE SEARCH AND REPLACE SCRIPT IN PHPというツールを利用します。

Database Search and Replace Script in PHP / Interconnect IT – WordPress Consultants, Web Development and Web Design

ファイルのダウンロード

サイトにアクセスするとページの中央あたりに「DOWNLOAD V3.1.0」というボタンがありますのでそこからダウンロードします。

f:id:photoblg:20161123104721p:plain

※2016/11/23時点で最新版

ファイルのアップロード

ファイルを解凍後、FTPでサイトURLを変更したいWordpressのインストール先にディレクトリごとアップロードします。

f:id:photoblg:20161123105129p:plain

設定

アップロード完了後、「http://現在のURL/Search-Replace-DB-master/」にアクセスします。

f:id:photoblg:20161123104636p:plain

  • 旧ドメイン 変更前のドメイン
  • 新ドメイン 変更後のドメイン
  • tables 適用するテーブル

同じデータベース内に、他のWordpressが入っていなければ「all tables」で問題ないですが、他にも入っている場合は「select tables」を選び、該当のテーブルを選択します。

f:id:photoblg:20161123110136p:plain

テスト(dry run)

設定が完了したら、まずはテスト(dry run)を走らせてみます。

actionsセクションに結果が表示され、ドメインの変更箇所があるテーブルに何ヶ所あるか、詳細(view changes)も閲覧することが可能です。

f:id:photoblg:20161123110428p:plain

実行(live run)

テストで特に問題がなければ、変更を実行します。live runをクリックすると確認画面が表示されるので「OK」を選択。

f:id:photoblg:20161123110847p:plain:w300

しばらくするとテスト同様actionsセクションに結果が表示され、live runボタンのクルクルアイコンが消えると完了です。

f:id:photoblg:20161123111159p:plain

特に完了メッセージなど表示されないのと簡単なため拍子抜けするかもしれません。

新しいURLでアクセスして問題なければ作業は完了です。

変更前にデータベースのバックアップは必ずするようにしてください。