CentOS7にvsftpd、perl、phpを導入し、HP転送

■FTPサーバー(vsftpd)をインストール

# yum -y install vsftpd

設定ファイル「vsftpd.conf」を編集。・・・パッシブモードを使えるように、ファイルの最後に次の内容を追加。

# nano -K /etc/vsftpd/vsftpd.conf
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60030

また、接続ユーザ(satoh163)が、ファイル所有者(apache)のグループ(apache)に対して書き込みを許可した状態でファイルを書き込ませます。(マスク:022→002とすることでパーミッション:644→664となる)

local_umask=002

FTPサーバーを起動

# systemctl start vsftpd.service

FTPサーバー自動起動を設定

# systemctl enable vsftpd.service
# systemctl status vsftpd.service

■ドキュメントルートのパーミッションを変更。
以下、どのようにするのが本当に良いのか理解不足の可能性あり。

オーナーとグループはapacheのままとしておきます。変更が必要な場合は以下を実行。

# chown -R apache:apache /var/www/html

ドキュメントルートのパーミッションとオーナーを確認。

# ls -la /var/www/

Apache HTTPサーバー経由でWordPressからのFTP転送が書き込めるように、ユーザー(satoh163)をapacheグループと、root権限であるwheelグループに所属させます。

# usermod -aG wheel,apache satoh163

ユーザが所属しているグループを確認。

# groups satoh163
satoh163 : satoh163 wheel apache
#

グループに所属しているユーザを確認。

# getent group wheel
wheel:x:10:satoh163
# getent group apache
apache:x:48:satoh163
#

現在のままでは、FTP接続ユーザ(satoh163)が、HPのルートディレクトリに書き込む権利が無いので、チェンジ・モード・コマンドで、ディレクトリに書き込み権を付加(755→775)。

# find /var/www/html/ -type d -exec chmod 775 {} \;

同様にファイルに対しても書き込み権を付加(644→664)。

# find /var/www/html/ -type f -exec chmod 664 {} \;

CGIファイルなど実行権がなくなったファイルは元に戻す必要が発生します。

# find /var/www/html/cgi-bin/count/*.cgi -type f -exec chmod 775 {} \;


■SELinuxを停止。・・・vsftpdがファイルアクセスに成約を受けるのでSELinuxを無効にします。

# nano -K /etc/sysconfig/selinux
SELINUX=disabled

OSを再起動する必要があります。

# reboot


■perlをインストール

# yum -y install perl

Webサーバの設定ファイル「httpd.conf」を編集。・・・ScriptAlias /cgi-bin/ ・・・を以下のように変更。
(CGIプログラムを/cgi-bin ディレクトリ以下に配置する場合)
(また、/cg-bin 以下に画像ファイルやHTMLが置けるように記述を追加)

# nano -K /etc/httpd/conf/httpd.conf
ScriptAlias /cgi-bin/ "/var/www/html/cgi-bin/"
 
<Directory "/var/www/html/cgi-bin/">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    AddHandler cgi-script .cgi
    AddHandler image/gif .gif
    AddHandler image/jpeg .jpeg .jpg
    AddHandler image/png .png
    AddHandler text/html .html .htm
    AddHandler text/css .css
    AddHandler application/x-javascript .js
</Directory>


■phpをインストール

# yum -y install php

PHPの日本語文字処理ライブラリも必要なのでインストールします。

# yum -y install php-mbstring

「php.ini」ファイルを開き、タイムゾーンを設定

# nano -K /etc/php.ini
;date.timezone =
date.timezone = Asia/Tokyo

Webサーバーを再起動する必要があります。

# systemctl restart httpd.service

 

■FTPクライアント「FileZilla」(on Ubuntu)から、ファイル転送し、CGIファイル等のパーミッション変更後、ブラウザで確認。

Angel21トップページのアクセスカウンタ(CGI)、カレンダー簡易予定表(PHP)が動作するところまで引越し完了です。(記事執筆日と投稿日はずれています。・・・あしからず。)

<懸案事項>

  • アクセスカウンターCGIファイルの改行コードが、サーバに適合していないらしく、「500 Internal Server Error」エラーが発生しました。「.cgi」ファイルの先頭記述「#!/usr/bin/perl」を「#!/usr/bin/perl –」に変更して回避し、表示可能となりました。本来はサーバー側で対処すべきなのかも。httpdが厳格になったのか、それとも何か設定が足りないのか、余裕ができたら原因調査予定。
  • 「お問い合わせ」(mailform)のページを表示した場合も、ブラウザの開発ツール上で「500 Internal Server Error」エラーが発生中。こちらの調査は、メールサーバーの設定が済むまで、先送りにしておきます。