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はテキストファイルを編集するコマンドです。モードの概念があるため少し戸惑いますが慣れれば簡単です。始めはコマンドモードから始まるので入力できません。入力の際は「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 [email protected] #サーバ名(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をインストール】を押します。
正常にインストールできれば下記のようにサイトが表示されます。
これですべて完了しました。
「クラウドテック」です。 掲載案件では平均月60万、週3~4日勤務の案件が豊富で生活スタイルに合わせた働き方を設計できます。 また福利厚生が充実し旅行、レジャー、家事代行、ヘビーシッター、健康診断など100種類以上を無料で使えます。
- 97%がリモートのお仕事
- 週4日、週3日OKのお仕事多数
- 登録社数74万件業界トップクラス
- 2〜4週間程度でお仕事決定