AWSでサーバー構築してみました。(つづき)
AWSでサーバー構築してみました。の続きの記事です。作業用ユーザーの追加と、Virtual Hostの設定、ベーシック認証について書いてます。
1. 作業用ユーザーを追加
新しいユーザー用にユーザーアカウントを作成します。
adduser コマンドを使用してユーザーアカウントを追加
[ec2-user ~]$ sudo adduser newuser
新しいアカウントに切り替えます。
ec2-userからnewuserに変わります。
[ec2-user ~]$ sudo su - newuser [newuser ~]$
なんでユーザーを作るの?
デフォルトのユーザーアカウントを使用することは多くのアプリケーションで適切ですが、ユーザーアカウントを追加すると、個人が自分だけのファイルと作業場所を確保できます。新しいユーザー用にユーザーアカウントを作成することは、ec2-user アカウントへのアクセス権を複数のユーザーに (経験のないユーザーも含めて) 与えるよりも、はるかに安全です。これはアカウントが不適切に使用された場合、システムにさまざまな損害を与える可能性があるためです。
2.パーミッションの設定
newuserディレクトリのアクセス許可を 755(所有者のみ、書き込みが可能) に変更します。
chmod -R 755 /home/newuser
3 公開鍵の設置と設定
newuser ホームディレクトリに .ssh ディレクトリを作成し、そのファイルのアクセス許可を 700 (所有者のみ、読み取り、書き込み、削除が可能) に変更
[newuser ~]$ mkdir .ssh [newuser ~]$ chmod 700 .ssh
authorized_keys という名前のファイルを .ssh ディレクトリに作成し、そのファイルのアクセス許可を 600 (所有者のみ、読み取りおよび書き込みが可能) に変更
[newuser ~]$ touch .ssh/authorized_keys [newuser ~]$ chmod 600 .ssh/authorized_keys
viでauthorized_keys ファイルを開いて公開鍵を貼り付け。 変更を保存します。
[newuser ~]$ vi .ssh/authorized_keys
これで、authorized_keys ファイルに追加した公開鍵の対である秘密鍵を使用して、インスタンスの newuser アカウントにログインできます。
4. Virtual Hostの設定
Virtual Hostとは?
一台のサーバーで仮想的に複数のドメインを運用するサーバー技術の一種で、主にメールサーバーやWebサーバーなどで利用されています
httpd.confの設定
まず、VirtualHostを使う宣言をApacheの設定ファイルであるhttpd.confに記述します。
[newuser ~]$ sudo vi /etc/httpd/conf/httpd.conf
ServerName www.example.com:80 ↓ ServerName パブリック IP
nameVirtualHost *:80
の記述をhttpd.confに追加。
(IncludeOptional conf.d/*.confの記述の上に書きました。)
virtual.confの設定
ファイルの名前はなんでもいいそうです。
IncludeOptional conf.d/*.conf
が書かれているのでApacheは起動時に/etc/httpd/conf.d/以下にある*.confファイルを全て読み込みます。
旧CentOSでは、httpd.confに全て記載していましたが、CentOS7からはメイン設定は、 「/etc/httpd/conf/httpd.conf」に記載され、その他の設定は「/etc/httpd/conf.d/」ディレクトリ内に分散設置しています。
conf.dに移動してvirtual.confファイルを作成します。
touch virtual.conf
virtual.confファイルを編集します。
vi virtual.conf
以下の記述を書いて保存します。
#newuser <VirtualHost *:80> DocumentRoot /home/newuser/*** ServerName www.****.com ErrorLog /home/newuser/logs/newuser-error_log CustomLog /home/newuser/logs/newuser-access_log combined <Directory /home/newuser/***> AllowOverride All Require all granted Options All </Directory> </VirtualHost>
5. apacheの再起動
virtual.confを変更後、設定を有効にするためにhttpdを再起動します。
sudo systemctl restart httpd
ウェブブラウザで、www.****.comを入力し、ページが表示されたら成功です。
6. ベーシック認証をつけてみる
.htaccessファイルを作ります。
/home/newuser/***以下に作成します。
touch .htaccess
vi .htaccess
以下の記述を書いて保存します。
AuthUserFile /home/newuser/.htpasswd AuthGroupFile /dev/null AuthName StaffOnly AuthType Basic require valid-user
記述の解説
AuthUserfile /フルパス/.htpasswd
サーバーのルートディレクトリからの.htpasswdへのパスを指定
AuthGroupfile /dev/null
グループごとにアクセスを許可する、という指定。「/dev/null」とは、そのようなファイルは存在しないという意味でグループごとでのアクセス制限はしないという意味。
AuthName
ダイアログに表示される文章を指定。
AuthType Basic
AuthTypeを指定。「Basic(ベーシック認証)」と「Digest(ダイジェスト認証)」の2種類がある。
require valid-user
ユーザーが誰であろうと、入力したIDとパスワードが合っていればアクセスできるという意味。
.htpasswdファイルを作成します。
touch .htaccess
.htpasswdは、IDとパスワードを書きこむファイルです。
.htpasswdのファイルは、DocumentRootより上に設置します。
なので/home/newuser以下に作成します。
touch .htpasswd
パスワード暗号化ツールなどでパスワードを生成します。 http://www.luft.co.jp/cgi/htpasswd.php
できたパスワードを.htpasswdに記述します。
vi .htpasswd
500 Internal Server Error
.htaccess ファイルに文法誤りがあると、500 Internal Server Error となるので、再度確認します。
以上、はじめてのサーバー構築です...!
(これであってるのかな...)