Docker 上の WordPress でプラグインをインストールしたりアップデートを実行したりするために vsftpd をインストールする

経緯

Docker 上で WordPress を試験する中で、プラグインのインストールを試みたら失敗。……よくよく考えれば FTPサーバ が不在なので当然でした。

そこで、 FTPサーバ として vsftpd をインストールして WordPress のアップデートができることを確認してみます。

ちなみに、ベースはいつも通りdocker_compose_ambergreaseで。

対処 ( vsftpd インストール)

インストール

# dnf -y install vsftpd


## 略

Installed:
  logrotate-3.14.0-4.el8.x86_64                                   vsftpd-3.0.3-34.el8.x86_64

Complete!

OK。

設定

# vi /etc/vsftpd/vsftpd.conf


## タイムアウト時間変更

#idle_session_timeout=600
idle_session_timeout=600

#data_connection_timeout=120
data_connection_timeout=60

## ASCIIモード有効

#ascii_upload_enable=YES
ascii_upload_enable=YES

#ascii_download_enable=YES
ascii_download_enable=YES

## ホームディレクトリより上へのアクセス制限

#chroot_local_user=YES
chroot_local_user=YES

#chroot_list_enable=YES
chroot_list_enable=YES

#chroot_list_file=/etc/vsftpd/chroot_list
chroot_list_file=/etc/vsftpd/chroot_list

## IPv4有効

#listen=NO
listen=YES

## IPv6無効化

#listen_ipv6=YES
listen_ipv6=NO

## アクセスユーザ制御

userlist_deny=NO

## ユーザごとの設定ファイルを指定

user_config_dir=/etc/vsftpd/user_conf

## ローカル時間有効

use_localtime=YES

## パッシブモード有効

pasv_promiscuous=YES
pasv_min_port=50000
pasv_max_port=50030

## .htaccessをFTPソフトから見られるようにする

force_dot_files=YES

今回は試験なのでここまで必要ないですが一応。

ユーザ設定

# vi /etc/vsftpd/chroot_list

## 空ファイル作成

## root以外参照できないように権限変更

# ls -al /etc/vsftpd/chroot_list
-rw-r--r-- 1 root root 0 MM月 dd hh:ii /etc/vsftpd/chroot_list
# chmod 600 /etc/vsftpd/chroot_list
# ls -al /etc/vsftpd/chroot_list
-rw------- 1 root root 0 MM月 dd hh:ii /etc/vsftpd/chroot_list

ユーザ作成・設定

# useradd ftpuser

ユーザ追加。

# vi /etc/vsftpd/user_list

ftpuser

/etc/vsftpd/user_list に追加。 /etc/vsftpd/chroot_list は上に遡らせないようにするため、記載しない。

# mkdir /etc/vsftpd/user_conf/
# vi /etc/vsftpd/user_conf/ftpuser
local_root=/var/www/sample_site

FTPユーザのルートディレクトリを指定します。

# passwd ftpuser
bash: passwd: command not found

パスワード設定しようとしたら、コマンドがないと言われてしまいました。

# dnf -y install passwd


## 略

Installed:
  libuser-0.62-23.el8.x86_64                                      passwd-0.80-3.el8.x86_64

Complete!

OK。

# passwd ftpuser
Changing password for user ftpuser.
New password:
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.

気を取り直してパスワード設定。

vsftpd 起動

# /usr/sbin/vsftpd &
#

起動完了。これで検証してみます。

検証

翻訳をアップデート
翻訳をアップデート

試しに翻訳をアップデートしようとすると、FTPサーバの情報を聞かれます。今回はコンテナの名前が web なのでそれを指定。ユーザ名とパスワードは先程設定したものを。

翻訳のアップデートが成功
翻訳のアップデートが成功

OKです。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。