サーバー設定 · 6 min read · Sep 13, 2025
完璧なサーバー - OpenSUSE 12.3 x86_64 (nginx, Dovecot, ISPConfig 3) - ページ 4
10 Nginx、PHP5 (PHP-FPM)、および Fcgiwrap のインストール
Nginx は OpenSUSE 用のパッケージとして利用可能で、以下のようにインストールできます。
zypper install nginxもし Apache2 がすでにシステムにインストールされている場合は、今すぐ停止してください…
systemctl stop apache2.service… そして Apache のシステム起動リンクを削除します:
systemctl disable apache2.service次に、nginx のシステム起動リンクを作成し、起動します:
systemctl enable nginx.service
systemctl start nginx.service(もし Apache2 と nginx の両方がインストールされている場合、ISPConfig 3 インストーラーはどちらを使用するか尋ねます - この場合は nginx と答えてください。もしこれらのうちの一方のみがインストールされている場合、ISPConfig は必要な設定を自動的に行います。)
nginx の vhosts で IPv6 アドレスを使用したい場合は、ISPConfig で IPv6 vhosts を作成する前に以下を行ってください:
/etc/sysctl.conf を開き…
vi /etc/sysctl.conf… そして次の行を追加します net.ipv6.bindv6only = 1:
| [...] net.ipv6.bindv6only = 1 |
その後、変更を有効にするために…
sysctl -pnginx で PHP5 を動作させるために PHP-FPM を使用します (PHP-FPM (FastCGI プロセスマネージャ) は、特に忙しいサイトに役立つ追加機能を持つ PHP FastCGI の代替実装です) これを以下のようにインストールします:
zypper install php5-fpmPHP-FPM を開始する前に、/etc/php5/fpm/php-fpm.conf.default を /etc/php5/fpm/php-fpm.conf に名前変更します:
mv /etc/php5/fpm/php-fpm.conf.default /etc/php5/fpm/php-fpm.confPHP のセッションディレクトリの権限を変更します:
chmod 1733 /var/lib/php5次に /etc/php5/fpm/php-fpm.conf を開き…
vi /etc/php5/fpm/php-fpm.conf… そして error_log を /var/log/php-fpm.log に変更します:
| [...] error_log = /var/log/php-fpm.log [...] |
OpenSUSE 12.3 では PHP-FPM 用の php.ini ファイルがないため、CLI php.ini をコピーします:
cp /etc/php5/cli/php.ini /etc/php5/fpm/次に /etc/php5/fpm/php.ini を開き…
vi /etc/php5/fpm/php.ini… そして cgi.fix_pathinfo を 0 に設定します:
| [...] ; cgi.fix_pathinfo は CGI に対して *実際の* PATH_INFO/PATH_TRANSLATED サポートを提供します。 PHP の ; 以前の動作は PATH_TRANSLATED を SCRIPT_FILENAME に設定し、PATH_INFO が何であるかを理解しませんでした。 ; PATH_INFO に関する詳細は CGI 仕様を参照してください。 これを 1 に設定すると、PHP CGI は仕様に従ってパスを修正します。 0 の設定は PHP を以前のように動作させます。 デフォルトは 1 です。 スクリプトを修正して PATH_TRANSLATED ではなく SCRIPT_FILENAME を使用する必要があります。 ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |
次に php-fpm のシステム起動リンクを作成し、再起動します:
systemctl enable php-fpm.service
systemctl restart php-fpm.servicePHP-FPM はポート 9000 で FastCGI サーバーを実行するデーモンプロセスです。次の出力で確認できます。
netstat -tapnserver1:~ # netstat -tapn
アクティブなインターネット接続 (サーバーと確立された接続)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3310 0.0.0.0:* LISTEN 10357/clamd
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 9869/dovecot
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10521/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1275/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 9816/master
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 10695/php-fpm.conf)
tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN 10337/amavisd (mast
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 9694/mysqld
tcp 0 0 192.168.0.100:22 192.168.0.199:4630 ESTABLISHED 1332/0
tcp 0 0 :::22 :::* LISTEN 1275/sshd
tcp 0 0 ::1:25 :::* LISTEN 9816/master
server1:~ #PHP で MySQL サポートを得るために、php5-mysql パッケージをインストールできます。アプリケーションに必要な他の PHP5 モジュールもインストールするのが良いアイデアです:
zypper install php5-mysql php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-pear php5-sysvmsg php5-sysvshm今、PHP-FPM を再起動します:
systemctl restart php-fpm.servicenginx で CGI サポートを得るために、Fcgiwrap をインストールします。
Fcgiwrap は、複雑な CGI スクリプトにも対応する CGI ラッパーで、各 vhost が独自の cgi-bin ディレクトリを使用できるため、共有ホスティング環境で使用できます。
OpenSUSE 用の fcgiwrap パッケージはないため、自分でビルドする必要があります。まず、いくつかの前提条件をインストールします:
zypper install git patch automake glibc-devel gcc flex compat-readline4 db-devel wget gcc-c++ make vim libtool FastCGI-devel次のシンボリックリンクを作成します:
ln -s /usr/include/fastcgi/fastcgi.h /usr/local/include/
ln -s /usr/include/fastcgi/fcgi_config.h /usr/local/include/
ln -s /usr/include/fastcgi/fcgi_stdio.h /usr/local/include/
ln -s /usr/include/fastcgi/fcgiapp.h /usr/local/include/
ln -s /usr/include/fastcgi/fcgimisc.h /usr/local/include/
ln -s /usr/include/fastcgi/fcgio.h /usr/local/include/
ln -s /usr/include/fastcgi/fcgios.h /usr/local/include/これで、fcgiwrap を以下のようにビルドできます:
cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make installこれにより、fcgiwrap が /usr/local/sbin/fcgiwrap にインストールされます。
次に、fcgiwrap をデーモンとして実行できる spawn-fcgi パッケージをインストールします:
zypper install spawn-fcgi次のように fcgiwrap を起動できます:
spawn-fcgi -u wwwrun -g www -s /var/run/fcgiwrap.socket -S -M 0770 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/local/sbin/fcgiwrapこれで、/var/run/fcgiwrap.socket に fcgiwrap ソケットが見つかるはずで、所有者は wwwrun、グループは www です。次に、nginx ユーザーを www グループに追加する必要があります:
usermod -a -G www nginxその後、nginx をリロードします:
systemctl reload nginx.serviceシステムを起動するたびに fcgiwrap を手動で起動したくない場合は、/etc/init.d/boot.local を開き…
vi /etc/init.d/boot.local… そしてファイルの最後に spawn-fcgi コマンドを追加します - これにより、起動プロセスの最後に fcgiwrap が自動的に起動します:
| [...] /usr/bin/spawn-fcgi -u wwwrun -g www -s /var/run/fcgiwrap.socket -S -M 0770 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/local/sbin/fcgiwrap |
これで完了です!nginx vhost を作成すると、ISPConfig が正しい vhost 設定を処理します。
10.1 phpMyAdmin のインストール
次に phpMyAdmin をインストールします:
zypper install phpMyAdminこれにより Apache が依存関係としてインストールされるため、Apache のシステム起動リンクを削除します:
systemctl disable apache2.servicephpMyAdmin は現在 /srv/www/htdocs/phpMyAdmin ディレクトリにありますが、/usr/share/phpmyadmin/ ディレクトリに配置したいので、シンボリックリンクを作成します:
ln -s /srv/www/htdocs/phpMyAdmin /usr/share/phpmyadminISPConfig 3 をインストールした後、次のように phpMyAdmin にアクセスできます:
ISPConfig アプリ vhost はポート 8081 で nginx 用の phpMyAdmin 設定が付属しているため、http://server1.example.com:8081/phpmyadmin または http://server1.example.com:8081/phpMyAdmin を使用して phpMyAdmin にアクセスできます。
/ phpmyadmin または / phpMyAdmin エイリアスを使用したい場合、これは Apache よりも少し複雑です。なぜなら nginx にはグローバルエイリアスがないからです (つまり、すべての vhosts に対して定義できるエイリアス)。したがって、phpMyAdmin にアクセスしたい 各 vhost に対してこれらのエイリアスを定義する必要があります。
これを行うには、ISPConfig のウェブサイトのオプションタブの nginx ディレクティブフィールドに次の内容を貼り付けます:
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
vhost に対して http s を使用する場合、phpMyAdmin 設定に次の行 fastcgi_param HTTPS on; を追加する必要があります:
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS on; # <-- この行を追加 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
vhost に対して http と https の両方を使用する場合、/etc/nginx/nginx.conf の http {} セクションに次のセクションを追加する必要があります (すべての include 行の前に) これにより、訪問者が http または https を使用しているかを判断し、$fastcgi_https 変数を設定します (これは phpMyAdmin 設定で使用します):
vi /etc/nginx/nginx.conf| [...] http { [...] ## HTTPS が使用されているかを検出 map $scheme $fastcgi_https { default off; https on; } [...] } [...] |
その後、nginx をリロードするのを忘れないでください:
systemctl reload nginx.service次に、nginx ディレクティブフィールドに戻り、fastcgi_param HTTPS on; の代わりに fastcgi_param HTTPS $fastcgi_https; の行を追加して、http および https リクエストの両方で phpMyAdmin を使用できるようにします:
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS $fastcgi_https; # <-- この行を追加 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
11 PureFTPd のインストール
pure-ftpd FTP デーモンをインストールします。実行:
zypper install pure-ftpdsystemctl enable pure-ftpd.service
systemctl start pure-ftpd.service次に、PureFTPd を構成して FTP および TLS セッションを許可します。FTP は非常に安全でないプロトコルで、すべてのパスワードとすべてのデータが平文で転送されます。TLS を使用することで、通信全体を暗号化でき、FTP をはるかに安全にします。
TLS には OpenSSL が必要です。OpenSSL をインストールするには、単に次を実行します:
zypper install openssl/etc/pure-ftpd/pure-ftpd.conf を開き…
vi /etc/pure-ftpd/pure-ftpd.confFTP と TLS セッションを許可したい場合は、TLS を 1 に設定します:
| [...] # このオプションは 3 つの値を受け入れることができます : # 0 : SSL/TLS 暗号化レイヤーを無効にする (デフォルト)。 # 1 : 従来のセッションと暗号化されたセッションの両方を受け入れる。 # 2 : SSL/TLS セキュリティメカニズムを使用しない接続を拒否する、 # 匿名セッションを含む。 # これを盲目的にコメント解除しないでください。 確認してください : # 1) サーバーが SSL/TLS サポート (--with-tls) でコンパイルされていること、 # 2) 有効な証明書があること、 # 3) 互換性のあるクライアントのみがログインすること。 TLS 1 [...] |
TLS セッションのみを受け入れたい場合 (FTP はなし) は、TLS を 2 に設定します:
| [...] # このオプションは 3 つの値を受け入れることができます : # 0 : SSL/TLS 暗号化レイヤーを無効にする (デフォルト)。 # 1 : 従来のセッションと暗号化されたセッションの両方を受け入れる。 # 2 : SSL/TLS セキュリティメカニズムを使用しない接続を拒否する、 # 匿名セッションを含む。 # これを盲目的にコメント解除しないでください。 確認してください : # 1) サーバーが SSL/TLS サポート (--with-tls) でコンパイルされていること、 # 2) 有効な証明書があること、 # 3) 互換性のあるクライアントのみがログインすること。 TLS 2 [...] |
TLS を全く許可しない (FTP のみ) は、TLS を 0 に設定します:
| [...] # このオプションは 3 つの値を受け入れることができます : # 0 : SSL/TLS 暗号化レイヤーを無効にする (デフォルト)。 # 1 : 従来のセッションと暗号化されたセッションの両方を受け入れる。 # 2 : SSL/TLS セキュリティメカニズムを使用しない接続を拒否する、 # 匿名セッションを含む。 # これを盲目的にコメント解除しないでください。 確認してください : # 1) サーバーが SSL/TLS サポート (--with-tls) でコンパイルされていること、 # 2) 有効な証明書があること、 # 3) 互換性のあるクライアントのみがログインすること。 TLS 0 [...] |
TLS を使用するためには、SSL 証明書を作成する必要があります。私はそれを /etc/ssl/private/ に作成しますので、まずそのディレクトリを作成します:
mkdir -p /etc/ssl/private/その後、次のように SSL 証明書を生成できます:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem国名 (2 文字コード) [AU]: <– あなたの国名を入力します (例: “DE”).
州または県名 (フルネーム) [Some-State]: <– あなたの州または県名を入力します。
市名 (例: city) []: <– あなたの市名を入力します。
組織名 (例: company) [Internet Widgits Pty Ltd]: <– あなたの組織名を入力します (例: あなたの会社名)。
組織単位名 (例: section) []: <– あなたの組織単位名を入力します (例: “IT 部門“).
共通名 (例: YOUR name) []: <– システムの完全修飾ドメイン名を入力します (例: “server1.example.com”).
メールアドレス []: <– あなたのメールアドレスを入力します。
SSL 証明書の権限を変更します:
chmod 600 /etc/ssl/private/pure-ftpd.pem最後に PureFTPd を再起動します:
systemctl restart pure-ftpd.serviceこれで完了です。FTP クライアントを使用して接続を試みることができます。ただし、FTP クライアントを TLS を使用するように構成する必要があります - 次の章で FileZilla での設定方法を説明します。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。