さくらVPSの初期設定からWordPressをインストールしサイトを公開する方法

VPSとは

VPSとは仮想上のサーバのことです。通常のレンタルサーバではサーバ1台を多くのユーザーで共有するのに対しVPSの場合1台のサーバをまるまる占有することになります。

そのためサーバに様々なソフトをインストールでき自由なサーバ設計ができます。しかしLinuxの操作が必要など専門知識が必要です。

さくらVPS

さくらVPSはさくらインターネットがサービスを提供するVPSのレンタルプランです。価格も安くマニュアルも充実しています。2週間のお試しがあり「始めたいけど不安だ」という方でも始めやすいと思います。今回は実際にさくらVPSをレンタルし設定していきます。

Linuxの操作

VPSのOSはLinuxです。当然Linuxを操作する必要があります。MacやWindowsと同じOSの種類ですが、操作方法はコマンドです。慣れない内は敷居が高いように感じますが慣れれば簡単です。

なぜなら所詮OSの操作です。MacやWindowsの操作ができるならだれでもできるはずです。ほどんどの操作はフォルダの移動、作成、インストール作業です。これは今触っているOSの操作でやっていることです。今回の記事でコマンドの説明もしていきますので心配ありません。

ネットワークの知識

VPSはサーバの設定をするにあたりある程度ネットワークの知識が必要です。IPアドレス、ポート、DNSなどのネットワークの用語を理解している必要があります。わからない場合はググりながら知識を深めていきます。

SSHクライアントソフトをインストールする

サーバの操作にはSSHクライアントソフトが必要です。SSHはプロトコルの名前でクライアントとはサーバに要求しサービスを受けるアプリケーションのことです。SSHはリモートでサーバを安全にコントロールするプロトコルです。

SSHクライアントソフトとはWindowsやMac(クライアントPC)からリモートでサーバをコントールするソフトです。今回はWindowsの代表的ソフト「Tera Term」をインストールします。下記からダウンロードしインストールしてください。

「Tera Term」窓の杜
https://forest.watch.impress.co.jp/library/software/utf8teraterm/

さくらVPS契約

では実際にさくらVPSを契約し設定していきます。

さくらVPS
http://vps.sakura.ad.jp/

今回は一番安い512MBのプランを契約します。サイトの指示にしたがって申し込みしていきます。

完了メール

申し込み完了すると10分以内に「お申込み完了のお知らせ」と「[さくらのVPS] 仮登録完了のお知らせ」というメールが届きます。「[さくらのVPS] 仮登録完了のお知らせ」のメールを開くとサーバ情報が記載されています。この情報を基にしてログインし設定していきます。

設定

さくらのVPSはデフォルトで「CentOS6」というOSがインストールされています。CentOSは一般的にWEBサーバを構築する場合によく使われるOSです。今回は「CentOS6」を使って説明していきます。

サーバにログイン

まずメールに記載されているサーバ情報「VPSコントロールパネル ログイン情報」のURLからログインし管理画面からサーバを起動します。

「tera term」を起動しメールに記載されている「サーバ基本情報」のIPアドレスを入力し【OK】をクリックします。

【続行】をクリックします。

メールの「サーバ基本情報」からユーザ名を「root」、パスフレーズに「初期パスワード」を入力し【OK】をクリックします。

下記のようになるとログイン成功です。

システムのアップデート実行

システムをアップデートします。パッケージ管理ツールの「yum」コマンドを使ってアップデートします。

yum updete

アップデートできるパッケージがあるとダウンロードするかどうかを確認する「y/N」が表示されます。「y」を入力します。

「Complete!」が表示されれば完了です。

アップデートできるパッケージがない場合は「No Packages marked for Update」と表示されます。

パッケージ管理ツールとは
WindowsやMacの場合アプリケーションをインストールをすれば自動でアプリを管理し、一覧表示、アンインストールなども簡単に操作できます。しかしLinuxではインストールしたアプリはOSが管理してくれません。管理したい場合は「パッケージ管理ツール」を使います。ツール経由でインストールすればリスト管理やアンインストールなどWindowsやMacで管理しているようなことが実現できます。

iptablesの設定

iptablesはパケットのフィルタリング設定をするコマンドです。このコマンドでIPアドレス、プロトコル、ポートなどを制御(許可、制限など)することができます。Windowsのファイアウォールの設定みたいなものです。

デフォルトではSSHしか許可されていないため必要なポートを開放していきます。それでは設定していきます。設定はiptablesコマンドで行います。

