EC2にApacheとBasic認証、ftpをセットアップする
タイトルの通りですが、今後も使うかもしれないので、備忘録として残しておきたいと思います。
まずはAWS Management Consoleでt1.microのインスタンスを作成します。(あえて手順は書きません)
次にEC2インスタンスがrunningになったのを確認してSSHでログインします。(security groupの設定で事前にSSHを許可しておきます。インスタンス作成時に作成したSSH鍵も指定します。)
ec2-userでログイン後はタイムゾーンを日本時間に設定しておきます。
sudo su - cp -i /usr/share/zoneinfo/Japan /etc/localtime
※以後の操作はすべてrootユーザで行っています。
次にApacheのインストールをします。
yum -y install httpd
次にユーザ及び公開するディレクトリを作成し、Apacheを起動します。(自動起動の設定も同時に行っておきます)
useradd test-user ←ユーザを作成します。 passwd test-user ←作成したユーザのパスワードを設定します。 cd /var/www/html/ mkdir public chown -R test-user:test-user public chmod 755 public service httpd start chkconfig httpd on
これで、apacheまでのインストールは完了です。次にAmazon EC2上でvsftpdをインストールします。
yum install vsftpd
/etc/vsftpd/vsftpd.confをviで開いて編集します。
anonymous_enable=NO ascii_upload_enable=YES(先頭の#を削除) ascii_download_enable=YES(先頭の#を削除) 以下の行を追加します。 use_localtime=YES force_dot_files=YES pasv_min_port=60000 pasv_max_port=61000 pasv_address=xxx.xxx.xxx.xxx(Elastic IPアドレスを指定します。)
vsftpdの起動をします。(自動起動の設定も同時に行っておきます)
service vsftpd start chkconfig vsftpd on
とりあえずFTPクライアントをインストールしました。(FFFTPを使用して無事接続確認が完了)
Apacheの公開用ドキュメントディレクトリにBasic認証をつけるための手順を以下にまとめておきます。まずはユーザ認証によるアクセス制限をかけるディレクトリを/var/www/html/publicとします。(適宜読み替えてください。)ディレクトリが決まったら、htpasswdコマンドでtest-userというユーザーを作成し、パスワードを設定する。パスワードの設定に必要なパスワードファイルは、ここでは/etc/httpdディレクトリに.htpasswdとして作成します。(新規に.htpasswdファイルを作成する際には-cオプションをつけます
htpasswd -c /etc/httpd/.htpasswd test-user New password: Re-type new password: Adding password for user test-user
次にApacheの設定ファイルにBasic認証するための設定を追加します。
vi /etc/httpd/conf/httpd.conf
以下の設定をviで編集します。
<Directory "/var/www/html/public"> AuthType Basic AuthName "Secret Zone" AuthUserFile /etc/httpd/.htpasswd Require user test-user </Directory>
/etc/httpd/conf/httpd.confの編集後はApacheの再起動が必要なので、再起動します。
service httpd restart
http://Elastic IPアドレス/publicにアクセスして、認証画面がでるかを確認します。
参考までにInboundでsecurity groupに設定している項目
- SSHポート(22番)の開放設定
- HTTPポート(80番)の開放設定
- FTPポート(21番)の開放設定
- パッシブFTPのデータ転送用のポート(60000-61000)
これで一通りやりたかったことは完了