CentOS 7.7 への Docker-CE インストール

2020年1月10日時点でのCent OS 7.7へDockerCE(安定板)をインストールする方法になります。
ブログ公開から時間が経過して、リポジトリに変更等があった場合には、適宜設定し直してください。

1. 古いバージョンのDockerをインストールしていた場合、アンインストールする(1.13.1などのリビジョン番号のルール変更前のバージョン)

$ sudo yum remove docker \ 
                  docker-client \ 
                  docker-client-latest \ 
                  docker-common \ 
                  docker-latest \ 
                  docker-latest-logrotate \ 
                  docker-logrotate \ 
                  docker-engine

2. yumリポジトリを追加するために依存関係モジュールをインストール

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

3. Docker-CE(安定版)のリポジトリを追加

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

4. Docker-CEのインストール

$ sudo yum install docker-ce docker-ce-cli containerd.io

5. Docker起動

$ sudo systemctl start docker

Dockerを自動起動させたい場合には下記も
# sudo systemctl enable docker

6. Dockerインストールされたかの確認にバージョンを確認

$ docker -v
Docker version 19.03.5, build 633a0ea

7. Hello Worldしてみる

$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:d1668a9a1f5b42ed3f46b70b9cb7c88fd8bdc8a2d73509bb0041cf436018fbf5
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

VPSに CentOS7 + Nginx + php-fpm でPHP環境を設定する方法

nginxでWordpressのようなPHPのWebアプリケーションを動作させるには
「php-fpm」
というアプリケーションを組み合わせます。

VPSがデフォルトの状態でPHPもまだインストールされていない状態と想定して説明しています。

VPSにはWebArena VPS CentOS 7.4を使用。

php-fpm入れる前にnginxをインストールしておきましょう
WebArena VPS CentOS 7.4 への Nginx mainline版 インストール

nginxインストールが完了したら、下記のようにphpをインストールします。

・remiリポジトリをインストール
# sudo yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

・PHPのバージョン情報を確認
# yum info php --enablerepo=remi-php73
利用可能なパッケージ
名前                : php
アーキテクチャー    : x86_64
バージョン          : 7.3.2
リリース            : 1.el7.remi
容量                : 3.2 M
リポジトリー        : remi-php73

・PHP 7.3 のインストール
--enablerepo オプションで remi リポジトリを指定、
その他phpの拡張パッケージも一緒にインストールします。
途中、公開鍵が入ってないよ!といわれますが探してくれるので聞かれたらyでリターンしてください。
# yum install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-mysqlnd php-pdo php-gd

・バージョンを確認
# php --version
PHP 7.3.2 (cli) (built: Feb  5 2019 13:10:03) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.2, Copyright (c) 1998-2018 Zend Technologies

これで、2019年2月23日時点での最新のPHPバージョンがインストールされました。

PHP-FPMをインストールします

$ sudo yum --enablerepo=remi-php73 install php-fpm

Apacheを使用する場合は特に変更の必要はないのですが、
Nginxを使用する場合は設定ファイルの変更が必要になります。
/etc/php-fpm.d/www.conf内のusergroupnginxに変更します。

$ sudo nano /etc/php-fpm.d/www.conf
user = nginx
group = nginx

保存したら、PHP-FPMを再起動します
$ sudo systemctl restart php-fpm

Nginxの設定を変更してPHPを実行できるようにします。
/etc/nginx/conf.d/default.conf を編集します。

・今後のためにバックアップをとっておきましょう
$ sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/defaul-backup.conf

・設定ファイルを編集 index.phpを追加
$ sudo nano /etc/nginx/conf.d/default.conf

location / {

      root   /usr/share/nginx/html;

      index index.php index.html index.htm;

}

・php-fpmの設定を有効化
default.confをさらに下にスクロールしていくと、下記のようなphp-fpmを動作させる部分がコメントアウトされているので、「#」を削除します。

   location ~ \.php$ {

            root           /usr/share/nginx/html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi_params;

    }

nginxとphp-fpmの起動

$ systemctl start php-fpm
$ systemctl start nginx

・起動時にNginxとphpが立ち上げるようにする
sudo chkconfig php-fpm on
sudo chkconfig nginx on

ブラウザから下記にアクセスしてnginxのページが表示されれば成功
http://IPアドレス/