#INPUTチェインのポリシーをDROPにする
iptables -P INPUT DROP
#FORWARDチェインのポリシーをDROPにする
#デフォルトのFORWARDチェインのポリシーはACEEPT(通過を許可)となっているため
iptables -P FORWARD DROP

#ユーザー定義チェイン
iptables -N Firewall-INPUT

##ローカルからの通信を許可
iptables -A Firewall-INPUT  -i lo   -j ACCEPT

## Ping許可
iptables -A Firewall-INPUT  -p icmp --icmp-type any -j ACCEPT

## データを持たないパケットの接続を破棄する 
iptables -A Firewall-INPUT -p tcp --tcp-flags ALL NONE -j DROP

## SYNflood攻撃と思われる接続を破棄する
iptables -A Firewall-INPUT -p tcp ! --syn -m state --state NEW -j DROP

## ステルススキャンと思われる接続を破棄する
iptables -A Firewall-INPUT -p tcp --tcp-flags ALL ALL -j DROP

## 確立済みの通信を許可
iptables -A Firewall-INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT

##指定ポートのINPUTを許可
iptables -A Firewall-INPUT  -m state --state NEW -m tcp -p tcp --dport 80  -j ACCEPT
iptables -A Firewall-INPUT  -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
iptables -A Firewall-INPUT  -m state --state NEW -m tcp -p tcp --dport 22  -j ACCEPT
iptables -A Firewall-INPUT  -m state --state NEW -m tcp -p tcp --dport 21  -j ACCEPT
iptables -A Firewall-INPUT  -m state --state NEW -m tcp -p tcp --dport 110  -j ACCEPT
iptables -A Firewall-INPUT  -m state --state NEW -m tcp -p tcp --dport 25  -j ACCEPT
iptables -A Firewall-INPUT  -m state --state NEW -m tcp -p tcp --dport 587  -j ACCEPT
iptables -A Firewall-INPUT  -m state --state NEW -m tcp -p tcp --dport 36500:36999 -j ACCEPT

# 接続許可のルールに一致しなかったパケットはREJECT
iptables -A Firewall-INPUT  -j REJECT --reject-with icmp-host-prohibited

#INPUTチェインをユーザー定義チェインにジャンプさせる
iptables -A INPUT  -j Firewall-INPUT

#設定を反映
service iptables save

下記のようにひたすら貼り付けてコマンドを実行していきます。

しかしこれでポートが開放されていなかったのでもう一度設定を確認するとデフォルトで設定されている部分が邪魔していました。
次はコマンドでの設定ではなくファイルを編集し設定します。
ファイルをviコマンドで編集します。

vi /etc/sysconfig/iptables

邪魔をしている部分をコメントアウトします。

保存して終了します。
設定を反映させるためサービスを再起動します。

service iptables restart

これでポートが開放されました。

viコマンド
viはテキストファイルを編集するコマンドです。モードの概念があるため少し戸惑いますが慣れれば簡単です。始めはコマンドモードから始まるので入力できません。入力の際は「i」キーを押し入力モードに変更します。コマンドモードは「ESC」キー押すと戻ります。コマンドモードで「:wq」と押すと保存して終了します。「:q」は終了、「:q!」で保存せずに終了になります。基本操作は以上です。

ユーザーの作成

現状rootで直接接続していますが、セキュリティ面を考えてrootでのログインを禁止します。ログインはroot権限を持たない通常のユーザーのみを許可します。それではSSHログイン用のユーザーを作成します。

#ユーザー作成(hogehogeは任意のユーザー名を入力)
adduser hogehoge

#パスワードを設定(hogehogeは上記で作成したユーザー名)
passwd hogehoge

下記のようにパスワードを入力し完了です。

SSHの設定

ここではrootでのSSH接続を禁止する設定を行います。これでセキュリティが少し上がります。

設定ファイルは「/etc/ssh/sshd_config」viで編集します。

vi /etc/ssh/sshd_config

PermitRootLoginの項目をnoにします。

#PermitRootLogin yes
PermitRootLogin no

設定を反映させるためにサービスを再起動します。

service sshd restart
次回からのログイン方法
設定を完了すると次回からrootでのログインはできません。ログインする際は先ほど作った通常のアカウントでログインしその後rootユーザーに切り替えます。切り替える方法はコマンドで「su -」と入力しエンターを押したあとrootのパスワードを入力すると切り替わります。

Apacheの設定

ApacheはhttpプロトコルのサービスでWebサーバになります。httpクライアント(ブラウザ)は「chrome」「firefox」「IE」などがあります。httpサーバのアプリケーションがこの「Apache」になります。ブラウザが要求しApacheが要求に答えます。

