サーバー設定 · 4 min read · Jan 27, 2026

完璧なサーバー - OpenSUSE 13.1 x86_64 (Apache2, MySQL, PHP, Postfix, Dovecot および ISPConfig 3) - ページ 4

8 Postfix、Dovecot、MySQLのインストール

実行します

zypper install postfix postfix-mysql mysql-community-server libmysqlclient-devel dovecot21 dovecot21-backend-mysql pwgen cron python

次のメッセージが表示された場合は、eximをアンインストールするように選択してください:

問題: sendmail-8.14.5-85.1.2.x86_64 は postfix-2.9.6-1.2.1.x86_64 によって提供される postfix と競合します
解決策 1: 次のアクションが実行されます:
postfix-2.9.6-1.2.1.x86_64 をインストールしない
do not install postfix-mysql-2.9.6-1.2.1.x86_64
解決策 2: sendmail-8.14.5-85.1.2.x86_64 のアンインストール

上記の解決策から番号を選択するか、キャンセルします [1/2/c] (c): <– 2

次のシンボリックリンクを作成します:

ln -s /usr/lib64/dovecot/modules /usr/lib/dovecot

この時点で、MySQLが起動を拒否したため、再起動する必要がありました。エラー:

Failed to issue method call: Unit mysql.service failed to load: No such file or directory. See system logs and 'systemctl status mysql.service' for details.
reboot

MySQLの設定ファイル /etc/my.cnf をエディタで開きます

vi /etc/my.cnf

そして、行 “ sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES “ を次のように変更します:

sql_mode=NO_ENGINE_SUBSTITUTION

次に、ファイル /usr/my.cnf をエディタで開きます

vi /usr/my.cnf

そして、sqlモードを

sql_mode=NO_ENGINE_SUBSTITUTION

こちらでも変更します。

MySQL、Postfix、Dovecotを起動し、サービスがブート時に起動するように有効にします。

systemctl enable mysql.service  
systemctl start mysql.service
systemctl enable postfix.service  
systemctl start postfix.service
systemctl enable dovecot.service  
systemctl start dovecot.service

次に、getmailパッケージをインストールします:

zypper install getmail

MySQLのインストールを安全にするために、次を実行します:

mysql_secure_installation

今、いくつかの質問がされます:

server1:~ # mysql_secure_installation

注意: このスクリプトのすべての部分を実行することは、すべてのMySQLサーバーにおいて推奨されます。
各ステップを注意深く読んでください!

MySQLにログインして安全にするためには、現在の
rootユーザーのパスワードが必要です。
MySQLをインストールしたばかりで、まだrootパスワードを設定していない場合、
パスワードは空白になりますので、ここではただエンターを押してください。

現在のrootのパスワードを入力してください (なしの場合はエンター): <– ENTER
OK、パスワードが正常に使用されました。次に進みます…

rootパスワードを設定することで、誰も適切な認証なしにMySQLのrootユーザーにログインできないようにします。

rootパスワードを設定しますか? [Y/n] <– Y
新しいパスワード: <– yourrootsqlpassword
新しいパスワードを再入力してください: <– yourrootsqlpassword
パスワードが正常に更新されました!
特権テーブルを再読み込みしています..
… 成功!

デフォルトでは、MySQLのインストールには匿名ユーザーがあり、
誰でもユーザーアカウントを作成することなくMySQLにログインできるようになっています。
これはテスト用のみを意図しており、インストールを少しスムーズにするためのものです。
本番環境に移行する前に、これらを削除する必要があります。

匿名ユーザーを削除しますか? [Y/n] <– Y
… 成功!

通常、rootは「localhost」からのみ接続を許可されるべきです。
これにより、誰かがネットワークからrootパスワードを推測できないようにします。

リモートでのrootログインを禁止しますか? [Y/n] <– Y
… 成功!

デフォルトでは、MySQLには「test」という名前のデータベースがあり、
誰でもアクセスできます。
これもテスト用のみを意図しており、本番環境に移行する前に削除する必要があります。

テストデータベースとそのアクセスを削除しますか? [Y/n] <– Y

  • テストデータベースを削除中…
    … 成功!
  • テストデータベースの特権を削除中…
    … 成功!

特権テーブルを再読み込みすることで、これまでに行ったすべての変更が
即座に有効になることを保証します。

特権テーブルを今すぐ再読み込みしますか? [Y/n] <– Y
… 成功!

クリーンアップ中…