WebArena VPS CentOS 7.4 への Nginx mainline版 インストール

2019年2月22日時点で最新のバージョンをインストールする方法になります。
時間が経過後にリポジトリに変更があった場合には、適宜設定し直してください。

nginxのリポジトリの作成及び設定
# sudo nano /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key


nginxをインストール
# yum install nginx                 
nginx         x86_64         1:1.15.8-1.el7_4.ngx

CentOS7のGPGキーインポートしてない場合に、キー探していますみたいなのが表示されて、聞かれますが自動で探してくれるのでYESでOK。
しばらくすると、インストール成功!

WebArena VPS CentOS 7.4 への Apache2.4.6 インストール

WebArena VPS CentOS 7.4 へのApache2.4.6のインストール方法を丁寧に解説
※Macのターミナル利用

WebArenaのコンパネでセキュリティーグループに
sshポートの22、ウェブポートの80のアクセスを可能にしておく

tcp:22,22,ip4:0.0.0.0/0 (自分のIPアドレスを入れるほうがベター)
tcp:80,80,ip4:0.0.0.0/0(自分のIPアドレスを入れるほうがベター)

WebArenaのコンパネでキーペア(***.pem)を作成し、ダウンロード

おそらくsshキーをまとめていると思うので、Macのsshキーを保存しているフォルダに入れておく
ちなみに後で間違えないようにするためにリネームしておくといいかも

mv 元のファイル名.pem 変更後のファイル名.pem

ターミナルからSSHでVPSに接続する

sudo ssh root@VPSのIPアドレス -i キーペアの名前.pem

Apacheのインストールファイルを調べておくと

# yum list | grep httpd
httpd.x86_64                           2.4.6-88.el7.centos        base          
httpd-devel.x86_64                     2.4.6-88.el7.centos        base          
httpd-manual.noarch                    2.4.6-88.el7.centos        base          
httpd-tools.x86_64                     2.4.6-88.el7.centos        base          
keycloak-httpd-client-install.noarch   0.6-3.el7                  base          
libmicrohttpd.i686                     0.9.33-2.el7               base          
libmicrohttpd.x86_64                   0.9.33-2.el7               base          
libmicrohttpd-devel.i686               0.9.33-2.el7               base          
libmicrohttpd-devel.x86_64             0.9.33-2.el7               base          
libmicrohttpd-doc.noarch               0.9.33-2.el7               base          
python2-keycloak-httpd-client-install.noarch

下記4つをインストールすればOK
httpd.x86_64 2.4.6-88.el7.centos base
httpd-devel.x86_64 2.4.6-88.el7.centos base
httpd-manual.noarch 2.4.6-88.el7.centos base
httpd-tools.x86_64

Apacheをインストール

yum -y install httpd httpd-tools httpd-devel httpd-manual
面倒であれば下記でもよい
yum -y install httpd

Apacheがインストールされたかを確認、バージョンも確認

# yum list installed | grep httpd
httpd.x86_64                       2.4.6-88.el7.centos            @base         
httpd-devel.x86_64                 2.4.6-88.el7.centos            @base         
httpd-manual.noarch                2.4.6-88.el7.centos            @base         
httpd-tools.x86_64                 2.4.6-88.el7.centos            @base  

# httpd -version
Server version: Apache/2.4.6 (CentOS)

Apacheを起動して起動したサービスの状態を確認

# systemctl start httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 木 2019-02-21 20:16:27 JST; 26min ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1182 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─1182 /usr/sbin/httpd -DFOREGROUND
           ├─1183 /usr/sbin/httpd -DFOREGROUND
           ├─1184 /usr/sbin/httpd -DFOREGROUND
           ├─1185 /usr/sbin/httpd -DFOREGROUND
           ├─1186 /usr/sbin/httpd -DFOREGROUND
           └─1187 /usr/sbin/httpd -DFOREGROUND
.....

firewall-cmdコマンドで、httpアクセスするための80番ポートに外部からの接続を許可設定を追加 (iptablesコマンドで行ってもよい)

# firewall-cmd --add-service=http --permanent
success

設定を反映するために再読み込み
# firewall-cmd --reload
success

設定の確認
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: ssh dhcpv6-client http
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