このサービスが起動していないとホームページは表示されません。ホームページを運用するためには絶対に必要なアプリケーションです。それではyumコマンドを使ってインストールします。

yumを使ってインストールします。

yum install httpd

Is this ok [y/N]: y

設定ファイルは「/etc/httpd/conf/httpd.conf」viで編集します。

vi /etc/httpd/conf/httpd.conf

ServerTokensを変更することでサーバ情報をあまり公開しないようにします。

#HTTPリプライヘッダに含まれるServerの情報を最小限にする
#ServerTokens OS
ServerTokens Prod

タイムアウトの設定を変更します。

#タイムアウトの設定を180秒に変更
#Timeout 60
Timeout 180

サーバの基本設定をします。

#サーバの連絡先(hogehogeは任意のドメイン、アカウント)
#ServerAdmin root@localhost
ServerAdmin hogehoge@hogehoge.hoge

#サーバ名(hogehogeは任意のドメイン)
#ServerName www.example.com:80
ServerName www.hogehoge.hoge

#<Directory "/var/www/html"></Directory>内の設定
#.htaccessを有効にする
#AllowOverride None
AllowOverride All

#エラー画面に表示されるApacheのバージョン情報等を表示しない
#ServerSignature On
ServerSignature Off

#デフォルトの/icons/ /manual/等を非表示
#Alias /icons/ "/var/www/icons/"

#<Directory "/var/www/icons">
#    Options Indexes MultiViews FollowSymLinks
#    AllowOverride None
#    Order allow,deny
#    Allow from all
#</Directory>

#バーチャルドメインを有効
#NameVirtualHost *:80
NameVirtualHost *:80

viを保存して終了します。

次に「ようこそページ」を無効化します。

mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf_

httpdサービスを起動します。

service httpd start

起動するとVirtualsHotsの設定がないため下記のようにエラーがでます。後程設定しますので今は無視します。

chkconfigコマンドでサーバが再起動してもサービスが自動で立ち上がるように設定します。

chkconfig httpd on

FTP(VSFTPD)の設定

サーバにデータをアップロードするためにFTPサーバを構築します。FTPはファイルを転送するために使うプロトコルです。クライアントソフトはFFFTPやWinSCPなどが有名です。FTPのサーバソフトはVSFTPDがよく使われます。yumコマンドを使ってインストールします。

yum install vsftpd

Is this ok [y/N]: y

設定ファイルは「/etc/vsftpd/vsftpd.conf」viで編集します。

vi /etc/vsftpd/vsftpd.conf
#匿名FTPサーバを使用しない
#anonymous_enable=YES
anonymous_enable=NO

#アスキーモードでのアップロードできるようにする(コメントアウトを外す)
ascii_upload_enable=YES
#アスキーモードでのダウンロードできるようにする(コメントアウトを外す)
ascii_download_enables=YES

#アクセス制限設定
#ユーザーリストファイルを使ってアクセス制限し内容はuserlist_denyの設定決まる
userlist_enable=YES
#リストアップしたユーザはアクセス拒否(追加)
userlist_deny=YES
#ユーザーリストファイルの指定
userlist_file=/etc/vsftpd/user_list
#時間の設定を日本時間にする(追加)
use_localtime=YES
#hosts.allowとhosts.denyでアクセス制限できないようにする
#tcp_wrappers=YES
tcp_wrappers=NO

#設定したディレクトリより上層ディレクトリへの移動を禁止(コメントアウトを外す)
chroot_local_user=YES
#ユーザー毎に個別で設定できるようにコンフィグようのディレクトリを定義(追加)
user_config_dir=/etc/vsftpd/users_conf
#パッシブモード接続の許可(追加)
pasv_enable=YES
#PASVモードで使用する最小ポート番号(追加)
pasv_min_port=36950
#PASVモードで使用する最大ポート番号(追加)
pasv_max_port=36999

設定完了後保存して終了します。
次にユーザーリストにアクセス拒否するアカウントを記述します。ftp、ssh、apacheを追加します。

vi /etc/vsftpd/user_list
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
ftp
ssh
apache

保存して終了します。

ユーザーコンフィグを設定します。
設定したディレクトリを作成します。mkdirはディレクトリを作るコマンドです。

mkdir /etc/vsftpd/users_conf

FTPサーバを起動します。

service vsftpd start

chkconfigコマンドでサーバが再起動してもサービスが自動で立ち上がるように設定します。

chkconfig vsftpd on

PHPインストール

WordPressはPHPで動くためにはPHPのインストールが必要です。今回はPHP7をインストールします。PHP7をインストールするためにはyumのリポジトリを変更する必要があります。

