読者です 読者をやめる 読者になる 読者になる

ショウジンブログ

Learn as if you will live forever, Live as if you will die tomorrow.

FTPが使えるようにする@Amazon EC2

Sponsored Links

タイムゾーンの確認

$ date
2014318日 火曜日 10:09:26 UTC

日にち、曜日は合ってますが時間が違います。

タイムゾーンの変更

sudoコマンドでルート権限に切り替え

$ sudo su -

タイムゾーンを日本語に設定

# cp -i /usr/share/zoneinfo/Japan /etc/localtime

overwriteしていいか確認されるのでyes

cp: overwrite `/etc/localtime'?

dateコマンドで確認

Tue Mar 18 19:11:12 JST 2014

オーケー。

Apacheのインストール

yum -y install httpd

Package httpd-2.2.26-1.1.amzn1.x86_64 already installed and latest version Nothing to do

そうです。最新のものが入っているいるのです。すでに。 (最初の設定時、ブラウザアクセスして確認済み)

なのでここはとばして

ユーザを作成

ユーザを作成し、パスワードを設定します。

ユーザ「showzine」を作成

# useradd ユーザー名

ユーザのパスワードを設定

passwd ユーザー名

Changing password for user ユーザー名. New password:

パスワード入力を促されるので希望するパスワードをタイプ。

タイプしたあとに確認用にRetypeを促されるので再度タイプしてオーケー。

passwd: all authentication tokens updated successfully.

公開ディレクトリを作成

Webの公開ディレクトリを作成します。
cdコマンドで移動します。

cd /var/www/html/

ディレクトリ「public」を作成します。

# mkdir public

このディレクトリ及びディレクトリ内のファイルのの所有者を「ユーザー名」に変更します。

# chown -R ユーザー名:ユーザー名 public

publicディレクトリのパーミッションを755に変更します。

# chmod 755 public

Apacheの自動起動を設定します。

# chkconfig httpd on

FTPサーバを構築

vsftpdをインストールします。

# yum install vsftpd

一度確認のメッセージが出るので、yesをタイプして進みます。
Complete!が表示されたらインストール完了。

vsftpdの設定ファイルをvimで開いて編集します。

# vim /etc/vsftpd/vsftpd.conf

上記コマンドで設定ファイルがvimで開かれます。

anonymous_enable=YESを
anonymous_enable=NOに変更

#ascii_upload_enable=YES
#ascii_download_enable=YES

上記の記述、どちらも冒頭の#を削除

ファイルの最後に以下を追記 (pasv_addressは自分で追加したElastic IPsの値)

use_localtime=YES
force_dot_files=YES
pasv_min_port=60000
pasv_max_port=61000
pasv_address=54.186.101.105

保存してvimを終了。

vsftpdを起動。
合わせて自動起動の設定もします。

起動

# service vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]

自動起動を有効化

# chkconfig vsftpd on

FTP接続してみる

ホスト名、ユーザー名で接続を試みるも、パスワードを求められる以前に接続に失敗しました。

FTPで設定したportが実際には未設定(AWSコンソール側のSecurity Groupで)なのではないかと思うので確認。

f:id:showjinx:20160530134646p:plain

やはり使用している(自分で作成した)Security GroupにはSSHとHTTPのPortしかない。

Custom TCP ruleとしてPort rangeを21でSourceを0.0.0.0/0でAdd Rule

同様にしてPort rangeを60000-60010と指定してSourceを0.0.0.0/0でAdd Rule

f:id:showjinx:20160530134727p:plain

これで設定が追加されたと思ったら追加されてませんでした。

f:id:showjinx:20160530134754p:plain

「Your changes have not been applied yet.」で検索したところ、この状態ではまだ設定は確定されていないとのこと。どこに有効化のボタンがあるのかと思ったら、この文字列の下に(スクロールしないと見えなかった)ありました。

f:id:showjinx:20160530134822p:plain

有効化されたことを確認して再度FTPで接続してみます。

FTPクライアントで以下の設定をして接続します。

サーバは追加したElastic IPs、ユーザ名は
EC2で使用するユーザ名「ec2-user」です。

パスワード認証はしないので「公開鍵認証を使用する」にチェックを入れてkeypairの場所を指定します。

今度は繋がりました。

公開ディレクトリ
/var/www/html/publicに移動して

ブラウザアクセスを確認するhtmlをアップしようとしたら蹴られます。

そういえばこのディレクトリは別にユーザを作成して
パスワードも設定していたのでした。なのでその設定(ユーザーとパスワード)で再度アクセス。

アクセスは出来ますがファイルの転送が失敗します。

FTPではなくSSH(FTPクライアントでも)がいいと思うので、独自ユーザの設定はやめてpublicディレクトリは ec2-userに変更することにします。

publicディレクトリの所有権を変更します。

sudo su -
で管理者に切り替え。

cdで移動

# cd /var/www/html

publicディレクトリの所有者を変更

chown -R ec2-user:ec2-user public

これで再度SSHで(FTPクライアントはCyberduckを使用)接続します。

アップロード出来るようになりました。

が、ルートドメインでアクセスしてもアップロードしたファイルにアクセスできません。

/var/www/html/publicは
どう指定すればドメインに割り当てられるのだろう?

以下の内容で解決しました。

blog.showzine.co

AmazonCloudテクニカルガイド ―EC2/S3からVPCまで徹底解析―

AmazonCloudテクニカルガイド ―EC2/S3からVPCまで徹底解析―