基本的な使い方

VPS の初期設定 (ConoHa で CentOS 7 を使う)

投稿日:2018年5月22日 更新日:

ConoHa で VPS サーバーを追加した場合の初期設定について説明します。

あくまで一例です。

1. サーバーを追加する

まず、ConoHa の ログイン ページからログインします。

画面左上にある「サーバー追加」を押します。


今回は以下の項目を選択しました。(主な項目だけ抜粋)

リージョン 東京
サービス VPS 512MB
イメージタイプ OS CentOS 7.4 (64bit)
イメージタイプ アプリケーション LAMP(PHP)
追加ディスク 使用しない
接続許可ポート IPv4 全て許可
※ これはインバウンド(外から入っている通信)の設定です。
※ OSの外部での設定のようです。
※ ヘルプの説明
接続許可ポート IPv6 全て許可
※ ヘルプの説明(IPv4の説明と同じ)
SSH Key キーを選択
※ 既にローカルに鍵ファイルが作成済みであったため、事前に公開鍵だけ登録しておき、ここでそれを選択しました。
スタートアップスクリプト 使用しない
リージョンとOSを選択
アプリケーションを選択
オプションを選択
サーバーが作成されました

SSH のキーについて

SSH というのは、暗号化通信プロトコルの1つです。この暗号化通信を使って遠隔のサーバーにログインすることができます。そして、事前に作成しておいた「キー(鍵)」を使ってログイン時の認証を行うことができます。
この「キー」というのは、「公開鍵」と「秘密鍵」とがペアになったもので、どちらも複雑なデータのカタマリです。「秘密鍵」は自分だけが持ち、「公開鍵」は文字通り誰に渡しても構いません。通信する際には、送信者が送りたいデータを片方の鍵で暗号化して送り、受け取った方はもう一つの鍵で復号することができます。

SSH Key

「SSH Key」のところは「使用しない」でも構いません。その場合は、SSHでのログイン認証にパスワードを入力します。

しかし、「キー(鍵)」を使えば、ログイン時にパスワードを入力する必要がなくなり、しかもこの「キー」を持っていないとログインできなくなるため、サーバーがより安全になります。

既に SSH の鍵ファイルを持っている場合や今から作成して使いたい場合は、「キーを新規作成」を選ぶと「キーの作成」もしくは「キーのインポート」をこの場で行うことができます。
上記の画面では、事前に [セキュリティ] – [SSH Key] メニューから公開鍵ファイルをインポートしてあったので、「キーの選択」からそのキーを指定しています。

2. SSH でログインする

では、追加したサーバーにログインします。

SSHでログインするためには専用のアプリケーションを使います。Windows でしたら、Tera TermPoderosaPuTTY といったソフトウェアがよく使われています。また、Windows 10 では WSL (Windows Subsytem for Linux) といったツールを使うこともできます。Mac でしたら標準の terminal から sshコマンドを使ってログインすることができます。

これらのアプリケーションを立ち上げたら、その中で sshコマンドを使ってサーバーにログインします。

$ ssh root@133.130.xxx.xxx

このコマンドは以下のようなフォーマットになっています。

ssh ユーザー名@サーバーのIPアドレス

各項目は以下のようになっています。

接続に使用するユーザーのユーザー名 root
※ この時点では root しかユーザーがいません。
そのユーザーのパスワード サーバーを追加する時に SSH Key を指定しなかった場合は、sshコマンド実行時にパスワードを入力します。パスワードは、サーバーを追加した時に設定しているはずです。
サーバーのIPアドレス ConoHa管理サイトの [サーバー]メニューを開き、目的のサーバーをクリックすると「IPアドレス」欄に表示されています。
SSHの秘密鍵ファイルを明示的に指定するには、-i オプションを使います。
例えばこんな感じです。

$ ssh -i path/to/秘密鍵ファイル ユーザー名@サーバーのIPアドレス

では、実際にログインしてみます。

$ ssh root@133.130.xxx.xxx

================================================
Welcome LAMP application!

DocumentRoot: /var/www/html
URL:          http://133.130.xxx.xxx/
phpinfo:      http://133.130.xxx.xxx/phpinfo.php
MySQL root password: xxxxxxxxx

Enjoy!

To delete this message: rm -f /etc/motd
================================================

今回は、サーバーを追加する時に「アプリケーション」として「LAMP (PHP)」を指定していたため、この時点で Apache, MySQL, PHP がインストールされており、それに関連する情報が表示されています。これらはどこかにメモしておきましょう

これを見ると、既にウェブサイトが公開されているようです。「URL」と「phpinfo」という部分がそのURLになっています。実際にアクセスしてみると、前者は特にたいした情報は表示されませんが、後者は PHPの設定情報が丸見えになっているので、何も表示しないようにしておきました。

$ vim /var/www/html/phpinfo.php

として phpinfo.php ファイルを開くと、以下の内容が記述されているので、

<?php phpinfo();

PHPコードをコメントアウトします。phpinfo() の前にスラッシュを2つ追記するだけです。以下のようになります。