yumはリポジトリというデータの保管庫にアクセスしダウンロードしてインストールします。デフォルトのリポジトリにはPHP5しかなくPHP7がありません。そこで新たにリポジトリを設定しそのリポジトリからPHP7をダウンロードしインストールします。

それではPHP7があるremiリポジトリを追加します。remiのRPMパッケージをダウンロードします。

wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

ダウンロードしたRPMパッケージをrpmコマンドでインストールします。

rpm -Uvh remi-release-6*.rpm

追加したリポジトリを指定しyumでPHP7.1をインストールします。

yum install --enablerepo=remi --enablerepo=remi-php71 php

Is this ok [y/N]: y

Completeで成功です。

php -vコマンドでバージョンを確認します。PHP7.1になっていればインストール完了です。

ほかにPHP関連のライブラリもインストールします。yumにオプション-yを記述すると「Is this ok [y/N]: y」を省略できます。

yum -y install  --enablerepo=remi --enablerepo=remi-php71 php-devel php-mbstring php-mysql php-pdo php-gd

MySqlをインストール

WordPressはDBを利用するためMySqlをインストールします。

yum -y install --enablerepo=remi mysql mysql-server mysql-devel mysql-libs

インストール完了後Mysqlの設定をします。
viコマンドで設定ファイルを編集します。

vi /etc/my.cnf
[mysqld]
#実行処理が1秒超えた場合スロークリエログに書き込む
long_query_time=1
#スロークリエのログファイルを定義
log-slow-queries=/var/log/mysql_slow.log
#指定するとインデックスを使用しないクエリも記録する
log-queries-not-using-indexes

#mysqlで文字コードをutf8にする
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
skip-character-set-client-handshake

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8


保存して終了します。

スロークリエのログファイルを作成します。
touchはファイルを作成するコマンドです。

touch /var/log/mysql_slow.log

ファイルの所有者をmysqlに与えます。
chownはファイルやディレクトリの所有者を変更するコマンドです。

chown mysql:mysql /var/log/mysql_slow.log

サービスを起動します。

service mysqld start

chkconfigコマンドでサーバが再起動してもサービスが自動で立ち上がるように設定します。

chkconfig mysqld on

mysqlのrootパスワードを設定します。

mysql_secure_installation

コマンドを打つと下記の文章が現れいろいろ確認してきます。基本Yでオッケーです。
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we’ll need the current
password for the root user. If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): ←ENTER
OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] y ←rootのパスワードを設定しますか?
New password: ←rootのパスワードを入力
Re-enter new password: ←rootのパスワードを確認のため再度入力
Password updated successfully!
Reloading privilege tables..
… Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y ←アノニマスユーザを削除しますか?
… Success!

Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y ←リモートのrootログインを禁止しますか?
… Success!

By default, MySQL comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y ←testデータベースを削除しますか?
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y   ←権限の変更を再読み込みしますか?
… Success!

Cleaning up…

All done! If you’ve completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

これでrootのパスワードの設定が完了しました。

phpMyAdmin

MySqlデータベースをWEB上で管理するためにphpMyAdminをインストールします。
yumコマンドを使ってインストールします。

yum install -y --enablerepo=remi --enablerepo=remi-php71 phpMyAdmin

phpMyAdminのWEB設定を変更します。

vi /etc/httpd/conf.d/phpMyAdmin.conf
#phpMyAdminのURLを推測されないためにエイリアスを設定
#/QVjpdoQoZCRHian3QryXlGh808Hq8OMO/の部分は推測されにくい文字列を入れる
Alias /QVjpdoQoZCRHian3QryXlGh808Hq8OMO/phpMyAdmin /usr/share/phpMyAdmin
#コメントアウトします。
Alias /phpmyadmin /usr/share/phpMyAdmin
↓
#Alias /phpmyadmin /usr/share/phpMyAdmin
#一番初め「Deny from All」をコメントアウトします。
Deny from All
↓
#Deny from All

設定を反映するためにApacheを再起動します。

service httpd restart

実際にアクセスしてみて起動するか確認してください。
http://IPアドレス/QVjpdoQoZCRHian3QryXlGh808Hq8OMO/phpMyAdmin

ドキュメントルートを設定

サイトを公開するためのドキュメントルートを設定します。バーチャルドメインを有効にしているので1台のサーバにいくつものドメインを紐づかせることができ多くのサイトを公開できます。

まずドキュメントルートとログのディレクトリを作成します。mkdirはディレクトリを作成するコマンドです。オプション-Pを設定すると再帰的に作成します。hogehogeは任意のドメイン名です。