services: ssh dhcpv6-client http
のようにhttpが追加されていればOK
Webブラウザから下記にアクセスしてページが表示されればOK
http://IPアドレス/

VPS サーバー CentOS 7.4 の初期設定 1

VPSサーバーを初めて利用する際に最初にしたほうがいいこと書いてみました。
WebArenaのCentOS7.4のVPSサーバーとMacのターミナルを利用。

① 作業用ユーザーを作成して、rootログインを禁止する

デフォルトではrootログインしかできない状態ですが、rootログインできる状態という事は、もし誰かにrootログインされてしまうと、なんでもできてしまう非常に危険な状態なので これを禁止します。

まずRPMパッケージを最新に更新しておきましょう
sudo yum -y update
VPSにMACターミナルからSSHで接続してください(デフォルトではroot)
sudo ssh root@IPアドレス -i ./.ssh/デフォルトのroot用sshキー.pem

1. ユーザー作成 (ユーザー名hogeは自由に置き換えてください)
# useradd -G wheel hoge 
※グループ名のwheelはsudoコマンドが使える管理者グループ名として使われる

2. 作成したユーザーにパスワードを設定する 
# passwd hoge
→エンター後にパスワードを求められるので、そこで入力する

nanoエディタのインストール(デフォルトでvi入っているので、好きなエディタ使ってください)
# yum install nano

