はじめに
CentOSにphp環境を構築後、開発は別環境で、動作する環境はCentOSと別々で管理している場合に、CentOS側にvsftpdをインストールし、ファイルをFTPでアップロードする必要があります。
本記事は、PHP環境構築後にFTPでアップロードできる様にvsftpdをインストールする方法の備忘録です
NginX構築に関しては下記を参照ください。
FEELD BLOG
PHP環境構築については、こちらを参照ください。
FEELD BLOG
vsftpdインストール
まずは、yumでインストールします。
$ yum install vsftpd
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ty1.mirror.newmediaexpress.com
* epel: ftp.yz.yamagata-u.ac.jp
* extras: ty1.mirror.newmediaexpress.com
* remi-safe: ftp.riken.jp
* updates: ty1.mirror.newmediaexpress.com
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ vsftpd.x86_64 0:3.0.2-27.el7 を インストール
--> 依存性解決を終了しました。
依存性を解決しました
===================================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
===================================================================================================================================
インストール中:
vsftpd x86_64 3.0.2-27.el7 base 172 k
トランザクションの要約
===================================================================================================================================
インストール 1 パッケージ
総ダウンロード容量: 172 k
インストール容量: 353 k
Is this ok [y/d/N]: y
Downloading packages:
vsftpd-3.0.2-27.el7.x86_64.rpm | 172 kB 00:00:10
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : vsftpd-3.0.2-27.el7.x86_64 1/1
検証中 : vsftpd-3.0.2-27.el7.x86_64 1/1
インストール:
vsftpd.x86_64 0:3.0.2-27.el7
完了しました!
問題なくインストールできました。
vsftpdの設定
インストールが完了したので、設定を行ます。
$ cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org
$ vi /etc/vsftpd/vsftpd.conf
# 匿名ユーザーログインを禁止
anonymous_enable=NO
# コメントをはずす(ASCIIでのデータの送受信許可)
ascii_upload_enable=YES
ascii_download_enable=YES
# TCP Wrapperの無効化
tcp_wrappers=NO
# ローカルタイムの利用
use_localtime=YES
# ホワイトリスト
userlist_enable=YES
userlist_deny=NO
# Listen設定(ipv6は拒否)
listen=YES
listen_ipv6=NO
# chroot設定
chroot_list_enable=NO
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list
user_config_dir=/etc/vsftpd/user_conf
設定が完了したら、ftpdの自動起動をONにし、サービスを起動します。
$ systemctl enable vsftpd.service
$ systemctl start vsftpd
ただ、このままではFTPクライアントの接続がでいないため、ファイアウォールの設定などを行っていきます。
Firewall設定
ファイアウォールの設定を行います。
$ firewall-cmd --add-service=ftp --permanent
$ firewall-cmd --reload
問題なく追加されました
public (active)
・・・
services: dhcpv6-client ssh http ftp
・・・
FTPユーザ作成
FTP用ユーザを作成します。
作成した後は、FTP用ユーザのみを接続許可するために/etc/vsftpd/user_listに記載をします。
$ sudo useradd ftpuser
$ sudo passwd ftpuser
$ sudo vi /etc/vsftpd/user_list
ftpuser
以上で、完了です。
chroot設定
上位ディレクトリへのアクセスをvftp.conでオフにしているので、ここではサクセス先ローカルパスを設定します。
Nginxのデフォルトアプロードフォルダを指定します。
$ mkdir /etc/vsftpd/user_conf
$ vim /etc/vsftpd/user_conf/ftpuser
下記パスを指定する
local_root=/usr/share/nginx/html
vsftpdを再起動する
$ systemctl restart vsftpd
最後に
FTPサーバとしての構築は結構簡単に行えますね。
ユーザの制御はホワイトリストに記載して、アクセスできるユーザを制限することができます。
ぜひ試してみてください。