【サーバー移行大作戦! Part-5】WordPressをVPSにアップロードしてみよう

こんにちはー、ニアです!

今回はいよいよ、本サイトのコンテンツとデータベースをVPSにアップロードして、動作チェックをしていきます。

1. 用意するもの

あらかじめ、サーバー上のコンテンツとデータベースをローカルPCにダウンロードしておきます。

Nia-TN-SDfs-normal2.png
データベースはzipなどで圧縮しておくのがポイントです

1.1. IISからApacheに移行する場合

本サイトは、IISからApacheに移行するので、IISで使用していたweb.configの代わりに.htaccessを使用します。

.htaccessを使用する時は、/etc/httpd/conf/httpd.confファイルの<Directory “/var/www/html”>内にあるAllowOverrideの値を「All」に設定します。

<Directory "/var/www/html">

# ...

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride All

# ...

</Directory>

WordPressのドキュメントルート内に.htaccessファイルを作成します。

# 圧縮の設定
AddType image/x-icon .ico

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI _\.utxt$ no-gzip
#DeflateCompressionLevel 4
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
</IfModule>

# キャッシュの設定
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 1 weeks"
ExpiresByType image/jpeg "access plus 1 weeks"
ExpiresByType image/png "access plus 1 weeks"
ExpiresByType image/x-icon "access plus 1 weeks"
ExpiresByType text/css "access plus 1 days"
ExpiresByType text/javascript "access plus 1 days"
ExpiresByType application/x-javascript "access plus 1 days"
ExpiresByType application/x-shockwave-flash "access plus 1 days"
</ifModule>
 
FileETag none
# wp-config.php、wp-mail.php、wp-install.php、.htaccess、.htpasswdへのアクセスを禁止します。
<FilesMatch "^(wp-config\.php|wp-mail\.php|install\.php|\.ht)">
order allow,deny
deny from all
</FilesMatch>

# URLリライト設定
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

2. データベースをアップロードする

まずは、データベースをアップロードしていきます。

2.1. root以外のユーザーを作成しよう

ここでデータベースの学習を兼ねて、root以外のユーザーを作成したいと思います。

まず、MariaDBにrootユーザーでログインします。

mysql -u root -p

ユーザーを新規作成する時は、「CREATE USER」文を使用します。USERの後に「’ユーザー名’@’localhost’」を、IDENTIFIED BYの後にパスワードを入力します。正常に作成できたら、phpMyAdminからログインできるか確認します。

CREATE USER 'xiia'@'localhost' IDENTIFIED BY '[パスワード]';

次に、作成したユーザーに「GRANT」文でデータベースの権限を与えます。

GRANT ALL PRIVILEGES ON *.* TO 'xiia'@'localhost';

権限を付与したら、「FLUSH PRIVILEGES」文を実行して、設定を反映させます。

FLUSH PRIVILEGES;

2.2. データベースをアップロードする

phpMyAdminにログインし、インポートタブをクリックします。

sv33

インポートするファイルのラジオボタンから「アップロードファイル」を選択し、データベースのファイルを選択します。

sv38

ページ下部の実行ボタンをクリックします。

sv39
sv40

これで、データベースをアップロードできました。

3. WordPress本体をアップロードする

次は、WordPress本体をSFTP接続でVPS上にアップロードしていきます。ここでは、「WinSCP」を使用します。

SFTPとは、SSH(Secure SHell) File Transfer Protocolの略で、読んで字の如く、SSHを利用してファイルの転送を行うプロトコルです。

FTPでは、通信内容を暗号化せずにそのまま伝送する仕組み上、第三者から盗聴されるリスクがあるので、通信内容を暗号化できるSFTPやFTPS(FTP over SSL/TLS)を使うのがおすすめです。

3.1. WinSCPでVPSに接続する

まずは、WinSCPでVPSに接続します。左側のセッション名から「新しいサイト」を選択します。

転送プロトコルは「SFTP」を選択し、ホスト名とポート番号、ユーザー名を入力して、設定ボタンをクリックします。

sv41

設定画面が現れたら、左のツリーから「SSH」→「認証」を選択し、秘密鍵のファイルを選択します。

sv42

WinSCPで対応している秘密鍵はPuTTY形式であり、Linuxのssh-keygenコマンドやTera TermのSSH鍵生成機能で作成した秘密鍵の場合、あらかじめPuTTY形式に変換する必要があります。OKボタンをクリックして、PuTTYgenを起動します。

sv43

PuTTYgenを起動したら、「Save private key」ボタンをクリックしてPuTTY形式の秘密鍵を保存します。

sv44

保存したら、PuTTYgenを閉じて、先ほどの設定画面の秘密鍵にそれを選択し、OKボタンをクリックします。

sv45

Nia-TN-SDfs-normal2.png
ちなみに、作成したPuTTY形式の秘密鍵はTera Termでも利用できます

設定が終わったら、保存ボタンをクリックしてセッションの情報を保存し、ログインボタンをクリックしてVPSにSSH接続します。

はじめて接続する時、以下のようなダイアログが表します。RSA鍵の鍵指数を確認し、「はい」をクリックします。

sv46

3.2. ファイルをアップロードする

VPSに接続したら、サーバー側はApacheのドキュメントルート(/var/www/html)を表示し、ローカルPCにダウンロードしておいたWordPressをサーバーにアップロードします。

WinSCPでは、ローカルPC側のファイルを選択して、サーバー側にドラッグ&ドロップするだけで、簡単にアップロードできます。

Nia-TN-SDfs-wink.png
アップロードが終わるまで気長に待ちましょ

3.3. グループとパーミッションを設定する

ファイルをアップロードしたら、ファイルとディレクトリのグループを「www」に変更し、パーミッションを設定していきます。特にwp-config.phpとadmin/install.phpは所有者以外から書き換えできないようにするのがポイントです。

また、WordPressの管理画面上からプラグインやテーマファイルの編集を更新できるようにする時は、wp-content内のpluginsやthemesなどのパーミッションを所有者以外からでも書き込みできるように設定します。

 WordPress内のファイル・ディレクトリ パーミッション
.htaccessと.htpasswd 644

 

(ドキュメントルートの.htaccessのみ、パーマリンクの設定をする時は664)

wp-config.php 400または440もしくは444
wp-admin/install.php 000
以下のディレクトリ及びその中のディレクトリ

 

  • wp-content/plugins
  • wp-content/themes
  • wp-content/uploads
  • wp-content/languages
775
以下のディレクトリ内のファイル

 

  • wp-content/plugins
  • wp-content/themes
  • wp-content/uploads
  • wp-content/languages
664
XMLサイトマップ(使用する場合) 664
上記以外のディレクトリ 755
上記以外のファイル 644

WinSCPでは、ファイルやディレクトリのプロパティからパーミッションを設定することができます。

sv49

と言いたいところですが、多数のファイルやフォルダを1つ1つパーミッションの設定をするのは地獄なので、VPSのターミナルから「find」コマンドを使ってファイルまたはディレクトリを検索し、execオプションでchmodコマンドを実行していきます。

# [ディレクトリ名内]のディレクトリのパーミッションを755に設定します。
find [ディレクトリ名]/ -type d -exec chmod 755 {} \;

# [ディレクトリ名内]のファイルのディレクトリを644に設定します。
find [ディレクトリ名]/ -type f -exec chmod 644 {} \;
# カレントディレクトリがドキュメントルートにいるとします。

# すべてのディレクトリのパーミッションを755に設定します。
find ./ -type d -exec chmod 755 {} \;

# プラグイン、テーマ、翻訳、アップロードしたファイルのディレクトリのパーミッションを775に設定します。
chmod 775 wp-content/plugins
chmod 775 wp-content/themes
chmod 775 wp-content/uploads
find wp-content/plugins/ -type d -exec chmod 775 {} \;
find wp-content/themes/ -type d -exec chmod 775 {} \;
find wp-content/uploads/ -type d -exec chmod 775 {} \;
find wp-content/languages/ -type d -exec chmod 775 {} \;

# wp-config.phpと、install.phpを除くファイルのパーミッションを644に設定します。
find ./ -type f -not -name 'wp-config.php' -not -name 'install.php' -exec chmod 644 {} \;

# プラグイン、テーマ、翻訳、アップロードしたファイルのパーミッションを664に設定します。
# 但し、.htaccessと.htpasswdを除きます。
find wp-content/plugins/ -type f -not -name '.htaccess' -not -name '.htpasswd' -exec chmod 664 {} \;
find wp-content/themes/ -type f -not -name '.htaccess' -not -name '.htpasswd' -exec chmod 664 {} \;
find wp-content/uploads/ -type f -not -name '.htaccess' -not -name '.htpasswd' -exec chmod 664 {} \;
find wp-content/languages/ -type f -not -name '.htaccess' -not -name '.htpasswd' -exec chmod 664 {} \;

# wp-config.phpのパーミッションを400に設定します。
chmod 400 wp-config.php

# wp-admin/install.phpのパーミッションを000に設定
chmod 000 wp-admin/install.php

パーミッションの設定したら、サイトにアクセスできるか確認します。

4. おわりに

今回は、本サイトのコンテンツとデータベースをVPSにアップロードし、動作チェックを行いました。

無事に動作することが分かったので、近日中にKUSANAGI for ConoHaに移行していきたいと思います。

[END]

更新履歴

  • 2016/05/04 : パーミッションの設定を見直しました。

参考サイト

サーバー移行大作戦の記事一覧

コメント

タイトルとURLをコピーしました