サーバー設定 · 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.rebootMySQLの設定ファイル /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.servicesystemctl enable postfix.service
systemctl start postfix.servicesystemctl enable dovecot.service
systemctl start dovecot.service次に、getmailパッケージをインストールします:
zypper install getmailMySQLのインストールを安全にするために、次を実行します:
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/clamdOpenSUSE 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-reloadclamav を開始するには、データベースをダウンロードする必要があります & 次のコマンドを実行します
freshclam
注意: データベースのダウンロードには多くの時間がかかります。中断せず、freshclam 更新サービスを途中で停止しないことをお勧めします。
サービスを有効にするには、次を実行します:
systemctl enable amavis.service
systemctl enable clamd.service
systemctl start amavis.service
systemctl start clamd.service10 Apache 2 Webサーバーのインストール (PHP5、Ruby、Python、WebDAV)
Apache2 と suphp をインストールします。実行します:
zypper install apache2 apache2-mod_fcgidPHP5をインストールします:
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_php5zypper 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_shmcba2enmod 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/suexec2a2enflag SSLPythonサポートを追加するには、次を実行します:
zypper --gpg-auto-import-keys addrepo --name "Python Support (Apache_openSUSE_13.1)" http://download.opensuse.org/repositories/Apache:/Modules/openSUSE_13.1/ apache-Moduleszypper install apache2-mod_pythona2enmod 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.service10.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_fastcgiPHP-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 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.servicePHP-FPM はポート 9000 で FastCGI サーバーを実行するデーモンプロセスであり、次の出力で確認できます
netstat -tapnserver1:~ # 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新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。