#はじめに
個人的な備忘録として作成しました。
ConoHaVPSにApacheをインストールし、Webサーバーとして使えるようにするところまでを扱います。
Qiita初投稿なこともあり、誰かの役に立つかは正直微妙ですがよろしくお願いいたします。
なお、この記事は2020年7月頭に書いたものです(投稿が遅くなってしまいました)。
■この記事と直接関係ありませんが、作成したポートフォリオがこちらです↓
Nintendo Switch ダウンロードソフトデータベースβ
https://switch-dlsoft-db.com
Nintendo Switchのダウンロードソフトのセール情報を主にまとめたWebサイトになります。(何番煎じかわかりませんが…)
2020年6月頃から作り始めて、3ヶ月でここまでできました。
#ConoHaのアカウントを作成してログイン
サインアップ|レンタルサーバーならConoHa
アカウントを作成したらConoHaにログインする。
ログインするとこんな感じの画面になる。
※画面は既にVPSを一台契約している状態です。
#VPSを追加
[1]コントロールパネル左メニューの「サーバー追加」をクリックする。
[3]「リージョン」を選択し、「サービス」で「VPS」を選択、メモリ容量を選択する。
[4]サーバーの作成に使うイメージを選択する。私は、OSタブから「CentOS 8.2(64bit)」を選択した。その後、rootパスワードとネームタグを設定する。VPSを2台以上契約する場合は、区別できるようにわかりやすい名前(ネームタグ)をつけておこう。
[5]オプションを設定する。今回は標準の設定のまま弄らなかった。
[6]金額とスペックを確認して、「追加」をクリックする。これでVPS追加が完了する。
参考サイト
VPSを追加する|ConoHa VPSサポート
VPSへログインする|ConoHa VPSサポート
#TeraTermをインストール
代表的なSSHクライアントソフトである「TeraTerm」をインストールする。
[1]次のページにアクセスし、TeraTermをダウンロードする。
ダウンロードファイル一覧 - Tera Term - OSDN
[2]ダウンロードした「teraterm-4.105.exe」を実行し、インストールする。特に設定を変える必要はなく、指示通りに進めていけばよい。
インストールが完了した。
参考サイト
【ゼロからわかる】Teratermのインストールと使い方
#TeraTermでConoHaにログインする
[1]TeraTermを起動する。「新しい接続」ウインドウが表示されるので、TCP/IPの「ホスト」にConoHaで構築した仮想サーバーのIPアドレスを入力し、OKを押す。
。
なおIPアドレスは、ConoHaのコントロールパネルにログイン後、「サーバー」→「仮想サーバー(ネームタグ)」→「ネットワーク情報」→「IPアドレス」で確認可能。(画像では隠しています)
[2]次のようなウインドウが出てくるが、気にせず続行を押す。
[3]ユーザー名に「root」、パスフレーズには仮想サーバー構築時に設定したパスワードを入力し、OKを押す。
参考サイト
TeraTermでのSSH接続設定|ConoHa VPSサポート
VPSへログインする|ConoHa VPSサポート
#一般ユーザーを追加する
rootアカウントは全ての権限を持ち、誤操作で重要なファイルを削除してしまう可能性もあり通常作業には向かない。root権限を必要としない作業は一般ユーザーを使うべきなので、一般ユーザーを追加する。
[1]下記のコマンドで一般ユーザーを追加する。なお、私はユーザー名を「niisan1ban」とした。
# useradd [ユーザー名]
[2]追加した一般ユーザーのパスワードを設定する。
# passwd [ユーザー名]
New password: [任意のパスワードを入力]
Retype new password: [↑で入力したパスワードを再度入力]
「passwd: all authentication tokens updated successfully.」と表示されていれば設定完了。
参考サイト
一般ユーザーを追加する|ConoHa VPSサポート
コマンドを操作してみよう|ConoHa VPSサポート
#sudoを設定する
作成した一般ユーザーはroot権限がないが、sudoを利用することでroot権限が必要な操作が可能になる。ConoHaのVPSのテンプレートイメージCentOS8では、初期状態で「wheel」グループに所属している一般ユーザーはsudoを利用可能になっている。
[1]一般ユーザーを「wheel」グループに所属させるには、次のコマンドを入力する。
# usermod -G wheel [所属させるユーザー名]
これでsudoを設定できた。
ここで一旦rootユーザーからログアウトしておこう。
# logout
参考サイト
sudoを設定する|ConoHa VPSサポート
#一般ユーザーでログインし、sudoコマンドが使えるか確認する
[1]再びTeraTermを立ち上げ、追加した一般ユーザーの[ユーザー名]と[パスワード]を入力してログインする。
rootアカウントの場合コマンド入力欄は[#]で始まるが、一般ユーザーは[$]で始まる。
[2]下記のように先頭に[sudo]を入力の上、適当なコマンドを実行する。
$ sudo [コマンド]
[3]パスワード入力を求められるので、ログインした一般ユーザーのログインパスワードを入力する。
sudoコマンドが使えることが確認できた。なお、[date]コマンドは現在時刻を表示するコマンドである。
ちなみに、最初にsudoコマンドを実行するときは、次のような文が表示されるかも。(スクショし忘れた…)
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
参考サイト
一般ユーザーを追加する|ConoHa VPSサポート
sudoを設定する|ConoHa VPSサポート
#一般ユーザーで公開鍵認証を利用可能にする
##鍵を生成する
[1]TeraTermを起動し接続画面で「キャンセル」をクリックする。
[3]鍵の種類で「RSAを選択」、ビット数を「2048」にして「生成」クリック。
[4]必要に応じて鍵のパスフレーズを入力し、「公開鍵の保存」「秘密鍵の保存」をクリック。
※パスフレーズは秘密鍵利用時に必要。空欄でも利用は可能。私は空欄にした。
##鍵をVPSに設置する
[1]TeraTermを使い一般ユーザーでVPSへログインし、保存した「公開鍵」をドラック&ドロップし、表示されたウインドウで「SCP」をクリックして「OK」を押す。
[2]ユーザーのホームディレクトリに「.ssh」というディレクトリを作成し、パーミッションを「700」に設定する。
[3]ホームディレクトリに設置した公開鍵を「.ssh」へコピーし「authorized_keys」へファイル名を変更する。また、「authorized_keys」のパーミッションを「600」へ変更する。
[4]ホームディレクトリに設置した公開鍵は、不要なので削除しておく。
ここまでのコマンドをまとめると次のようになる。
$ mkdir .ssh
$ chmod 700 .ssh
$ mv id_rsa.pub .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ rm -f id_rsa.pub
##公開鍵認証を利用してログイン可能かを確認する
[1]TeraTermを立ち上げ直し、ログイン画面で一般ユーザーの[ユーザー名]と[パスフレーズ]を入力する。
※なお、パスフレーズはSSH鍵作成時に決めたものであり、空欄にした場合は入力しなくてOK。
[2]「認証方式」のところで、「RSA/DSA/ECDSA/ED25519鍵を使う」にチェックを入れ、「...」を押して秘密鍵「id_rsa」を選択する。
[3]OKを押してログインする。
公開鍵認証を使用してログインできた。
##rootログインを禁止する
[1]TeraTermを起動し、rootでログインする。
[2]SSH接続の設定ファイルを次のように変更する。viコマンドの使い方についてはこのサイトを参照。
# vi /etc/ssh/sshd_config
#rootログインを禁止にする
PermitRootLogin yes
↓
PermitRootLogin no #[yes]を[no]に変えます
#パスワードログインを禁止にする
PasswordAuthentication yes
↓
PasswordAuthentication no #[yes]を[no]に変えます
[3]SSH接続の設定の変更を反映させる。
# systemctl reload sshd
これで、rootではログインできなくなった。
参考サイト
一般ユーザーで公開鍵認証を使用してSSHログインする|ConoHa VPSサポート
公開鍵認証を設定する|ConoHa VPSサポート
第7回:エディタを使ってみる!|ConoHa VPSサポート
コマンドを操作してみよう|ConoHa VPSサポート
#Apacheをインストールする
Webコンテンツの公開にはWebサーバーが必要である。今回は、ConoHaをWebサーバー化するために、代表的なWebサーバーソフトである「Apache」をインストールしていく。
[1]TeraTermで一般ユーザーでログインする。
[2]「su -」コマンドでrootアカウントに切り替える。パスワードを要求されるので、rootアカウントのパスワードを入力する。
$ su -
[3][yum]コマンドを使ってApacheをインストールする。
# yum install httpd
途中で次のような表示が出て処理が止まるが、これはインストールしていいか聞かれているだけなので[y]を入力して[Enter]を押す。
Is this ok [y/N]:
無事にインストールできた場合は、最後に「Complete!」と表示される。
参考サイト
WordPressに必要なソフトウェアをインストールしよう(Apache編)|ConoHa VPSサポート
###「su -」と「sudo」の違い
$ su - [ユーザー名]
- su -
- ユーザーを切り替える(Switch User)
- ユーザー名を省略した場合はスーパーユーザー(rootユーザー)になる
- 必要な作業を行った後にlogoutなどで元のユーザーに戻る
- 求められるパスワードは切り替え先ユーザーのもの
$ sudo [コマンド]
- sudo
- スーパーユーザー(rootユーザー)で実行(Super User Do)
- コマンド実行の度にsudoをつける必要がある
- 求められるパスワードは元のユーザーのもの
※「su -」と「su」でも意味が違う。詳しくは下記のサイト参照。
参考サイト
【Linux】「su」と「sudo」の違い | プログラミングマガジン
#Apacheの起動
Apacheのインストールは完了したので、早速起動する。
今回利用するCentOS8では、[systemctl]というコマンドを使って各サービス(デーモン)の起動や停止を行う。
次のコマンドでApacheを起動する。「httpd」はApacheのことである。
# systemctl start httpd
問題なく起動に成功すると何も表示されずコマンド入力可能な状態になる。しかし、今のままではVPSを再起動する度にApacheも起動し直す必要がある。httpdが停止しているとWebページが表示されない。それでは困るので、VPS起動時に自動でhttpdが起動するよう次のコマンドで設定する。
# systemctl enable httpd
成功すると「Created symlink ~」と表示される。
サービス状態を確認するときは、次のコマンドを使う。
# systemctl status httpd
無事起動出来ていると緑色の丸印や「active (running)」が表示される。
以上でWebサーバーが構築され、コンテンツをブラウザで閲覧する準備が整った。
しかし、構築したWebサーバーにはまだコンテンツがない。
次の章では、HTMLファイルをWebサーバーに設置していく。
参考サイト
WordPressに必要なソフトウェアをインストールしよう(Apache編)|ConoHa VPSサポート
#HTMLファイルの設置
ディレクトリ[/var/www/html]に、ファイル[index.html]を設置する。
viコマンドの使い方についてはこのサイトを参照。
# vi /var/www/html/index.html
上記のコマンドで編集画面が開かれる。
iで編集モード(INSERT)に移行し、[Apache Test]と入力する。
[Esc]キーを押しINSERTモードから抜け、[:wq]でファイルを保存&viエディタを終了する
これで、Webサーバーにコンテンツを設置できた。
ブラウザで、「http://<VPSのIPアドレス>/index.html」に接続する。
しかし、繋がらない…。
これは、ファイアウォールがhttp通信をブロックしているためである。
ファイアウォールとは、予め設定したルールに従い、通してはいけない通信を止める機能のこと。
次の章で、ファイアウォールの設定を変える。
参考サイト
WordPressに必要なソフトウェアをインストールしよう(Apache編)|ConoHa VPSサポート
#ファイアウォールの設定を変える
CentOS8では、firewalldというサービスでファイアウォールの設定をすることが出来る。
firewalldでは特定の通信を指定して利用可能な通信を設定可能である。
例えばSSHであったりHTTP、SMTPなど様々あり、サービスの名前や、それぞれのポート番号を指定しての設定が可能である。
主な通信のサービス名とポート番号は以下の通り。
- SSH 22番ポート
- HTTP 80番ポート
- HTTPS 443番ポート
- POP3 110番ポート
- IMAP 143番ポート
- SMTP 25番ポート
ConoHaのテンプレートイメージのfirewalldでは、デフォルト起動するようになっており、設定は[SSH]のみ開放されていたため、[HTTP]通信は行えなかった。
設定を確認するには次のコマンドを使用する。
# firewall-cmd --list-all
[services]の項目に[ssh]の記載がある。
##firewalldを操作してみる
- firewalldの起動
# systemctl start firewalldv
- firewalldの停止(停止をするとすべての通信を開放するので注意)
# systemctl stop firewalld
- firewalldの再起動
# systemctl restart firewalld
- サービス名を指定して通信を許可する
- とりあえず、[http]と[https]を解放する。
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-service=https
- 設定を反映させる
# firewall-cmd --reload
- 設定内容を確認する
# firewall-cmd --list-all
[http]および[https]が追加されていることが確認できる。
再びブラウザで、「http://<VPSのIPアドレス>/index.html」に接続すると、今度は表示された。
参考サイト
ファイアウォールの設定をしてセキュリティを強化しよう|ConoHa VPSサポート
WordPressに必要なソフトウェアをインストールしよう(Apache編)|ConoHa VPSサポート
#ファイルの削除
ディレクトリ[/var/www/html]に設置した[index.html]は、もう必要ないので削除する。
ファイルの削除にはrmコマンドを使う。
# rm /var/www/html/index.html
確認のメッセージが出るので、[y]を押してEnterキーを押す。