すべて完了しました!
上記のすべてのステップを完了した場合、あなたのMySQLインストールは
今や安全であるはずです。

MySQLをご利用いただきありがとうございます!

server1:~ #

今、あなたのMySQLセットアップは安全であるはずです。

9 Amavisd-new、Spamassassin および Clamav

Amavisd-new、Spamassassin および Clamavウイルス対策をインストールします。実行します

zypper install amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql

/etc/amavisd.conf を開きます…

vi /etc/amavisd.conf

… そして、$mydomain 行の下に正しいホスト名を持つ $myhostname 行を追加します:

| [...] $mydomain = 'example.com'; # 他の設定のための便利なデフォルト $myhostname = "server1.$mydomain"; [...] |

次に、/var/run/clamav/clamd から /var/lib/clamav/clamd-socket へのシンボリックリンクを作成します:

mkdir -p /var/run/clamav  
ln -s /var/lib/clamav/clamd-socket /var/run/clamav/clamd

OpenSUSE 13.1 にはランタイムデータを保存するための /run ディレクトリがあります。/run は現在 tmpfs であり、/var/run は現在 tmpfs から /run にバインドマウントされており、したがって再起動時に空になります。

これは、再起動後に私たちが作成した /var/run/clamav ディレクトリが存在しなくなり、したがって clamd が起動に失敗することを意味します。したがって、システム起動時にこのディレクトリを作成する /etc/tmpfiles.d/clamav.conf ファイルを作成します(詳細については http://0pointer.de/public/systemd-man/tmpfiles.d.html を参照してください):

vi /etc/tmpfiles.d/clamav.conf

| D /var/run/clamav 0755 root root - |

amavisd と clamd を開始する前に、/etc/init.d/amavis 初期化スクリプトを編集する必要があります - デフォルトの初期化スクリプトで amavisd を信頼性よく開始、停止、再起動できませんでした:

vi /etc/init.d/amavis

開始と停止セクションの次の行をコメントアウトします:

| [...] start) # ZMI 20100428 stale pid file のチェック #if test -f $AMAVIS_PID ; then # checkproc -p $AMAVIS_PID amavisd # if test $? -ge 1 ; then # # pid file が古いです、削除します # echo -n "(古い amavisd pid file $AMAVIS_PID が見つかりました、削除します。amavisd がクラッシュしましたか?)" # rm -f $AMAVIS_PID # fi #fi echo -n "ウイルススキャナー (amavisd-new) を開始しています: " $AMAVISD_BIN start #if ! checkproc amavisd; then # rc_failed 7 #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "amavis-milter を開始しています:" # startproc -u vscan $AMAVIS_MILTER_BIN -p $AMAVIS_MILTER_SOCK > /dev/null 2>&1 # rc_status -v #fi ;; stop) echo -n "ウイルススキャナー (amavisd-new) をシャットダウンしています: " #if checkproc amavisd; then # rc_reset $AMAVISD_BIN stop #else # rc_reset #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "amavis-milter をシャットダウンしています: " # killproc -TERM $AMAVIS_MILTER_BIN # rc_status -v #fi ;; [...] |

初期化スクリプトを変更したため、次を実行する必要があります

systemctl --system daemon-reload

clamav を開始するには、データベースをダウンロードする必要があります & 次のコマンドを実行します

freshclam

注意: データベースのダウンロードには多くの時間がかかります。中断せず、freshclam 更新サービスを途中で停止しないことをお勧めします。

サービスを有効にするには、次を実行します:

systemctl enable amavis.service  
systemctl enable clamd.service  
systemctl start amavis.service  
systemctl start clamd.service

10 Apache 2 Webサーバーのインストール (PHP5、Ruby、Python、WebDAV)

Apache2 と suphp をインストールします。実行します:

zypper install apache2 apache2-mod_fcgid

PHP5をインストールします:

zypper install 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-mysql 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-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl apache2-mod_php5
zypper install http://download.opensuse.org/repositories/server:/php/openSUSE_13.1/x86_64/suphp-0.7.1-5.3.x86_64.rpm

次に、Apacheモジュール(WebDAVを含む)を有効にするためにこれらのコマンドを実行します:

a2enmod socache_shmcb
a2enmod suexec  
a2enmod rewrite  
a2enmod ssl  
a2enmod actions  
a2enmod suphp  
a2enmod fcgid  
a2enmod dav  
a2enmod dav_fs  
a2enmod dav_lock  
a2enmod logio  
chown root:www /usr/sbin/suexec2  
chmod 4755 /usr/sbin/suexec2
a2enflag SSL