<?php //phpinfo();

また、このままだとログインする度に先ほどの表示がされますが、この表示はいらないので以下のようにして表示しないようにします(この表示の一番下にこのコマンドについて記載されています)。

$ rm -f /etc/motd

3. ユーザーの追加

ここでは foo というユーザーを追加します。

$ useradd foo
$ passwd foo
$ gpasswd -a foo wheel

最後のコマンドでは、whell グループに foo ユーザーを追加しています。

今回の環境の場合、これだけで foo ユーザーは、sudo コマンドが使えるようになりました。

以後、fooユーザーでログインし直して、各コマンドを sudo で実行することもできますが、コマンド毎に sudo を付けるのが面倒なので、このまま root ユーザーで作業することとします(一部違うところもありますが)。

4. sshd のポート番号を変更

上の方でも書いた通り、SSH というのは暗号化通信を行うためのプロトコルなのですが、デフォルトでは 22番のポートを使って通信を待ち受けます(コンピュータは「ポート」と呼ばれるドアを用意して通信を行います)。これをこのままにしておくと世界中から 22番ポートに対して SSHでのログインを試みようとするアクセスがやってきて危険です。そのため、「SSH で使用するポート番号を変える」という対策がよく行われます。サーバー側のポート番号を変えても、クライアント側がその番号を知っていれば、問題なく SSHでアクセスすることができます。
sshd というのは、サーバー側で常時稼働している SSH通信プログラムを指しています。SSHで通信するのは、このプログラムが動いている必要があります。

sshd の設定ファイルを編集します。

$ vim /etc/ssh/sshd_config

ポート番号を変更するため「Port」でポート番号を指定します。既に「Port」の記述がある場合はそこを書き換えます。以下では、10022 に変更しています。

Port 10022

この CentOS 7 では、firewalld という「通信をフィルタリングするためのプログラム」が動いています。そのため、外部のコンピュータと通信を行うためには、firewalld を使って「ポートを開ける」という作業が必要になります。

firewalled で sshd のポート番号を変更するには、以下の手順で作業します。

まず、sshd に関するファイル /usr/lib/firewalld/services/ssh.xml を、/etc/firewalld/services/ 以下にコピーします。

$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/

そして、設定を変更するには /etc/firewalld/services/ssh.xml の方を編集します。
こちらを追加することで、元のファイルの設定を上書きするような動作になります。

$ vi /etc/firewalld/services/ssh.xml

port="xxxx" のところを書き換えます。

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" <span class="huto">port="10022"</span>/>
</service>

firewalld の設定ファイルを再読み込みさせます。

$ firewall-cmd --reload

sshd を再起動します。

$ systemctl restart sshd.service

5. sshd の設定をより安全なものにする

sshd をより安全な設定にします。

そのために、sshd の設定ファイルを編集します。

$ vi /etc/ssh/sshd_conf

以下を追記します。

PermitRootLogin no
Protocol 2
PasswordAuthentication no
  • この1行目では、root ユーザーのログインを許可しないようにします。
  • 2行目では、sshd のプロトコルとしてより安全なバージョンのみを許可しています。
  • 3行目では、パスワードによるログインを許可しないようにします。

sshd を再起動します。

$ systemctl restart sshd.service

6. ホスト名を変更

ホスト名を、foo.example.com に変更する場合は以下のように作業します。

まず、hostnamectl コマンドを実行します。

$ hostnamectl set-hostname foo.example.com

/etc/hosts を編集します。

$ vim /etc/hosts

以下を追記します。

133.130.xxx.xxx foo foo.example.com

7. パッケージの更新

CentOS が持っているパッケージ管理ツール yum を更新しておきます。

$ yum update

8. PHP のバージョンを 7 にする

デフォルトでは PHP 5.6 が入っていましたが、PHP 7.2 に変更します。新しい機能・文法が使えるようになりますし、動作も速くなるはずです。

PHP 5.6 関連のパッケージを削除します。

$ yum remove php56u*

PHP 7.2 関連のパッケージをインストールします。

$ yum install \
    mod_php72u \
    php72u-cli \
    php72u-common \
    php72u-devel\
    php72u-gd \
    php72u-imap \
    php72u-json \
    php72u-mbstring \
    php72u-mysqlnd \
    php72u-pdo \
    php72u-process \
    php72u-xml

9. Apache に SSL を導入

Apache で TLS/SSL を導入して、https でウェブサイトが公開されるようにします。

まず、mod_ssl をインストールします。

$ yum install mod_ssl

firewalld を使って、ポート 80番(http), 443番(https) を開けます。
80番は最初から空いているはずではありますが、以下のコマンドをセットで実行しました。

$ firewall-cmd --zone=public --add-port=80/tcp --permanent
$ firewall-cmd --add-service=http --permanent
$ firewall-cmd --zone=public --add-port=443/tcp --permanent
$ firewall-cmd --add-service=https --permanent
$ firewall-cmd --reload

