連載第十回目です。
これまではVPSサーバーに対し、viエディタで色々なファイルを編集してきました。
ただ、今後はFlaskアプリなど、かなり作り込んだサービスの導入テストを行いますので、一ファイルずつviエディタで書き込んでると日が暮れます。
そのため、FTP通信を使って、VPSサーバーにファイルを転送してしまいましょう。
この記事は、VPSで作るPythonでのWebアプリ運用環境の連載記事です。
その他については上記ページをお読みください。
1. ユーザーの作成
FTPユーザー(ftp-user)を作ります。他の名前でも構いません。
パスワードも設定しておきましょう。
useradd ftp-user passwd ftp-user
あとは、ユーザーが操作できる最上位のディレクトリのパーミッションを0777に設定しておきます。
chmod 777 /usr/share/nginx
2. FTPのインストール
FTPパッケージのインストールを行います。
yum -y install vsftpd
3. FTPの設定
FTPの設定ファイル(/etc/vsftpd/vsftpd.conf)を2通り変更します。
(1)内容の追記
# userlist_fileで指定指定したユーザを接続可能にする userlist_enable=YES # アクセスファイル(/etc/hosts.allow, /etc/hosts.deny)をアクセス制御に利用しない tcp_wrappers=NO # ドットから始まるファイルを含めた一覧を返す force_dot_files=YES # ファイル(またはディレクトリ)のタイムスタンプの表示をローカルタイムで表示する use_localtime=YES # ユーザー毎の設定ファイルの場所を指定する。 user_config_dir=/etc/vsftpd/user_conf # chroot設定で許可する allow_writeable_chroot=YES
# chroot設定で許可するを設定すると、下記エラーが防止できます。
OOPS: vsftpd: refusing to run with writable root inside chroot()
(2)コメントアウトから有効にする
# ルート設定有効ユーザー chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
ルート設定ユーザーリストファイル(/etc/vsftpd/chroot_list)を下記の通りにしてください。
ftp-user
※改行で新規ユーザーを追加可能です。
ユーザー設定用ディレクトリとファイルを作ります。
mkdir /etc/vsftpd/user_conf vi /etc/vsftpd/user_conf/ftp-user
ユーザー設定用ファイル(/etc/vsftpd/user_conf/ftp-user)を下記の通りにしてください。
local_root=/usr/share/nginx
※コピペすると先頭数文字が切れる場合があるので注意ください。
いつもの通りサービスのスタートと再起動可能設定を行います。
systemctl enable vsftpd systemctl start vsftpd
4. FTPのテスト
仕様ソフトはWinSCPを例にしていますが、他ソフトでも構いません。
下記の通り設定します。
IPアドレスは環境に応じて変更してください。
パッシブモードOFFだと20番接続、パッシブモードONだと21番接続にします。
※もし接続できて、ディレクトリが表示されない場合はONにしてください。
接続すると下記のような表示となります。
上位のディレクトリに移動する(赤枠)をクリックしても、設定したディレクトリより上には行けないことを確認できます。
上位のディレクトリに行けない設定にするのには、セキュリティの観点から言って正解です。
FTPユーザーはファイルを送受信するだけの役割であり、サーバーの中身は見る必要はありません。
おつかれさまでした。
おわりに
今回でFTPでのファイル送受信が可能となり、前回行ったデータベースと合わせて、本格的なアプリを構築する準備ができました。
次回は、Pythonの軽量なフレームワークFlaskで本格的なアプリを構築していきます!
ちなみに、FTPは平文でファイルをやり取りするためセキュリティ面に脆弱性があります。
よりセキュリティを高めるなら、SFTPなどを利用することをお勧めします。
この記事は、VPSで作るPythonでのWebアプリ運用環境の連載記事です。
次は、11. PythonでMariaDB(MySQL)へ接続できるアプリを触ってみようです。