3. 作業用ユーザーにsudo権限を付与
# nano /etc/sudoers (もしくは sudo visudo )
設定ファイル中で下記がコメント(#)されていた場合はコメントを外して保存
%wheel  ALL=(ALL)       ALL

4. SSHの設定ファイル確認・変更
# nano /etc/ssh/sshd_config

下記2箇所がコメント(#)されていた場合はコメントを外して保存
PubkeyAuthentication yes
AuthorizedkeysFile .ssh/authorized_keys
念のため
PasswordAuthentication no
になっているかも確認

RSSAuthentication no
を設定する必要は2016年のopenSSH7.4から必要なくなりました。

5. sshdをリロードする
(CentOS7からはserviceコマンではなくsystemctlコマンドを使います)
# systemctl reload sshd

アクセス元(自分以外のIP1アドレスからのアクセス)を制限したい場合には下記に設定する
# nano /etc/hosts.allow
→sshd: IPアドレス
を追記する
6. 作業用ユーザー(hoge)の公開鍵保存ディレクトリ作成
(ユーザー名hogeは自由に置き換えてください)
# sudo -u hoge mkdir /home/hoge/.ssh

Macでキーペア作成するので一時SSH終了する
# exit

7. 作業用ユーザーSSH用のキーペアをMacで作成
ssh-keygen -t rsa -b 4096 -f id_rsa_filename
(filenameは他のキーと混同しないよう自由に変えてください、id_rsaだけでもOK)

パスフレーズを設定

8. キーペアがホームに作成されるのでsshを管理している.sshフォルダに移動させる
mv id_rsa_filename ~/.ssh 
mv id_rsa_filename.pub ~/.ssh

9. キーペアのうち公開鍵であるid_rsa_filename.pubファイルをVPSサーバーにSCP(rootの鍵認証を使ってリモートにコピーする)
sudo scp -i ~/.ssh/デフォルトのroot用sshキー.pem ~/.ssh/id_rsa_filename.pub root@IPアドレス:/home/hoge/.ssh/

10. アップロードした公開鍵の名前、所有者・グループ、パーミッション変更
VPSサーバーとssh接続してから下記を実行
# cd /home/hoge/.ssh/
# mv id_rsa_filename.pub authorized_keys
# chown hoge:hoge authorized_keys
# chmod 600 authorized_keys
# chmod 700 /home/hoge/.ssh
# exit

11. Macから作業用ユーザーでSSH
sudo ssh hoge@IPアドレス -i ./.ssh/id_rsa_filename
パスワードいれて接続できれば成功

12. root接続(rootログイン)を禁止する
# sudo nano /etc/ssh/sshd_config
PermitRootLogin without-password
↓
PermitRootLogin no
というように
"without-password → no"
に変更して、保存。

13. sshdリロードする
# systemctl reload sshd
これで最初できていた、rootログインを試して拒否されれば成功

rbenv(Rubyのバージョン管理),Ruby2.3.6のインストール libcurlのアップデート CentOS 6.7(Final) 32bit

CentOSにrbenvをインストールした際に実行ユーザーでないと
「コマンドが見つかりません」
となったので、全ユーザーで使えるようにした手順を、
Rubyをrbenvを使ってインストールする最初のところから書いてみました。
まず、

①Ruby をビルドする環境を構築

# yum install -y gcc bzip2 openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel

②rbenv + ruby-build のインストール
rbenv で Ruby のインストールを行うので rbenv のプラグイン「 ruby-build 」を併せてインストールする。

# git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
# git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
# echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
# echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
# source ~/.bash_profile
# rbenv --version
rbenv 1.1.1-28-gb943955

③Ruby のインストール
「 rbenv install 」コマンドを用いて Ruby をインストールする。
「 –list 」オプション指定で、インストール可能な Ruby のバージョンがリスト表示される。

# rbenv install –list
# rbenv install 2.3.0

ここまでの方法だと、実行ユーザーでないと下記のように「コマンドがありません」になります。

[root@localhost ~]# rbenv -v
-bash: rbenv: コマンドが見つかりません

この原因は ~/.bash_profile に書込んでいるからで、PATHが通っていないから。
実際にどこのRubyが呼ばれているかを確認すると、
# which ruby
/usr/bin/ruby
となっていて、rbenvのrubyを使う時の
/Users/ユーザ名/.rbenv/shims/ruby

CentOSでは全ユーザーに/etc/profile.d/が読み込まれるので、
/etc/profile.d/以下にrbenvをインストールして、設定も書込むようにすれば解決する。

# sudo su -
# git clone git://github.com/sstephenson/rbenv.git /usr/local/src/rbenv
# git clone git://github.com/sstephenson/ruby-build.git /usr/local/src/rbenv/plugins/ruby-build
# echo 'export RBENV_ROOT="/usr/local/src/rbenv"' >> /etc/profile.d/rbenv.sh
# echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/rbenv.sh
# echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
# source /etc/profile.d/rbenv.sh
# rbenv -v
rbenv 1.1.1-28-gb943955

 

インストールできるリストを表示してみる
# rbenv install -l

その中にあるバージョンを選んでインストールする
# rbenv install -v 2.3.6

 

がしかし、CentOS6.7だと思わぬトラブルがさらに発生する
libcurlのバージョンが古すぎてダウンロードエラーを起こすのだ。

sudo rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-1-13.rhel6.noarch.rpm

デフォルトでenabled=1になっているので0にしておきましょう。

$ sudo vi /etc/yum.repos.d/city-fan.org.repo

[city-fan.org]
name=city-fan.org repository for Red Hat Enterprise Linux (and clones) $releasever ($basearch)
#baseurl=http://mirror.city-fan.org/ftp/contrib/yum-repo/rhel$releasever/$basearch
mirrorlist=http://mirror.city-fan.org/ftp/contrib/yum-repo/mirrorlist-rhel$releasever
#enabled=1
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-city-fan.org

 

–enablerepo=city-fan.org,epel をつけてlibcurlをアップデートします。
※依存関係でlibnghttp2.so.14不足が出るのを防ぐために
epel
も追加して、いざアップデート。

[root@localhost ~]$ sudo yum update –enablerepo=city-fan.org,epel libcurl

完了

バージョン確認すると
$yum info libcurl

i686
バージョン:7.57.0
になっていたので、アップデート成功

中断していたrbenvでRubyインストール
# rbenv install -v 2.3.6
けっこう時間かかりますがインストール終了

再読み込み⇒
$ rbenv rehash

インストールされているrubyを確認⇒
$ rbenv versions
system *2.3.6 (set by /usr/local/src/rbenv/version)

先ほどインストールしたRubyに設定⇒
$ rbenv global 2.3.6

Rubyインストールされたかを確認⇒
$ ruby -v
ruby 2.3.6p384 (2017-12-14 revision 61254) [i686-linux]

CentOS6.7 しかも32bit(i686)版へのEPEL、Remi、RPMforgeリポジトリインストール

EPEL、Remi、RPMforgeとは、サードパーティ製の中でメジャーなリポジトリです。
CentOS標準リポジトリで提供されていないパッケージ、例えばPHP, MySQLなどの最新版をインストールできたりします。

ただ、安定していないバージョンを最新版としてインストールしてしまいハマることもあるので、これは安心の安定版だなというときに利用するのがいいかも。

ネット上では64bit版(x86_64)情報が主流なので、あえて32bit版について。

まず、現在インストールしているリポジトリの確認
# rpm -qa | grep epel
# rpm -qa | grep remi
もし、既にインストールしている古いリポジトリあれば、epelはremiに依存しているので、remiから削除
# rpm -e remi-release-5-8.el5.remi.noarch
# rpm -e epel-release-5-4.noarch
# rpm -e rpmforge-release-0.5.5-2.el5.rf.i386

【EPELリポジトリインストール】
# rpm –import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEYY-EPEL-6
# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

【Remiリポジトリインストール】
# rpm –import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
# rpm -ivh http://rpms.famillecollet.com/enterprise/6/remi/i386/remi-release-6.6-2.el6.remi.noarch.rpm

【RPMforgeリポジトリインストール】
# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt
# rpm -ivh http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.i686.rpm

リポジトリのデフォルト無効(enabled=0)に修正する
vi /etc/yum.repos.d/remi.repo ←remiは最初からenabled=0になってるので、特に何も変更しなくてOK
vi /etc/yum.repos.d/epel.repo
vi /etc/yum.repos.d/rpmforge.repo

完了。

試にPHPの最新情報調べてみる場合は下記という感じ
# yum –enablerepo=epel,remi,rpmforge info php

目当ての更新インストールなど終わったら、上記の3個のリポジトリをenabled=1に戻しておけば、
標準リポジトリ以外でのyum更新してしまうミスが防げるのでお勧め

CentOS 6.7 でのvsftpd設定 とFFFTPクライアントの設定

サーバー管理にSSHを利用する方が多いので、
ファイル転送にはSCP、もしくはHTTPといったところでしょうか。

一昔前はファイル転送にはFTPがメジャーでしたが、
HTTP、SCPに押され使用頻度が落ちているかな?と感じます。

ですが、SCPは暗号化を行うため、暗号化を行わないFTPと比べると
転送速度は半分以下(4分の1程度のことも)になることがほとんどです。

なので、特に暗号化の必要のない多くのデータを一度に転送する際には、まだまだFTPは使えます。

ということで、、下記の要件を仮定して、CentOS6.7で、FTPサーバー(vsftpd)を立ててみます。

■ 外部からのアクセスを許可しない社内サーバーでの運用(LANのみ)
■ アクティブモード接続(20番、21番ポート開放のみでOK)
※パッシブモード(PASVモード)の場合にはTCP 1024以上でけっこう広いレンジのファイアウォールを開放する必要があります

# rpm -q vsftpd <-- vsftpdがインストールされているか調べる
# パッケージvsftpdはインストールされていません

vsftpdが入っていなかったので入れます。

# yum -y install vsftpd  <-- vsftpdのインストール

# netstat -antu  <-- ポート確認
# iptables -vnL でもOK)

20,21番ポートが空いていない場合には次のようにiptablesに追加

# vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 20 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
(viエディタは”i”押せば書きこめるようになって、記録して終わるときは”ESC”で抜けてから “:wq” ですよ!)

vsftpdの設定ファイルに以下のように設定をします。

# vi /etc/vsftpd/vsftpd.conf

vsftpd.conf内の設定変更したとこだけ抜粋
anonymous_enable=NO <--匿名ログイン禁止(デフォルトはYES)

ascii_upload_enable=YES <--コメント削除して有効にする ( アスキーモードでのアップロードを許可 )
ascii_download_enable=YES <--コメント削除して有効にする(アスキーモードでのダウンロードを許可)

ftpd_banner=Welcome to blah FTP service. <--コメント削除して有効にする。別にしなくてもOK(FTPログイン時にソフト名とバージョンが表示されないようになる)

chroot_local_user=YES <--コメント削除して有効にする ( chroot有効 )。デフォルトでホームディレクトリより上層へのアクセスを禁止
chroot_list_enable=YES <--コメント削除して有効にする。ホームディレクトリより上層へのアクセスを許可するユーザリストの有効化
chroot_list_file=/etc/vsftpd/chroot_list <--コメント削除して有効にする ( chroot リストファイル指定 )
※管理者や、自身のホームディレクトリ以外へアクセスできるようにしておく必要があるユーザのみ登録することを推奨。管理者はSCPでいいやというような場合は特に有効にしなくてOK。もしくはchroot_listを作成時に何も書き込まない。ちなみにchrootを有効にした場合にはchroot_listファイルがないとエラーになるので、作成を忘れないように。

ls_recurse_enable=YES <--コメント削除して有効にする ( ディレクトリごと一括での転送有効 )

最終行へ下記の4行を追記
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
local_root=public_html <--ルートディレクトリ指定 (指定しない場合はホームディレクトリがルートディレクトリとなる)
use_localtime=YES <--ローカルタイムを使う
※userlist_enable=YES、userlist_deny=NOで/etc/vsftpd/user_list がFTPログインできるユーザーのリスト(ホワイトリスト)となります。
userlist_deny=YES もしくは削除で、/etc/vsftpd/user_list がFTPログイン禁止ユーザーのリスト(ブラックリスト)となります。

vsftpdの設定ファイルの修正はこれで終わり。

user_listにFTPログインを許可するユーザー名を書き込む
# vi /etc/vsftpd/user_list
hogehoge

FTPログインのルールはftpusersにも指定されていて、
/etc/vsftpd/ftpusers
に記されたユーザーはFTPログインできません。これは上記のホワイトリスト設定を行っても有効です。

# chkconfig vsftpd on  <-- 次回のブート時からは自動起動の設定
# service vsftpd start  <-- vsftpdを起動

ここで、FTPクライアントからアクセスすると、
500 OOPS: cannot change directory:/home/hogehoge
500 OOPS: priv_sock_get_cmd
となり、接続できないと思うので、さらに下記1か2のどちらかを行えばOK.

1. SELinuxの停止
# getenforce <-- SELinuxが動いているかの確認
Enforcing <-- 動いている。動いていない場合はDiabledと出る

# vi /etc/sysconfig/selinux
SELINUX=enforcing
SELINUX=disabled
と変更する。

# reboot <--OS再起動

2. SELinuxの設定を変更する
/usr/sbin/getsebool -a | grep ftp
で確認する。
ftp_home_dir –> off
になっていれば、これをONに変えるために
# /usr/sbin/setsebool -P ftp_home_dir 1 ←(けっこう時間かかる)

終了したら、念のために
# /usr/sbin/getsebool -a | grep ftp
ftp_home_dir –> on になっていればOK

今回ユーザーアカウントのhomeに設定したpublic_htmlディレクトリどうやって作るの?って人に
$ cd /home/hogehoge
$ mkdir public_html
$ cd public_html
$ echo ‘TEST FILE’ > index.html index.html <-- 試しにファイル作ってみただけで、ネット公開しないので別に必要ないです。

ここまでで、CentOS側への設定は完了です。

FFFTPソフトでアクセスする際の設定を一応書いておきます。
①[設定変更]→[文字コード]→[ファイル名の漢字コード]を「UTF-8N」へ変更
②[設定変更]→[拡張]→「PASVモードを使う」のチェックを外す

vsftpdをちゃんと設定したはずなのに、FTPクライアントで接続できないときは、
chroot_list,user_listが存在するか、設定ファイルに書き込んだパスなどにスペルミスがないかチェックしてみましょう。

windowsのmcd(コマンドプロンプト)でftp接続して、問題を発見できたりもします。

C:\Users\ユーザー名>ftp 192.168.**.***  ←サーバーのIPアドレス指定する
192.168.**.*** に接続しました。
500 OOPS: cannot read user list file:/etc/vsftpd/userlist
500 OOPS: priv_sock_get_cmd
接続がリモート ホストによって閉じられました。

これは、userlist⇒user_listのスペルミスということがわかります。
なので、
# vi /etc/vsftpd/vsftpd.conf
で該当箇所のスペルを修正すればOK

C:\Users\ユーザー名>ftp 192.168.**.***
192.168.**.*** に接続しました。
220 Welcome to blah FTP service.
ユーザー (192.168.**.***:(none)):hogehoge
331 Please specify the password.
パスワード:****
Login successful.
↑これでユーザー名:hogehogeでFTP接続ができたことを確認できました。
ログインできなかったら、user_listにユーザーアカウントを記載していない可能性があります。チェックしてみましょう。