Pythonサポートを追加するには、次を実行します:

zypper --gpg-auto-import-keys addrepo --name "Python Support (Apache_openSUSE_13.1)" http://download.opensuse.org/repositories/Apache:/Modules/openSUSE_13.1/  apache-Modules
zypper install apache2-mod_python
a2enmod python

次に、phpMyAdminをインストールします:

zypper install phpMyAdmin

後でISPConfigを通じて作成されたすべてのウェブサイトから /phpmyadmin (例: http://www.example.com/phpmyadmin) および /phpMyAdmin (例: http://www.example.com/phpMyAdmin) にアクセスできるようにするために、/etc/apache2/conf.d/phpMyAdmin.conf を開きます…

vi /etc/apache2/conf.d/phpMyAdmin.conf

… そして、最初に次の2つのエイリアスを追加します:

| Alias /phpMyAdmin /srv/www/htdocs/phpMyAdmin Alias /phpmyadmin /srv/www/htdocs/phpMyAdmin [...] |

Apacheを開始する前に、リンクをたどり、httpd.conf に変更を加える必要があります

vi /etc/apache2/httpd.conf

これらの行をコメントアウトし、これらの行を追加します

#  
#    Options None  
#    AllowOverride None  
#    Order deny,allow  
#   Deny from all  
#  
  
  
Options None  
AllowOverride None  
Require all denied  

今、Apacheサービスを開始します

systemctl enable apache2.service  
systemctl start apache2.service

10.1 PHP-FPM

ISPConfig 3.0.5 から、Apacheで使用するために選択できる追加のPHPモードがあります: PHP-FPM。

ApacheでPHP-FPMを使用するには、mod_fastcgi Apacheモジュールが必要です(mod_fcgid と混同しないでください - 非常に似ていますが、mod_fcgid では PHP-FPM を使用できません)。PHP-FPM と mod_fastcgi を次のようにインストールできます:

mod_fastcgi はサードパーティのリポジトリから入手可能で、次のように有効にできます:

次に、Fastcgi と PHP-FPM をインストールします:

zypper install fastcgi php5-fpm

次に、mod_fastcgi をダウンロードしてインストールします:

cd /tmp  
wget http://download.opensuse.org/repositories/home:/munix9/openSUSE_13.1/x86_64/apache2-mod_fastcgi-2.4.7_SNAP_0910052141-3.1.x86_64.rpm  
rpm -i apache2-mod_fastcgi-2.4.7_SNAP_0910052141-3.1.x86_64.rpm  
a2enmod mod_fastcgi

PHP-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.conf

PHPのセッションディレクトリの権限を変更します:

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 13.1 には 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 がそのパスを仕様に従って修正します。 ; ゼロの設定は、PHP が以前のように動作することを引き起こします。 ; デフォルトは 1 です。 ; スクリプトを修正して、PATH_TRANSLATED ではなく SCRIPT_FILENAME を使用する必要があります。 ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |

次に、php-fpm のシステム起動リンクを作成し、開始します:

systemctl enable php-fpm.service   
systemctl start php-fpm.service

PHP-FPM はポート 9000 で FastCGI サーバーを実行するデーモンプロセスであり、次の出力で確認できます

netstat -tapn
server1:~ # netstat -tapn  
アクティブなインターネット接続 (サーバーおよび確立された)  
Proto  Recv-Q  Send-Q  Local Address           Foreign Address         State       PID/Program name  
tcp        0      0  0.0.0.0:80              0.0.0.0:*             LISTEN      2329/nginx  
tcp        0      0  0.0.0.0:22              0.0.0.0:*             LISTEN      1204/sshd  
tcp        0      0  127.0.0.1:9000          0.0.0.0:*             LISTEN      2511/php-fpm.conf)  
tcp        0      0  0.0.0.0:3306            0.0.0.0:*             LISTEN      2059/mysqld  
tcp        0      0  192.168.0.100:22        192.168.0.199:1632    ESTABLISHED 1284/0  
tcp        0      0  :::22                    :::*                   LISTEN      1204/sshd  
server1:~ #

次に、次のApacheモジュールを有効にします…

a2enmod actions  
a2enmod fastcgi  
a2enmod alias

… そしてApacheを再起動します:

systemctl restart apache2.service
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。