これで、ウェブサーバーである Apache で SSL証明書を使う準備はできました。

次に、Let’s Encrypt を導入して、その SSL証明書を作成します。

ここでは、foo ユーザーを使い、~/work/cerbot ディレクトリで作業するとします。

まず、Let’s Encrypt が開発している certbot をインストールします。

$ sudo yum install certbot

作業ディレクトリに移動します。

$ mkdir -p ~/work/certbot
$ cd ~/work/certbot

Apache を停止しておきます。

$ sudo systemctrl stop httpd

ここで、目的のドメインのDNS情報において、このドメインに対するサーバーのIPアドレスが、ConoHa のサーバーになっていない場合は、ConoHa のサーバーを指すように変更します(Aレコード)。この変更がご使用のネームサーバー上に反映されるまで待つ必要がありますので、少し早めに変更しておくとよいかもしれません。

DNSの変更が反映されたら、次のコマンドで SSL証明書を生成します。

$ sudo certbot certonly --standalone -d foo.example.com

メールアドレスなど聞かれますので、指示に従って入力します。

SSL証明書が生成されたら、Apache の設定ファイルの中で、このSSL証明書ファイルを使用するように書き換えます。

$ sudo vim /etc/httpd/conf.d/ssl.conf

通常は、だいたい以下のような記述になります。

SSLCertificateFile /etc/letsencrypt/live/foo.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/foo.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/foo.example.com/chain.pem

Apache を起動します。

$ sudo systemctrl start httpd

10. メールの送信テスト

念の為、このサーバーからメールが送信できるかテストします。

今回の環境では、メジャーなメールサーバーである postfix が既にインストールされて稼働していました。

この postfix に付属している sendmail コマンドでメールを送信してみます。

以下のように入力してください。メールが送信できます。

sendmail -t <<EOL
From: xxxx@example.com
To: you@example.jp
Subject: new Test mail

Hello!!
EOL

Gmail などでこのメールを受信し、迷惑メールと認識されてしまった場合は、サーバーで使っているドメインのDNS情報に、SPFレコード を記述しておきましょう。

記述して反映させた後は、Sender Policy Framework (SPF) Record Lookup といったサイトで記述した内容をチェックすることもできます。

SPFとは?

Wikipedia の説明を借りると、「SPF (Sender Policy Framework)とは、電子メールにおける送信ドメイン認証のひとつ。差出人のメールアドレスが他のドメイン名になりすまししていないか検出する技術」です。

まず、メール送信側サーバーとなるドメインの TXTレコードに、「このドメインからメールを送信することのありえるサーバーのIPアドレス」などを記述しておきます。メーラーソフトはメールが届いたら、送信元になっているサーバーのドメインの TXTレコードをチェックして、実際の送信元サーバーのIPアドレスにとそこに記述されたIPアドレスを照会し、問題ないメールかどうかを判断することができます。

11. おわりに

ConoHa で CentOS 7 のサーバーを追加した時の設定について書きました。

以下のページでも書きましたが、ConoHa は初期費用がなく時間単位での課金となるため気軽にサーバーを追加することができます。しかも、1ヶ月間使い続けた場合の料金も特に高いわけでもありません。インターネットに接続された状態のサーバーを一時的に使いたい場合にもピッタリです。

ConoHa VPS の紹介

2018.04.16

只今、「梅雨トク!キャンペーン」実施中です!

期間:2018年7月4日(水)12時まで

期間中に対象のConoHaカードを購入し、クーポンコードを登録した方限定でVPSが最大1ヶ月間無料で使えるクーポンがプレゼントされます!



-基本的な使い方

執筆者:fitallright

関連記事

独自ドメインを取得する手順

独自ドメインを取得する手順の概要について説明します。 目次1. 独自ドメインとは?2. 取得するドメイン名を考えるトップレベルドメインの選定名前を決めるできれば短い名前がよい分かりやすい名前がよいハイ …

エックスサーバーに独自に Vim を導入する

エックスサーバーで借りているあるサーバーに SSHでログインしたところ vi コマンドが使えました(エックスサーバーの全てのサーバーで使えるかは不明です)。そしてこの vi コマンドは実際には vim …

ConoHa API を利用してサーバーを再起動するシェルスクリプトを書く

VPS である ConoHa には、API が用意されています。Web のプロトコルである HTTPS (TLS/SSL) を使って、特定のサーバーに命令を送ることで、いろいろな操作を行うことができる …

VPS に phpMyAdmin をインストールする 手順

phpMyAdmin を自分で VPS 上にインストールする手順を説明します。 (yum のようなパッケージ管理ツールは使わない方法です) 目次1. phpMyAdmin とは?インストールする場所に …

エックスサーバーでは、index.php よりも index.html が優先されます

エックスサーバーでの、index.html ファイルと index.php ファイルの取扱いについて説明します。優先順位の話になります。 目次1. 質問です。2. index.html と index …

ロリポップ!「スタンダードプラン」
さくらのレンタルサーバ「スタンダードプラン」