mkdir -p /var/www/vdomain/hogehoge/httpdocs   ←hogehogeはドメイン名に変更
mkdir -p /var/www/vdomain/hogehoge/logs    ←hogehogeはドメイン名に変更

次にapacheを設定します。「/etc/httpd/conf.d/」内に「~.conf」というファイルを作成すると「/etc/httpd/conf/httpd.conf」を修正しなくてもコンフィグファイルを読み込んでくれます。このディレクトリ内にコンフィグを設定します。
hogehogeは任意のドメイン名です。

vi /etc/httpd/conf.d/hogehoge.conf    ←hogehogeはドメイン名に変更
<VirtualHost *:80>
    #ドメイン名を設定
    ServerName www.hogehoge             ←hogehogeはドメイン名に変更
  #エイリアスを設定
    ServerAlias hogehoge                ←hogehogeはドメイン名に変更
    #先ほど作ったドキュメントルートを設定
    DocumentRoot /var/www/vdomain/hogehoge/httpdocs   ←先ほど作ったディレクトリ
  #先ほど作ったログディレクトりを設定
    ErrorLog /var/www/vdomain/hogehoge/logs/error_access_logs ←先ほど作ったディレクトリ
    CustomLog /var/www/vdomain/hogehoge/logs/main-access_log combined env=!no_log ←先ほど作ったディレクトリ
  #.htaccessを使えるようにする
    <Directory /var/www/vdomain/hogehoge/httpdocs> ←先ほど作ったディレクトリ
        AllowOverride ALL
        Order allow,deny
      Allow from all
    </Directory>
</VirtualHost>

保存して終了します。
サービスを再起動してapacheの設定を反映させます。

service httpd restart

FTPを設定する

データを前項で作ったドキュメントルートにアップロードするためにFTPの設定をします。
まずFTPのユーザーアカウントを作成します。

adduser アカウント名
passwd アカウント名
→パスワード

ドキュメントルートの所有者を上記で作成したユーザーアカウントにします。
chownコマンドを使って所有者を変更します。

chown アカウント名:アカウント名 /var/www/vdomain/hogehoge/
chown アカウント名:アカウント名 /var/www/vdomain/hogehoge/httpdocs/
chown アカウント名:アカウント名 /var/www/vdomain/hogehoge/logs/

FTPのログインディレクトリを設定します。
FTPのコンフィグファイルを作成し設定します。

vi /etc/vsftpd/users_conf/アカウント名
local_root=/var/www/vdomain/hogehoge/ ←ログインディレクトリを指定

設定完了後FTPクライアントからログインできるか確認してください。

ドメインにIPアドレスを割り当てる

「ドキュメントルートを設定」で設定したドメインに今回契約したVPSサーバのIPアドレスを割り当てます。割り当てはDNSサーバで行います。今回はお名前.comのDNSサーバを使って設定します。

お名前.comにログインしDNSの設定画面からIPアドレスを割り当てます。


反映には数分かかります。

WordPressをインストールしアクセスする

WordPressをダウンロードします。
https://ja.wordpress.org/

ダウンロードしたデータを解凍しwordpressフォルダに移動します。

FTPクライアントを使ってさきほど作ったアカウントでログインします。

解凍したデータをFTPクライアント使ってhttpdocsディレクトリにアップロードします。

アップロードに数分かかるので、その間phpMyAdminからWordPress用のDBを作成します。rootでログインします。

上部のタブから「データベース」を選択し下記のフォームからデータベースを作成します。今回はDB名「wpdb」を作成します。フォームにDB名を入力し【作成】ボタンを押します。

完了後、DBのユーザーを作成します。上部のタブから「User accounts」を選択します。

「Add user account」を押します。

「User name」「Host name」「パスワード」「Re-type」を入力します。完了後、下部にある【実行】ボタンを押します。

ユーザー追加完了後そのアカウントからDBにアクセスできるように権限を与える設定を行います。下記のデータベースを選択します。

作成したDBを選択し【実行】を押します。

「Check all」にチェックを入れ【実行】を押します。これでDBの設定は完了しました。

データのアップロード完了後、ドメインにアクセスするとWordPressの初期画面が表示されます。画面から初期設定を行います。

先ほど作ったDBの情報を入力します。完了後【送信】を押します。

「wp-config-sample.php」を「wp-config.php」にリネームし画面の指示に従って内容をコピペしアップロードします。

サイト情報を入力し【WordPressをインストール】を押します。

正常にインストールできれば下記のようにサイトが表示されます。

これですべて完了しました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする