【シアたんとミョウガのサーバー乗り換え大作戦! Vol. 5】WordPressをVPSにアップロードしてみよう

Xiia-CN-SDF-A2

皆さん、こんにちはー!シアです☆

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

1. 用意するもの

Xiia02.png
あらかじめ、サーバー上のWordPress本体とデータベースをローカルPCにダウンロードしておきましょう。

データベースはzipなどで圧縮しておくのがポイントですよ。

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

Xiia01.png
本ブログは、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>
Xiia02.png
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. データベースをアップロードしよう

Xiia02.png
まずは、データベースをアップロードしていきましょう。

2.1. データベース用の一般ユーザーを作成しよう

Myoga02.png
データベースもroot以外のユーザーを作った方がいいのかな?
Xiia02.png
そうですね。ついでにデータベースの勉強もちょっとしていきましょう。
Xiia01.png
まず、MariaDBにrootユーザーでログインします。
mysql -u root -p
Xiia02.png
ユーザーを新規作成する時は、「CREATE USER」文を使用します。USERの後に「’ユーザー名’@’localhost’」を、IDENTIFIED BYの後にパスワードを入力します。正常に作成できたら、phpMyAdminからログインできるか確認してみましょう。
CREATE USER 'xiia'@'localhost' IDENTIFIED BY '[パスワード]';
Xiia01.png
次に、作成したユーザーに「GRANT」文でデータベースの権限を与えます。
GRANT ALL PRIVILEGES ON *.* TO 'xiia'@'localhost';
Xiia02.png
権限を与えたら、「FLUSH PRIVILEGES」文を実行して、設定を反映させます。
FLUSH PRIVILEGES;

2.2. データベースをアップロードしよう

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

sv33

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

sv38

Xiia02.png
択したら、ページ下部の実行ボタンをクリックします。

sv39

sv40

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

3. WordPress本体をアップロードしよう

Xiia02.png
次は、WordPress本体をSFTP接続でVPS上にアップロードしましょう。ここでは、「WinSCP」を使用しています。
Myoga07.png
SFTPって何? FTPとは何か違うの?
Xiia02.png
SFTPとは、SSH(Secure SHell) File Transfer Protocolの略で、読んで字の如く、SSHを利用してファイルの転送を行うプロトコルです。

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

3.1. WinSCPでVPSに接続しよう

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

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

sv41

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

sv42

Myoga08.png
何かダイアログが出てきましたよっ!?

sv43

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

sv44

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

sv45

Myoga02.png
もしかして、作成したPuTTY形式の秘密鍵はTera Termにも利用できるの?
Xiia03.png
もちろんです!
Xiia02.png
設定が終わったら、保存ボタンをクリックしてセッションの情報を保存し、ログインボタンをクリックしてVPSにSSH接続しましょう。
はじめて接続する時、以下のようなダイアログが表します。RSA鍵の鍵指数を確認し、「はい」をクリックします。

sv46

3.2. ファイルをアップロードしよう

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

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

Xiia03.png
アップロードが終わるまで気長に待ちましょう。

3.3. グループとパーミッションを設定しよう

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

また、WordPressの管理画面上からプラグインやテーマファイルの編集を更新できるようにする時は、wp-content内のpluginsthemesなどのパーミッションを所有者以外からでも書き込みできるように設定します。
 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
Xiia01.png
WinSCPでは、ファイルやディレクトリのプロパティからパーミッションを設定することができます。

sv49

Myoga11.png
アップロードしたファイルが多すぎて、1つ1つパーミッションを設定するのが煩わしいですよっ。何かいい方法はあるかな?
Xiia02.png
こういう時は、「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
Xiia02.png
パーミッションの設定したら、サイトにアクセスできるか確認してみましょう。

sv50

4. おわりに

Myoga03.png
やった~、わたし達のサイトがLinux環境で上手く動きましたよっ♪
はじめはちょっと難しかったけど、Linuxサーバーの使い方が少し分かってきました。
Xiia02.png
それは、よかったです。
さて、今回は本ブログをVPS上にアップロードして、動作チェックを行いました。
近日中に本ブログをKUSANAGI for ConoHaに移行していきたいと思います。
それでは、See you☆

更新履歴

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

参考サイト

シアたんとミョウガのサーバー乗り換え大作戦!の記事一覧

strory-1s

  1. VPSを作成してみよう
  2. VPSを起動してみよう
  3. ターミナルソフトからリモートログインしてみよう
  4. PHPとデータベースを導入してみよう
  5. WordPressをVPSにアップロードしてみよう
この記事をシェアする
Chronoir.netのRSSフィードを購読する

シアたん(Xiia)

こんにちはー!時黒(トキクロ)博士によって開発された超高性能アンドロイド「Xiia(シア・クロノワール)」です。Chronoir.net の新マスコットキャラとして頑張っていきますので、よろしくお願いします!☆

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください