さくらのVPSでWordPressが動く環境を構築するまでの全手順を解説いたします。
おおまかな手順は、以下の通りです。
- ステップ1. SSHでVPSに接続する
- ステップ2. 作業用ユーザーを作成する
- ステップ3. 鍵認証の設定
- ステップ4. SSHの設定
- ステップ5. ファイアーウォールの設定
- ステップ6. Webサーバーの設定
- ステップ7. FTPの設定
- ステップ8. マルチドメインの設定
- ステップ9. epelとremiリポジトリの導入
- ステップ10. PHPのインストール
- ステップ11. MySQLのインストール
- ステップ12. phpMyAdminのインストール
- ステップ13. ネームサーバーの設定
- ステップ14. メールの設定
結構大変ですが、手順通りに進めていけば、サーバーに詳しくなくても構築できるように詳しく解説していますので、ぜひご参考にしていただければと思います。
ステップ1. SSHでVPSに接続する
SSHクライアントはPuTTYを使っています。
1. まずはコントロールパネルにログインして、サーバーを起動します。
2. PuTTYを起動し、IPアドレスとポート番号を入力して接続します。IPアドレスはVPS申込時にメールで送られてきたものを、ポート番号は22にしてください。
3. 「このサーバーに接続してもいいですか?」という旨のメッセージが表示されるので、[はい]をクリックして進めます。
4. rootと入力してEnter、続いてメールで送られてきたrootのパスワードを入力してEnterを押下します。ログインできたら、以下のような画面になります。
5. 「yum update」を実行します。これによってVPS内のシステムを最新の状態にアップデートします。更新があればアップデートするか聞かれるので、yesを選択してください。
6. 日本語化するために、「vim /etc/sysconfig/i18n」を実行します。iで入力モードに切り替わるので、LANGを「jp_JP.UTF-8」に変更します。Escで入力モードを抜け、「:wq」を実行して保存して終了します。
7. 一旦ログアウトしてログインし直すと、日付などの表示が日本語になります。
※ログインし直すと以下のようなエラーが表示されることがあります。
-bash: warning: setlocale: LC_CTYPE: cannot change locale (jp_JP.UTF-8): No such file or directory -bash: warning: setlocale: LC_COLLATE: cannot change locale (jp_JP.UTF-8): No such file or directory -bash: warning: setlocale: LC_MESSAGES: cannot change locale (jp_JP.UTF-8): No such file or directory -bash: warning: setlocale: LC_NUMERIC: cannot change locale (jp_JP.UTF-8): No such file or directory -bash: warning: setlocale: LC_TIME: cannot change locale (jp_JP.UTF-8): No such file or directory
これは、「vim /etc/sysconfig/i18n」を実行して、以下を追記することで解消します。
LC_CENGINE=ja_JP.UTF-8 LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_PAPER="ja_JP.UTF-8" LC_NAME="ja_JP.UTF-8" LC_ADDRESS="ja_JP.UTF-8" LC_TELEPHONE="ja_JP.UTF-8" LC_MEASUREMENT="ja_JP.UTF-8" LC_IDENTIFICATION="ja_JP.UTF-8"
PuTTYで表示される日本語のメッセージが文字化けする場合は、PuTTYの文字コードをUTF-8に変更することで解消すると思います。手順については、「PuTTYの文字コードをUTF-8に変更する方法」をご参照ください。
ステップ2. 作業用ユーザーを作成する
1. 以下のコマンドを実行して、ユーザーを作成しパスワードを設定します。
useradd ユーザー名 passwd ユーザー名
2. パスワードの入力を求められるので、任意のパスワードを入力します。
3. 「usermod -G wheel ユーザー名」を実行します。
4. 「visudo」を実行し、「/wheel」を実行してwheelを検索します。
5. “Allows people in group wheel to run all commands”という行にカーソルが飛ぶので、その次の行の先頭にカーソルを合わせて「xx(小文字のxを2回)」押下します。
※先頭の#とスペースが削除されます。
6. Escで入力モードを抜け、「:wq」を実行して保存して終了します。
7. 一旦ログアウトして、作成したユーザーでログインしてみましょう。正常にログインできればユーザー作成の成功です。
手順3~6を実施することで、sudoというrootに成り代わるコマンドが使えるようになります。
ステップ3. 鍵認証の設定
作業用ユーザーを作成して、パスワードで認証できるようにしましたが、よりセキュリティを高めるために鍵認証を設定します。VPS側に公開鍵を置き、PC側に秘密鍵を置きます。これらの鍵を使ってSSHに接続することで、よりセキュリティを高めることができます。
今回ご紹介するのはPuTTYを使った方法です。
1. PuTTYと同梱されているPuTTYgenを実行します。
2. 「Generate public/private key pair」の横にある[Generate]をクリックします。
3. 鍵が生成されたらわかりやすいように「Key Comment」にコメントを入力しておきます。
4. 「Key passphrase」に任意のパスワードを設定します。
5. [Save public key]と[Save private key]で公開鍵と秘密鍵を保存します。publickeyは拡張子を.pub、privatekeyは.ppkにします。
6. SSHに作業用ユーザーでログインし、「mkdir ~/.ssh」でsshディレクトリを作成します。
7. 「chmod 700 ~/.ssh」を実行してパーミッションを変更します。
8. 「vi .ssh/authorized_keys」を実行します。
9. iを押下して入力モードに切り替え、PuTTYの公開鍵の部分に表示された文字列をペースト(右クリック)します。
10. Escで入力モードを抜け、「:wq」を実行して保存して終了します。
11. 「chmod 600 .ssh/authorized_keys」を実行してパーミッションを変更します。
12. 「exit」で一旦PuTTYは終了します。
13. PuTTYを起動して、左メニューの「認証」を選びます。
14. 「認証のためのプライベートキーファイル」で作成したpublic keyを選択します。
ステップ4. SSHの設定
このステップでは、以下を実施します。
・SSH接続のポート番号を変更
・パスワードログインの禁止
・rootログインの禁止
デフォルトのポート番号は22ですが、そのままだと使っているポートがバレバレで攻撃の対象になってしまうので変更します。また、パスワードログインやrootログインを禁止して、鍵認証でのログインのみを許可することで、セキュリティを強化します。
1. 「sudo -s」を実行しパスワードを入力することで、ルート権限になります。
2. まずは「cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org」を実行して、設定ファイルのバックアップを取っておきます。
3. 「vi /etc/ssh/sshd_config」を実行します。
4. iでインサートモードにして、「#Port 22」の先頭の#を削除します。
5. ポート番号は1024~65535の任意の番号を指定します。
6. Escで入力モードを抜け、「/Password」を実行します。
7. PasswordAuthenticationを「no」に変更します。
8. Escで入力モードを抜け、「/Permit」を実行し、nを押下して次に移動しながらPermitRootLoginを探します。
9. PermitRootLoginの先頭の#を削除(xで消えます)して、こちらも「no」に変更します。
10. Escで入力モードを抜け、「:wq」を実行して保存して終了します。
11. 「service sshd restart」を実行します。
次回のSSH接続時には、ポート番号を変更して接続してください。ポート番号が変わったことでセキュリティ警告が表示されますが、[はい]をクリックして接続します。
鍵認証による接続なので、ユーザー名を入力したら「ステップ3の4」で設定したパスフレーズを入力してログインします。
ステップ5. ファイアーウォールの設定
1. 「sudo -s」を実行して、ルート権限になります。
2. 「vi /etc/sysconfig/iptables」を実行します。
3. 以下をコピペで貼り付け(右クリックで貼り付け)ます。
※60205のところは変更したポート番号に合わせてください。
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # SSH, HTTP, FTP1, FTP2, MySQL -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 60205 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
4. 「service iptables start」を実行します。
5. 「iptables -L」を実行すると設定内容を確認することができます。
ステップ6. Webサーバーの設定
1. 「yum install httpd」を実行してhttpdをインストールします。
2. 「Is this ok」というメッセージが表示されたら、yを入れてEnterを押します。
3. インストールが完了したら、「chkconfig httpd on」を実行して自動実行をオンにします。
4. 「cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org」を実行して、設定ファイルのバックアップを取っておきます。
5. 「vi /etc/httpd/conf/httpd.conf」を実行します。
6. 「/ServerTokens」を検索し、OSをProdに変更します。
7. 「/ServerSignature」を検索し、OnをOffに変更します。
8. 「/Options Indexes FollowSymLinks」を検索し、Indexesの前にハイフン(-)を入れます。
9. Escで入力モードを抜け、「:wq」を実行して保存して終了します。
10. 「service httpd configtest」を実行し、「Syntax OK」と表示されるか確認します。
11. 「service httpd start」を実行してWebサーバーを起動します。
ステップ7. FTPの設定
1. ブラウザでVPS用に割り振られたIPアドレスにアクセスしてみます。
※以下のような画面が表示されれば、正常にWebサーバーが動いています。
2. 「chown -R ユーザー名:ユーザー名 /var/www/html/」を実行して、htmlフォルダ以下にファイルをアップロードできるようにします。
ファイルをアップロードする場所は、/etc/httpd/conf/httpd.confの中のDocumentRootで定義されています。/var/www/html/配下にアップロードしたファイルが、ブラウザでアクセスした時に表示されます。
3. FTPソフトで接続用の設定を行っていきます。今回はFileZillaを使います。
4. FileZillaを起動して、[編集] – [設定]を開きます。
5. 「SFTP」を選択し、[鍵ファイルの追加]をクリックします。
6. 保存しておいたppkファイルを選択します。
7. FileZillaが対応していない旨のメッセージが表示されるので[はい]を選択します。
8. ppkファイルを生成した時に設定したパスフレーズを入力して、ファイルを保存します。
9. サイトマネージャを開いて、以下のようなサイトを追加します。
ホスト名:IPアドレス
ポート:設定したポート番号
プロトコル:SFTP
ログオンの種類:通常
ユーザー名:さくらVPSで作成した作業用ユーザー
パスワード:空白
リモートディレクトリ:/var/www/html/
無事接続できたら、/var/www/html/配下に適当なファイルをアップロードしてみましょう。IPアドレスにブラウザでアクセスして、表示が切り替われば成功です。
ステップ8. マルチドメインの設定
デフォルトの状態だと、/var/www/html/内の1箇所しかサイトを表示できないので、マルチドメインに対応させる設定をしていきます。
今回は例として、以下のような構成にしようと思います。
ドメイン:hogehoge.com
ディレクトリ:/var/www/html/hogehoge/
hogehoge.comにアクセスされたら、hogehogeディレクトリの内容を返すようにします。
1. SSHにて「mkdir /var/www/html/hogehoge」を実行して、ディレクトリを作成します。
2. 「chown -R ユーザー名:ユーザー名 /var/www/html/hogehoge/」を実行して、作業用ユーザーに所有権を割り当てます。
3. 「vi /etc/httpd/conf.d/vhost.conf」を実行して、iを押して以下を貼り付けます。
※ドメインやディレクトリは変更してください。
<VirtualHost *:80> ServerName hogehoge.com ServerAlias www.hogehoge.com DocumentRoot "/var/www/html/hogehoge" DirectoryIndex index.html index.php ErrorLog /var/log/httpd/hogehoge_error_log CustomLog /var/log/httpd/hogehoge_access_log combined AddDefaultCharset UTF-8 <Directory "/var/www/html/hogehoge"> AllowOverride All </Directory> </VirtualHost>
4. Escで入力モードを抜け、「:wq」を実行して保存して終了します。
5. 「vi /etc/httpd/conf/httpd.conf」を実行します。
6. 「/NameVirtualHost」を検索し、先頭の#をxで削除します。
7. 「:wq」を実行して保存して終了します。
8. 「service httpd configtest」を実行し、「Syntax OK」と表示されるか確認します。
9. 「service httpd restart」を実行してWebサーバーを再起動します。
ここまでできたら、FTPで作成したディレクトリにファイルをアップロードして表示を確認します。取り急ぎ、hostsファイルでさくらVPSのIPをドメインに割り当てて確認してみます。hostsファイルは、C:\Windows\System32\drivers\etcにあるので、これをテキストエディタで開きます。上記の例でいうと、以下のような行を追加します。
IPアドレス hogehoge.com
hostsファイルを保存したら、ブラウザでhogehoge.comにアクセスします。すると、FTPでアップした内容が表示されるかと思います。
ステップ9. epelとremiリポジトリの導入
epelとremiを導入することで、PHPやMySQLのアップデートができるようになります。PHPやMySQLの現在のバージョンは、「yum info php」や「yum info mysql-server」で確認することができます。
1. 以下URLから「epel-release-x-x.noarch.rpm」のリンク先をコピーします。ファイルをダウンロードするのではなく、[リンクアドレスのコピー]を実行します。
http://dl.fedoraproject.org/pub/epel/6/x86_64/
2. wgetコマンドを実行してepelをダウンロードします。
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
3. 以下URLから「remi-release-6.rpm」のリンク先をコピーします。
http://rpms.famillecollet.com/
4. 以下コマンドを実行します。
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
5. 以下コマンドを実行します。
rpm -Uvh epel-release-6-8.noarch.rpm rpm -Uvh remi-release-6.rpm
6. 「vi /etc/yum.repos.d/epel.repo」を実行して、enable=1をenable=0に変更します。
7. 「:wq」を実行して保存して終了します。
ステップ10. PHPのインストール
1. 「yum info –enablerepo=remi php」を実行してPHPのバージョンをチェックします。
2. 「yum –enablerepo=remi install -y php php-devel php-mysql php-mbstring php-gd」を実行します。
3. Complete!と表示されたら、「vi /etc/php.ini」を実行します。
4. 「/error_log」で検索し、「;error_log = syslog」の下に「error_log = /var/log/php_error.log」を追加します。
5. 「/mbstring」で検索し、「;mbstring.language = Japanese」の先頭の;を削除します。
6. すぐ下に「;mbstring.internal_encoding = EUC-JP」があるので、先頭の;を削除しEUC-JPをUTF-8に変更します。
7. さらにすぐ下に「;mbstring.http_input = auto」という項目があるので、先頭の;を削除します。
8. 少し下に「;mbstring.detect_order = auto」という項目があるので、これも先頭の;を削除します。
9. 「/expose_php」で検索し、「expose_php = Off」に変更します。
10. 「/timezone」で検索し、「;date.timezone =」を「date.timezone = Asia/Tokyo」に変更します。
11. 「:wq」を実行して保存して終了します。
12. 「service httpd restart」を実行してWebサーバーを再起動します。
13. 「php -v」を実行して、PHPがインストールされたことを確認します。
ステップ11. MySQLのインストール
1. 「yum install -y –enablerepo=remi mysql-server」を実行します。
2. Complete!と表示されたら、「vi /etc/my.cnf」を実行します。
3. 「socket=/var/lib/mysql/mysql.sock」の下に以下を追記します。
character_set_server=utf8 default-storage-engin=InnoDB innodb_file_per_table [mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8
4. 「:wq」を実行して保存して終了します。
5. 「service mysqld start」を実行します。
6. 「/usr/bin/mysql_secure_installation」を実行します。
7. 最初はEnterで次に進み、「Set root password?」と聞かれるので「Y」と入力してEnterを押下します。
8. パスワードを入力し、その他はEnterで最後まで進めます。
9. 「chkconfig mysqld on」を実行します。
10. 「mysql -u root -p」を実行して、正常に動いているか確認します。パスワードを聞かれるので、先ほど設定したrootパスワードを入力してください。
11. バージョン情報などが表示されたら、正常に起動できていることになります。
12. 確認できたら、「exit」でMySQLを抜けます。
ステップ12. phpMyAdminのインストール
1. 「yum –enablerepo=remi install -y phpmyadmin」を実行します。
この時エラーが発生し、phpMyAdminのインストールができない場合があります。その場合は、以下コマンドを順番に実行して、RPMforgeリポジトリのインストールすることで、「yum –enablerepo=remi install -y phpmyadmin」が正常に走るようになります。
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt rpm -ivh http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
2. 「vi /etc/httpd/conf.d/phpmyadmin.conf」を実行し、以下の行の先頭に#を入れてコメントアウトします。
Order Deny,Allow Deny from All Allow from 127.0.0.1
3. コメントアウトした行のすぐ下に以下を追加します。
Order Allow,Deny Allow from all
4. 「service httpd restart」を実行してWebサーバーを再起動します。
※この時点でphpMyAdminにアクセスしても「設定ファイルが秘密のパスフレーズ (blowfish_secret) を必要とするようになりました」というエラーが表示されるので、手順5以降でこれを解消します。
5. 「vi /usr/share/phpmyadmin/config.inc.php」を実行します。
6. 先頭の方に$cfg[‘blowfish_secret’]という項目があるので、以下のように適当な値を入れます。
$cfg['blowfish_secret'] = 'hoge'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
ちなみに、後でここで設定した値の入力を求められることはありません。
7. 「/mysql」で検索すると、$cfg[‘Servers’][$i][‘extension’]という項目があるので、値をmysqlからmysqliに変更します。
$cfg['Servers'][$i]['extension'] = 'mysqli';
8. 「:wq」を実行して保存して終了します。
9. http://ホスト名/phpmyadmin/にアクセスすると、phpMyAdminが表示されます。ホスト名はVPSのコントロールパネルにログインすると確認できます。ホスト名の部分はIPアドレスでもOKです。
ステップ13. ネームサーバーの設定
1. 会員メニューにログインし、[契約情報] – [契約ドメインの確認] – [ドメインメニュー]に移動します。
2. 左のメニューから[ネームサーバ新規登録]を選択します。
3. 新しいネームサーバの登録でドメイン名を入力し[送信]をクリックします。
4. [ドメインメニューへ]をクリックして、ドメインリストに戻ります。
5. 追加したドメインの横に表示される[ゾーン編集]をクリックします。
6. 「サーバのIPアドレス」にIPアドレスを入力して[送信]をクリックします。
7. NSに表示される以下2つを、レジストラ(ムームードメインやお名前.comなど)で該当ドメインのネームサーバーに設定します。
ns1.dns.ne.jp ns2.dns.ne.jp
8. あとはネームサーバーの設定が反映されるのを待ちます。
ステップ14. メールの設定
メールの送受信ができるように設定します。きっちりやるならメールサーバーを構築すると思いますが、ここでは標準でインストールされているpostfixを使ってメール送受信する方法を解説します。
1. まずは以下のコマンドを実行して、postfixが動いているか確認します。
mail test@hogehoge.com ←送信先メールアドレス Subject: test ←メールの件名 test ←メールの本文
最後は.(ドット)を入れてEnterを押下します。username@www1234ua.sakura.ne.jpのようなメールアドレスからメールが届けば、postfixが正常に動いているということになります。
2. さくらの会員メニューからDNSレコードを編集します。追加するのは以下2つです。
エントリ名:@ タイプ:TXT データ:v=spf1 mx ~all エントリ名:@ タイプ:MX データ:10 www1234ua.sakura.ne.jp.
MXレコードは、利用されているサーバーのアドレスを入れてください。
3. SSHに戻って「cp /etc/postfix/main.cf /etc/postfix/main.cf.org」を実行します。
4. 「vi /etc/postfix/main.cf」を実行して、以下のように設定されているかチェックします。値が違っていたりコメントアウトされていたら変更します。
inet_interfaces = all mynetworks_style = host smtpd_banner = $myhostname ESMTP unknown virtual_alias_domains = hogehoge.com virtual_alias_maps = hash:/etc/postfix/virtual
4行目(hogehoge.comの部分)には、設定したいドメインを入力します。複数ある場合はカンマ区切りで入力してください。
5. 「:wq」を実行して保存して終了します。
6. 「vi /etc/postfix/virtual」を実行して、以下を追加します。
hogehoge.com anything info@hogehoge.com hogehoge@gmail.com
※1行目に記述したドメイン宛のメールを2行目に記述したメールアドレスに転送します。
7. 「:wq」を実行して保存して終了します。
8. 「postmap /etc/postfix/virtual」を実行します。
9. 「service postfix restart」を実行してpostfixを再起動します。
10. 「/etc/sysconfig/iptables」を実行して、以下を追加します。
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
11. 「:wq」を実行して保存して終了します。
12. 「service iptables restart」でiptablesを再起動します。
あとがき
ここまで設定ができたら、あとは他のレンタルサーバーと同じように、phpMyAdminからデータベースを追加し、FTPサーバーにWordPressのファイルをアップロードして、インストールしてあげればOKです。
コマンドラインからインストールする場合は、以下のコマンドを実行すればWordPressが設置されます。以下コマンド実行後、サイトにアクセスするとWordPressのインストール画面が開きます。
cd /var/www/html/hogehoge wget https://ja.wordpress.org/wordpress-4.7.3-ja.tar.gz tar xvzf wordpress-4.7.3-ja.tar.gz rm wordpress-4.7.3-ja.tar.gz mv wordpress/* . rmdir wordpress chown -R apache:vpsuser * chmod –R g+w *
※1行目のhogehogeはマルチドメインで設定したフォルダを指定してください。
長々と書いてきましたが、上述した手順通りに進めていけば、そんなに悩む箇所はないかと思います。これからVPSを触ってみようとお考えの方は、参考にしていただけると幸いです。