GNU/Linux >> Linux の 問題 >  >> Debian

完璧なサーバー-Debian10(Nginx、BIND、Dovecot、ISPConfig 3.2)

このチュートリアルでは、ISPConfig3.2のインストール用にDebian10サーバー(Nginx、BIND、Dovecotを使用)を準備する方法と、ISPConfig3.2をインストールする方法を示します。 ISPConfig 3は、Webブラウザを介して次のサービスを構成できるWebホスティングコントロールパネルです:Apacheまたはnginx Webサーバー、Postfixメールサーバー、CourierまたはDovecot IMAP / POP3サーバー、MySQL、BINDまたはMyDNSネームサーバー、PureFTPd、SpamAssassin、 ClamAV、その他多数。このセットアップは、Nginx Webサーバー、DNSサーバーとしてのBIND、およびIMAP/POP3サーバーとしてのDovecotを対象としています。

1予備メモ

このチュートリアルでは、ホスト名server1.example.comとIPアドレス192.168.0.100およびゲートウェイ192.168.0.1を使用します。これらの設定は異なる場合があるため、必要に応じて置き換える必要があります。先に進む前に、Debian 10の最小インストールが必要です。これは、ホスティングプロバイダーからのDebian最小イメージであるか、最小Debianサーバーチュートリアルを使用してベースシステムをセットアップしている可能性があります。

以下のすべてのコマンドはrootユーザーとして実行されます。 rootユーザーとして直接ログインするか、通常のユーザーとしてログインしてからコマンドを使用します

 su-

続行する前に、サーバーのrootユーザーになります。 重要 :「su」だけでなく「su-」を使用する必要があります。そうしないと、DebianによってPATH変数が間違って設定されます。

2SSHサーバーをインストールします

システムのインストール中にOpenSSHサーバーをインストールしなかった場合は、今すぐインストールできます。

 apt-get -y install ssh openssh-server 

今後は、PuTTYなどのSSHクライアントを使用して、ワークステーションからDebian 10サーバーに接続し、このチュートリアルの残りの手順に従うことができます。

3シェルテキストエディタをインストールします(オプション)

nanoを使用します このチュートリアルのテキストエディタ。一部のユーザーはクラシックviエディターを好むため、ここで両方のエディターをインストールします。デフォルトのviプログラムは、DebianとUbuntuで奇妙な動作をします。これを修正するには、vim-noxをインストールします:

 apt-get -y install nano vim-nox 

(joeなどの別のテキストエディタを使用する場合は、これを行う必要はありません。)

4ホスト名を構成します

サーバーのホスト名は、「server1.example.com」のようなサブドメインである必要があります。 「example.com」のようなサブドメイン部分のないドメイン名をホスト名として使用しないでください。後でメールの設定で問題が発生する可能性があります。まず、/ etc / hostsでホスト名を確認し、必要に応じて変更する必要があります。行は次のようになります:「IPアドレス-スペース-ドメインを含む完全なホスト名-スペース-サブドメイン部分」。 / etc/hostsを編集します。次のようにします:

 nano / etc / hosts 
 127.0.0.1 localhost.localdomain localhost192.168.0.100 server1.example.com server1#IPv6対応ホストには次の行が望ましい::1 localhost ip6-localhost ip6-loopbackff02 ::1 ip6-allnodesff02 ::2 ip6 -allrouters 

次に、/ etc / hostnameファイルを編集します:

 nano / etc / hostname 

この場合、サブドメイン部分のみが含まれます:

 server1 

最後に、サーバーを再起動して変更を適用します。

再起動

再度ログインし、次のコマンドを使用してホスト名が正しいかどうかを確認します。

 hostname 
hostname -f

出力は次のようになります:

 [email protected]:/ tmp#hostname 
server1
[email protected]:/ tmp#hostname -f
server1.example.com

5Debianインストールを更新する

まず、/ etc / apt /sources.listにバスター/アップデートリポジトリが含まれていることを確認します(これにより、ClamAVウイルススキャナーの最新のアップデートを常に取得できます。このプロジェクトはリリースを頻繁に公開し、古いバージョンが機能しなくなる場合があります)、コントリビュートリポジトリと非フリーリポジトリが有効になっていること。

 nano /etc/apt/sources.list 
 deb http://deb.debian.org/debian/ buster main contrib non-free 
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster / updates main contrib non-free
deb-src http://security.debian.org/debian-security buster / updates主な貢献は無料ではありません

実行

 apt-get update 

aptパッケージデータベースを更新するには

 apt-get upgrade 

最新のアップデートをインストールします(ある場合)。

6デフォルトのシェルを変更する

/ bin/shは/bin/ dashへのシンボリックリンクですが、/ bin/dashではなく/bin/bashが必要です。したがって、これを行います:

 dpkg-reconfigure dash 

デフォルトのシステムシェル(/ bin / sh)としてダッシュを使用しますか? <-いいえ

これを行わないと、ISPConfigのインストールが失敗します。

7システム時計を同期する

システムクロックをNTPと同期することをお勧めします( n etwork t ime p rotocol)インターネット上のサーバー。実行するだけです

 apt-get install ntp 

システム時刻は常に同期されます。

8 Postfix、Dovecot、MySQL、rkhunter、およびbinutilsをインストールします

Postfix、Dovecot、MySQL、rkhunter、Binutilsを1つのコマンドでインストールできます:

 apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo curl 

次の質問があります:

メール構成の一般的なタイプ:<-インターネットサイト
システムメール名:<-server1.example.com

MariaDB / MySQLのインストールを保護し、テストデータベースを無効にするには、次のコマンドを実行します。

 mysql_secure_installation 

インストール中に新しいパスワードを設定するだけなので、MariaDBのrootパスワードを変更する必要はありません。次のように質問に答えてください:

ルートパスワードを変更しますか? [Y / n] <-y 
新しいパスワード:<-新しいデータベースルートパスワードを入力してください
新しいパスワードを再入力してください:<-データベースルートパスワードを繰り返してください
匿名ユーザーを削除してください? [Y / n] <-y
rootログインをリモートで禁止しますか? [Y / n] <-y
テストデータベースを削除してアクセスしますか? [Y / n] <-y
特権テーブルを今すぐリロードしますか? [Y / n] <-y

次に、PostfixでTLS / SSLと送信ポートを開きます:

 nano /etc/postfix/master.cf 

次のようにsubmissionセクションとsmtpsセクションのコメントを解除し、必要に応じて行を追加して、master.cfファイルのこのセクションが次のセクションとまったく同じになるようにします。 重要: これらの行の後の-o行だけでなく、smtpsとsubmissionで始まる行の前の#も削除してください!

 [...] 
submit inet n --y --- smtpd
-o syslog_name =postfix / subject
-o smtpd_tls_security_level =encrypt
-o smtpd_sasl_auth_enable =yes
-o smtpd_client_restrictions =permit_sasl_authenticated、reject
#-o smtpd_reject_unlisted_recipient =no
#-o smtpd_client_restrictions =$ mua_client_restrictions
#-o smtpd_helo_restrictions =$ =$ mua_sender_restrictions
#-o smtpd_recipient_restrictions =
#-o smtpd_relay_restrictions =permit_sasl_authenticated、reject
#-o milter_macro_daemon_name =ORIGINATING
smtps inet n --y - -o syslog_name =postfix / smtps
-o smtpd_tls_wrappermode =yes
-o smtpd_sasl_auth_enable =yes
-o smtpd_client_restrictions =permit_sasl_authenticated、reject
#-o smtpd_reject_unlisted_ #-o smtpd_client_restrictions =$ mua_client_restrictions
#-o smtpd_helo_restrictions =$ mua_helo_restrictions
#-o smtpd_se nder_restrictions =$ mua_sender_restrictions
#-o smtpd_recipient_restrictions =
#-o smtpd_relay_restrictions =permit_sasl_authenticated、reject
#-o milter_macro_daemon_name =ORIGINATING
[...]

その後、Postfixを再起動します:

 service postfix restart 

MariaDBがローカルホストだけでなくすべてのインターフェースでリッスンするようにしたいので、/ etc / mysql / mariadb.conf.d / 50-server.cnfを編集して、bind-address =127.0.0.1:

の行をコメントアウトします。
 nano /etc/mysql/mariadb.conf.d/50-server.cnf 
 [...] 
#スキップネットワークの代わりに、デフォルトでは、より互換性があり、安全性が低くない#localhostでのみリッスンするようになりました。#bind-address =127.0.0.1

[...]

ファイルを保存します。次に、MariaDBのパスワード認証方法をネイティブに設定して、後でPHPMyAdminを使用してrootユーザーとして接続できるようにします。

 echo "update mysql.user set plugin ='mysql_native_password' where user ='root';" | mysql -u root 

ファイル/etc/mysql/debian.cnfを編集し、MYSQL/MariaDBのrootパスワードをpasswordという単語で始まる行に2回設定します。

 nano /etc/mysql/debian.cnf 

追加する必要のあるMySQLルートパスワードは赤で表示されます。この例では、パスワードは「howtoforge」です。

#Debianスクリプト用に自動的に生成されます。触れないでください!
[クライアント]
ホスト=ローカルホスト
ユーザー=ルート
パスワード=howtoforge
ソケット=/var/run/mysqld/mysqld.sock
[mysql_upgrade]
host =localhost
user =root
password =howtoforge
socket =/var/run/mysqld/mysqld.sock
basedir =/ usr

エラーを防ぐには'受け入れエラー:開いているファイルが多すぎます 'MariaDBのオープンファイル制限を高く設定します。

エディターでファイル/etc/security/limits.confを開きます:

 nano /etc/security/limits.conf 

これらの行をファイルの最後に追加します。

 mysql soft nofile 65535 
mysql hard nofile 65535

次に、mkdirコマンドを使用して新しいディレクトリ/etc/systemd/system/mysql.service.d/を作成します。

 mkdir -p /etc/systemd/system/mysql.service.d/ 

中に新しいファイルを追加します:

 nano /etc/systemd/system/mysql.service.d/limits.conf 

そのファイルに次の行を貼り付けます:

[サービス]
LimitNOFILE =infinity

ファイルを保存して、nanoエディターを閉じます。

次に、systemdをリロードし、MariaDBを再起動します:

systemctlデーモン-リロード
systemctlrestart mariadb

警告を無視してください:「警告:ディスク上でmariadb.serviceのユニットファイル、ソース構成ファイル、またはドロップインが変更されました。ユニットをリロードするには、「systemctldaemon-reload」を実行してください。 "。

dbconfig-commonシステムをインストールします:

 apt-get install dbconfig-common dbconfig-mysql 

現在、Debian dbconfig-commonシステムに問題があり、後でRoundCubeをインストールできません。次のコマンドを実行して、修正してください。

 sed -i -r's / _dbc_nodb ="yes" dbc_mysql_exec / _dbc_nodb ="yes"; dbc_mysql_exec / g'/ usr / share / dbconfig-common / internal / mysql 

次に、ネットワークが有効になっていることを確認します。実行

 netstat -tap | grep mysql 

出力は次のようになります。

 [メール保護]:〜#netstat -tap | grep mysql 
tcp6 0 0 [::]:mysql [::]:* LISTEN 4027 / mysqld
[email protected]:〜#

9 Amavisd-new、SpamAssassin、およびClamAVをインストールします

amavisd-new、SpamAssassin、およびClamAVをインストールするには、次のコマンドを実行します。

 apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip apt-listchanges libnet-ldap-perllibauthen-sasl-perlclamav-docsデーモンlibio-string-perllibio -socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgrey 

ISPConfig 3のセットアップでは、SpamAssassinフィルターライブラリを内部的にロードするamavisdを使用するため、SpamAssassinを停止してRAMを解放できます。

 systemctl stop spamassassin 
systemctl disable spamassassin

10 Nginx、PHP(PHP-FPM)、およびFcgiwrapをインストールします

NginxはDebianのパッケージとして利用可能であり、次のようにインストールできます。

 apt-get install nginx 

Apache2がすでにシステムにインストールされている場合は、今すぐ停止してください...

 systemctl stop apache2 

メッセージ「apache2.serviceの停止に失敗しました:ユニットapache2.serviceがロードされていません。 「は問題なく、エラーを示すものではありません。

...そしてApacheのシステム起動リンクを削除します:

 systemctl disable apache2 

その後nginxを開始します:

 systemctl start nginx 

(Apache2とnginxの両方がインストールされている場合、ISPConfig 3インストーラーはどちらを使用するかを尋ねます。この場合はnginxと答えます。両方の両方がインストールされている場合、ISPConfigは必要な構成を自動的に行います。)

>

PHP-FPMを介してnginxでPHP7.3を動作させることができます(PHP-FPM(FastCGI Process Manager)は、あらゆるサイズのサイト、特に忙しいサイトに役立ついくつかの追加機能を備えた代替のPHP FastCGI実装です)。 P>

 apt-get install php7.3-fpm 

PHP-FPMは、ソケット/var/run/php/php7.3-fpm.sockでFastCGIサーバーを実行するデーモンプロセスです。

PHPでMySQLをサポートするには、php7.3-mysqlパッケージをインストールします。他のPHPモジュールをインストールすることをお勧めします。また、アプリケーションでそれらが必要になる場合もあります。次のような利用可能なPHPモジュールを検索できます:

 apt-cache search php7 

必要なものを選び、次のようにインストールします:

 apt-get install php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi php-pear mcrypt imagemagick libruby php7.3- curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3- zip php7.3-mbstring memcached php7.3-soap php7.3-fpm php7.3-opcache php-apcu 

次に/etc/php/7.3/fpm/php.iniを開きます...

 nano /etc/php/7.3/fpm/php.ini 

...そしてcgi.fix_pathinfo=0とタイムゾーンを設定します:

 [...] cgi.fix_pathinfo =0 [...] date.timezone ="Europe / Berlin" [...] 

(使用可能なすべてのタイムゾーンは、/ usr / share / zoneinfoディレクトリとそのサブディレクトリにあります。)

PHP-FPMをリロードします:

 systemctl restart php7.3-fpm 

nginxでCGIをサポートするには、Fcgiwrapをインストールします。

Fcgiwrapは、複雑なCGIスクリプトでも機能するCGIラッパーであり、各vhostが独自のcgi-binディレクトリを使用できるため、共有ホスティング環境で使用できます。

fcgiwrapパッケージをインストールします:

 apt-get install fcgiwrap 

インストール後、fcgiwrapデーモンはすでに開始されているはずです。そのソケットは/var/run/fcgiwrap.socketです。実行されていない場合は、fservicefcgiwrapスクリプトを使用して開始できます。

それでおしまい!これで、nginx vhostを作成すると、ISPConfigが正しいvhost構成を処理します。

10.1phpMyAdminをインストール

Debian 10以降、PHPMyAdminは.debパッケージとして利用できなくなりました。したがって、ソースからインストールします。

PHPMyadminのフォルダを作成します:

 mkdir / usr / share / phpmyadmin 
mkdir / etc / phpmyadmin
mkdir -p / var / lib / phpmyadmin / tmp
chown -R www-data:www-data / var /lib/phpmyadmin
touch /etc/phpmyadmin/htpasswd.setup

/ tmpディレクトリに移動し、PHPMyAdminソースをダウンロードします。

 cd / tmp 
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

ダウンロードしたアーカイブファイルを解凍し、ファイルを/ usr / share / phpmyadminフォルダーに移動して、/tmpディレクトリをクリーンアップします。

 tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz 
mv phpMyAdmin-4.9.0.1-all-languages / * / usr / share / phpmyadmin /
rmphpMyAdmin-4.9。 0.1-all-languages.tar.gz
rm -rf phpMyAdmin-4.9.0.1-all-languages

提供されたサンプルファイルに基づいて、PHPMyaAdminの新しい構成ファイルを作成します。

 cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php 

nanoエディターで構成ファイルを開きます:

 nano /usr/share/phpmyadmin/config.inc.php 

安全なパスワード(blowfish secret)を設定します。このパスワードは32文字の長さである必要があります:

 $ cfg ['blowfish_secret'] ='bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; / * COOKIE A​​UTHの場合は、これを入力する必要があります。 * / 

私の例のフグの秘密を使用しないでください、あなた自身のものを設定してください!

次に、PHPMyAdminが一時ファイルを保存するために使用するディレクトリを設定する行を追加します。

 $ cfg ['TempDir'] ='/ var / lib / phpmyadmin / tmp'; 

次のステップでは、phpMyadmin構成ストア(データベース)を構成します。

rootユーザーとしてMariaDBにログインします:

 mysql -u root -p 

MariaDBシェルで、PHPMyAdmin用の新しいデータベースを作成します。

 MariaDB [(none)]> CREATE DATABASE phpmyadmin; 

次に、新しいユーザーを作成します:

 MariaDB [(none)]> CREATE USER'pma' @'localhost' IDENTIFIED BY'mypassword'; 

mypasswordという単語を置き換えます 上記および下記のコマンドで選択した安全なパスワードを使用して、両方の時間で同じパスワードを使用します。次に、ユーザーにこのデータベースへのアクセスを許可し、データベースのアクセス許可を再読み込みします。

 MariaDB [(none)]>phpmyadmin。*のすべての特権を付与します。'pma'@'localhost'に'mypassword'で識別されます。 /> MariaDB [(なし)]>終了

最後に、SQLテーブルをデータベースにロードします。

 mysql -u root -p phpmyadmin  

リクエストに応じてMariaDBルートパスワードを入力します。

ここで行う必要があるのは、構成ファイルにphpmyadminユーザーの詳細を設定することだけです。 nanoエディターでファイルを再度開きます:

 nano /usr/share/phpmyadmin/config.inc.php 

下の行が表示されるまで下にスクロールして編集します:

/*ストレージでの操作に使用されるユーザー*/
$ cfg ['Servers'] [$ i] ['controlhost'] ='localhost';
$ cfg ['Servers'] [ $ i] ['controlport'] ='';
$ cfg ['Servers'] [$ i] ['controluser'] ='pma';
$ cfg ['Servers'] [$ i] ['controlpass'] ='mypassword';

/*ストレージデータベースとテーブル*/
$ cfg ['Servers'] [$ i] ['pmadb'] =' phpmyadmin';
$ cfg ['Servers'] [$ i] ['bookmarktable'] ='pma__bookmark';
$ cfg ['Servers'] [$ i] ['relation'] =' pma__relation';
$ cfg ['Servers'] [$ i] ['table_info'] ='pma__table_info';
$ cfg ['Servers'] [$ i] ['table_coords'] =' pma__table_coords';
$ cfg ['Servers'] [$ i] ['pdf_pages'] ='pma__pdf_pages';
$ cfg ['Servers'] [$ i] ['column_info'] =' pma__column_info';
$ cfg ['Servers'] [$ i] ['history'] ='pma__history';
$ cfg ['Servers'] [$ i] ['table_uiprefs'] =' pma__table_uiprefs';
$ cfg ['Servers'] [$ i] ['tracking'] ='pma__tracking';
$ cfg ['Servers'] [$ i] ['userconfig'] =' pma__userconfig';
$ cfg ['Servers'] [$ i] ['recent'] ='pma__recent';
$ cfg ['Servers'] [$ i] ['favorite'] ='pma__favorite';
$ cfg ['Servers'] [$ i] ['users'] ='pma__users';
$ cfg ['Servers'] [$ i] ['usergroups'] ='pma__usergroups';
$ cfg ['Servers'] [$ i] ['navigationhiding'] ='pma__navigationhiding';
$ cfg ['Servers'] [$ i] ['savedsearches'] ='pma__savedsearches';
$ cfg ['Servers'] [$ i] ['central_columns'] ='pma__central_columns';
$ cfg ['Servers'] [$ i] ['designer_settings'] ='pma__designer_settings';
$ cfg ['Servers'] [$ i] ['export_templates'] ='pma__export_templates';

編集した線を赤でマークしました。 mypasswordを置き換えます phpmyadminユーザー用に選択したパスワードを使用します。 //行の前も削除されていることに注意してください!

ISPConfig 3.2をインストールした後、次のようにphpMyAdminにアクセスできます。

nginxのポート8081のISPConfigアプリvhostにはphpMyAdmin構成が付属しているため、http://server1.example.com:8081/phpmyadminまたはhttp://server1.example.com:8081/phpMyAdminを使用してphpMyAdminにアクセスできます。

Webサイトから使用できる/phpmyadminまたは/phpMyAdminエイリアスを使用する場合、nginxにはグローバルエイリアス(つまり、すべてのvhostに定義できるエイリアス)がないため、これはApacheよりも少し複雑です。したがって、それぞれに対してこれらのエイリアスを定義する必要があります phpMyAdminにアクセスするvhost。

これを行うには、後でISPConfigのWebサイトの[オプション]タブにある[nginxディレクティブ]フィールドに以下を貼り付けます。

 location / phpmyadmin {root / usr / share /; index index.php index.html index.htm;場所〜^ / phpmyadmin /(。+ \。php)$ {try_files $ uri =404;ルート/usr/ share /; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ request_filename; / 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; }場所〜* ^ / phpmyadmin /(。+ \。(jpg | jpeg | gif | css | png | js | ico | html | xml | txt))$ {root / usr / share /; }} location / phpMyAdmin {rewrite ^ / * / phpmyadmin last; } 

http sを使用する場合 vhostのhttpの代わりに、fastcgi_paramHTTPSという行を追加する必要があります。次のようにphpMyAdmin構成に追加します:

 location / phpmyadmin {root / usr / share /; index index.php index.html index.htm;場所〜^ / phpmyadmin /(。+ \。php)$ {try_files $ uri =404;ルート/usr/ share /; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; fastcgi_paramHTTPSオン; #<-この行を追加fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ request_filename; / 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; }場所〜* ^ / phpmyadmin /(。+ \。(jpg | jpeg | gif | css | png | js | ico | html | xml | txt))$ {root / usr / share /; }} location / phpMyAdmin {rewrite ^ / * / phpmyadmin last; } 

vhostにhttpとhttpsの両方を使用する場合は、$https変数を使用できます。もう一度nginxDirectivesフィールドに移動し、fastcgi_paramHTTPSの代わりに;行fastcgi_paramHTTPS$httpsを追加します。 httpリクエストとhttpsリクエストの両方にphpMyAdminを使用できるようにします。

 location / phpmyadmin {root / usr / share /; index index.php index.html index.htm;場所〜^ / phpmyadmin /(。+ \。php)$ {try_files $ uri =404;ルート/usr/ share /; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; fastcgi_param HTTPS $ https; #<-この行を追加fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ request_filename; / 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; }場所〜* ^ / phpmyadmin /(。+ \。(jpg | jpeg | gif | css | png | js | ico | html | xml | txt))$ {root / usr / share /; }} location / phpMyAdmin {rewrite ^ / * / phpmyadmin last; } 

11Let'sEncryptをインストール

ISPConfigは、Let'sEncryptクライアントとしてacme.shを使用しています。次のコマンドを使用してacme.shをインストールします。

 curl https://get.acme.sh | sh -s 

12Mailmanをインストール

ISPConfigを使用すると、Mailmanメーリングリストを管理(作成/変更/削除)できます。この機能を利用する場合は、次のようにMailmanをインストールします。

 apt-get install mailman 

少なくとも1つの言語を選択してください。例:

サポートする言語:<-en(英語)
サイトリストがありません<-Ok

Mailmanを開始する前に、mailmanという最初のメーリングリストを作成する必要があります。

 newlist mailman 

[メール保護]:〜#newlist mailman
リストを実行している人のメールアドレスを入力します:<-admin email address、e.g. [メール保護]
最初のメールマンパスワード:<-メールマンリストの管理者パスワード
メールリストの作成を完了するには、/ etc / aliases(または
同等の)ファイルを編集する必要があります。次の行を追加し、場合によっては
`newaliases'プログラムを実行します:

## mailman mailing list
mailman:" | / var / lib / mailman / mail / mailman post mailman "
mailman-admin:" | / var / lib / mailman / mail / mailman admin mailman "
mailman-bounces:" | / var / lib / mailman / mail / mailman bounces mailman "
mailman-confirm: "| / var / lib / mailman / mail / mailman confirm mailman"
mailman-join: "| / var / lib / mailman / mail / mailman join mailman"
mailman- Leave: "| / var / lib / mailman / mail / mailman Leave mailman"
mailman-owner: "| / var / lib / mailman / mail / mailman owner mailman"
mailman-request: "| / var / lib / mailman / mail / mailman request mailman "
mailman-subscribe:" | / var / lib / mailman / mail / mailman subscribe mailman "
mailman-unsub scribe: "| / var / lib / mailman / mail / mailman unsubscribe mailman"

Enterキーを押して、メールマンの所有者に通知します... <-ENTER

[email protected] :〜#

後で/etc/aliasesを開きます...

 nano / etc / aliases 

...そして次の行を追加します:

 [...] ## mailman mailing listmailman: "| / var / lib / mailman / mail / mailman post mailman" mailman-admin: "| / var / lib / mailman / mail / mailman admin mailman" mailman-バウンス: "| / var / lib / mailman / mail /mailmanバウンスmailman"mailman-confirm: "| / var / lib / mailman / mail /mailman確認mailman"mailman-join: "| / var / lib / mailman / mail / mailman join mailman "mailman-leave:" | / var / lib / mailman / mail / mailman Leave mailman "mailman-owner:" | / var / lib / mailman / mail / mailman owner mailman "mailman-request:" | / var / lib / mailman / mail / mailman request mailman "mailman-subscribe:" | / var / lib / mailman / mail / mailman subscribe mailman "mailman-unsubscribe:" | / var / lib / mailman / mail / mailman unsubscribe mailman " 

実行

 newaliases 

その後、Postfixを再起動します:

 systemctl restart postfix 

次に、Mailmanデーモンを起動します:

 systemctl restart mailman 

ISPConfig 3をインストールした後、次のようにMailmanにアクセスできます。

nginxのポート8081のISPConfigアプリvhostにはMailman構成が付属しているため、http://server1.example.com:8081 / cgi-bin / mailman / admin/またはhttp://server1.exampleを使用できます。 .com:8081 / cgi-bin / mailman / listinfo/でMailmanにアクセスします。

WebサイトからMailmanを使用する場合、nginxにはグローバルエイリアス(つまり、すべてのvhostに定義できるエイリアス)がないため、これはApacheよりも少し複雑です。したがって、それぞれに対してこれらのエイリアスを定義する必要があります Mailmanにアクセスするvhost。

これを行うには、ISPConfigのWebサイトの[オプション]タブにあるnginxディレクティブフィールドに以下を貼り付けます。

場所/cgi-bin/mailman{ルート/usr/ lib /; fastcgi_split_path_info(^ / cgi-bin / mailman / [^ /] *)(。*)$; / etc / nginx/fastcgi_paramsをインクルードします。 fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_param PATH_INFO $ fastcgi_path_info; fastcgi_param PATH_TRANSLATED $ document_root $ fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; }場所/images/mailman{エイリアス/usr/ share / images / mailman; }場所/pipermail{エイリアス/var/ lib / mailman / archives / public;自動インデックスオン; } 

これにより、vhostのエイリアス/ cgi-bin / mailman /が定義されます。つまり、http:// / cgi-bin / mailman / admin / にあるリストのMailman管理インターフェースにアクセスでき、メーリングリストのユーザー向けのWebページは、http:// / cgi-bin / mailman / listinfo/にあります。

http:// / pipermailの下に、メーリングリストのアーカイブがあります。

13PureFTPdとクォータをインストールする

PureFTPdとquotaは、次のコマンドでインストールできます:

 apt-get install pure-ftpd-common pure-ftpd-mysqlquotaquotatool 

ファイル/etc/ default / pure-ftpd-common ...

を編集します
 nano / etc / default / pure-ftpd-common 

...そして、開始モードがスタンドアロンに設定されていることを確認し、VIRTUALCHROOT =trueを設定します:

 [...]STANDALONE_OR_INETD=スタンドアロン[...]VIRTUALCHROOT=true [...] 

次に、FTPおよびTLSセッションを許可するようにPureFTPdを構成します。 FTPは、すべてのパスワードとすべてのデータがクリアテキストで転送されるため、非常に安全でないプロトコルです。 TLSを使用することで、通信全体を暗号化できるため、FTPの安全性が大幅に向上します。

FTPおよびTLSセッションを許可する場合は、

を実行します。
 echo 1> / etc / pure-ftpd / conf / TLS 

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」)。
州名または州名(フルネーム)[一部の州]:<-州を入力しますまたは州名。
地域名(例:市)[]:<-市区町村を入力してください。
組織名(例:会社)[Internet Widgits Pty Ltd]:<-組織名を入力してください(例:会社名)
組織単位名(例:セクション)[]:<-組織単位名(例:「IT部門」)を入力します。
一般名(例:あなたの名前)[]:<-システムの完全修飾ドメイン名を入力します(例: "server1.example.com")。
メールアドレス[]:<-メールアドレスを入力します。

SSL証明書の権限を変更します:

 chmod 600 /etc/ssl/private/pure-ftpd.pem 

次に、PureFTPdを再起動します:

 systemctl restart pure-ftpd-mysql 

/ etc/fstabを編集します。私の場合は次のようになります(マウントポイントのあるパーティションに、usrjquota =quote.user、grpjquota =quote.group、jqfmt =vfsv0を追加しました/):

 nano / etc / fstab 
#/ etc / fstab:静的ファイルシステム情報。

#'blkid'を使用して、
#デバイスのユニバーサル一意識別子を出力します。これは、ディスクが追加および削除された場合でも機能するデバイスに名前を付けるためのより堅牢な方法として、UUID=とともに使用できます。
# fstab(5)を参照してください。

#<ファイルシステム><マウントポイント><タイプ><オプション><ダンプ><パス>
#/インストール中に/ dev/sda1にありました
UUID =45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors =remount-ro、usrjquota =quote.user、grpjquota =quote.group、jqfmt =vfsv0 0 1
#スワップは/devにありましたインストール中の/sda5
UUID =8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0
/ dev / sr0 / media / cdrom0 udf、iso9660 user、noauto 0 0

クォータを有効にするには、次のコマンドを実行します。

 mount -o remount / 
 quotecheck -avugm 
quoteon -avug

14BINDDNSサーバーのインストール

BINDは次のようにインストールできます:

 apt-get install bind9 dnsutils 

サーバーが仮想マシンの場合は、DNSSEC署名のエントロピーを高くするために、havegedデーモンをインストールすることを強くお勧めします。非仮想サーバーにもhagedをインストールできますが、問題はありません。

 apt-get -y install haveged 
systemctl enable haveged
systemctl start haveged

そのトピックの説明はここにあります。

15 Webalizer、AWStats、GoAccessをインストールします

WebalizerとAWStatsは次のようにインストールできます:

 apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perl 

その後、/ etc / cron.d/awstatsを開きます...

 nano /etc/cron.d/awstats 

...そしてそのファイルのすべてをコメントアウトします:

#MAILTO =root#* / 10 * * * * www-data [-x /usr/share/awstats/tools/update.sh] &&/usr/share/awstats/tools/update.sh#静的な生成レポート:#10 03 * * * www-data [-x /usr/share/awstats/tools/buildstatic.sh] &&/usr/share/awstats/tools/buildstatic.sh 

GoAccessリポジトリから直接最新のGoAccessバージョンをインストールする:

 echo "deb https://deb.goaccess.io/ $(lsb_release -cs)main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list 
wget -O-https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add-
apt-get update
apt-get install goaccess

16Jailkitのインストール

Jailkitは、SSHユーザーをchrootする場合にのみ必要です。次のようにインストールできます(重要:JailkitはISPConfigの前にインストールする必要があります-後でインストールすることはできません!):

 apt-get install build-essential autoconf automake libtool flex bison debhelper binutils 
 cd / tmp 
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
tar xvfz jailkit-2.20.tar.gz
cd jailkit- 2.20
echo 5> debian / compat
./debian/rules binary

これで、次のようにJailkit.debパッケージをインストールできます。

 cd .. 
dpkg -i jailkit_2.20-1_*。deb
rm -rf jailkit-2.20 *

17Fail2banとUFWファイアウォールをインストールする

これはオプションですが、ISPConfigモニターがログを表示しようとするため、推奨されます:

 apt-get install fail2ban 

fail2banでPureFTPdとDovecotを監視するには、ファイル/etc/fail2ban/jail.local:

を作成します。
 nano /etc/fail2ban/jail.local 
 [pure-ftpd] 
enabled =true
port =ftp
filter =pure-ftpd
logpath =/ var / log / syslog
maxretry =3

[dovecot]
enabled =true
filter =dovecot
logpath =/var/log/mail.log
maxretry =5

[postfix-sasl]
enabled =true
port =smtp
filter =postfix [mode =auth]
logpath =/var/log/mail.log
maxretry =3

その後、fail2banを再起動します:

 systemctl restart fail2ban 

UFWファイアウォールをインストールするには、次のaptコマンドを実行します:

 apt-get install ufw 

18RoundCubeをインストール

次のコマンドでRoundCubeをインストールします:

 apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins 

インストーラーは次の質問をします:

 dbconfig.commonを使用してroundcube用にデータベースを構成しますか? <-はい
roundcubeのMySQLアプリケーションパスワード:<-Enterキーを押します
データベース管理ユーザーのパスワード:<-ここにMySQLルートパスワードを入力します。

次に、RoundCube /etc/roundcube/config.inc.phpファイルを編集し、いくつかの設定を調整します。

 nano /etc/roundcube/config.inc.php 

default_hostをlocalhostおよびsmtp_serverに設定します。

 $ config ['default_host'] ='localhost'; 
$ config ['smtp_server'] ='localhost';
$ config ['smtp_port'] =25;

ISPConfigには、squirrelmail用のnginxアプリの仮想ホストにいくつかの構成があります。これはroundcubeでも機能します。次のコマンドでアクティブ化します:

 ln -s / usr / share / roundcube / usr / share / squirrelmail 

http://192.168.0.100:8081/webmail
http://server1.example.com:8081/webmail(ISPConfigをインストールした後、次の章を参照してください)

19ISPConfig3をインストール

ISPConfigのインストールを開始する前に、Apacheが停止していることを確認してください(インストールされている場合は、インストールされているパッケージの一部が、知らないうちに依存関係としてApacheをインストールしている可能性があります)。 Apache2がすでにシステムにインストールされている場合は、今すぐ停止してください...

 systemctl stop apache2 

...そしてApacheのシステム起動リンクを削除します:

 update-rc.d -f apache2 remove 

nginxが実行されていることを確認してください:

 systemctl start nginx 

(Apacheとnginxの両方がインストールされている場合、インストーラーはどちらを使用するかを尋ねます:Apacheとnginxが検出されました。ISPConfigに使用するサーバーを選択してください:(apache、nginx)[apache]:

nginxと入力します。 Apacheまたはnginxのみがインストールされている場合、これはインストーラーによって自動的に検出され、質問はありません。)

最新のリリースバージョンからISPConfig3.2をインストールするには、次のようにします。

 cd / tmp 
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install / install /

次のステップは実行することです

 php -q install.php 

これにより、ISPConfig3インストーラーが起動します。インストーラーは、Postfix、Nginx、Dovecotなどのすべてのサービスを構成します。

#php -q install.php 
 
------------------------------------------- -------------------------------------
_____ ___________ _____ __ _ ____
| _ _ / ___ | ___ \ / __ \ / _(_)/ __ \
| | \`-。| | _ / / | / \ / ___ _ __ | | _ _ __ _ _ / /
| | `-。 \ __ / | | / _ \ | '_ \ | _ | | / _` | | _ |
_ | | _ / \ __ / / | | \ __ / \(_)| | | | | | | (_ | | ___ \ \
\ ___ / \ ____ / \ _ | \ ____ / \ ___ / | _ | | _ | _ | | _ | \ __、| \ ____ /
__ / |
| ___ /
-------------------------------------- ------------------------------------------
 
>>初期構成
オペレーティングシステム:Debian 10.0(Buster)または互換性
以下は、プライマリ構成に関するいくつかの質問ですので、注意してください。
デフォルト値は[括弧]内にあり、で受け入れることができます。
「quit」をタップします(引用符なし)インストーラーを停止します。
 
言語を選択(en、de)[en]:<-Enterキーを押します
インストールモード(標準、エキスパート)[標準]:<-Enterキーを押します
サーバーの完全修飾ホスト名(FQDN)、例:server1.domain.tld [server1.canomi.com]:<-Enterキーを押します
 MySQLサーバーのホスト名[localhost]:<-Enterキーを押します
 MySQLサーバーポート[3306]:<-Enterキーを押します
 MySQL rootユーザー名[root]:<-Enterキーを押します
 MySQLルートパスワード[]:<-MySQLルートパスワードを入力してください
 [dbispconfig]を作成するMySQLデータベース:<-Enterキーを押します
 MySQL文字セット[utf8]:<-Enterキーを押します
Apacheとnginxが検出されました。 ISPConfigに使用するサーバーを選択します:(apache、nginx)[apache]:<-nginx 

Postgreyの構成
Postfixの構成
4096ビットのRSA秘密鍵の生成
................................................。 ...................... ++
......................。 .................................................。 .................................................。 .............. ++
'smtpd.key'に新しい秘密鍵を書き込む
-----
これから証明書リクエストに組み込まれる情報を入力します。
入力しようとしているのは、識別名またはDNと呼ばれるものです。
フィールドはかなりありますが、そのままにしておくことができます。一部の空白
一部のフィールドにはデフォルト値があります。
「。」と入力すると、フィールドは空白のままになります。
-----
国名( 2文字のコード)[AU]:<-2文字の国コードを入力
州または県の名前(フルネーム)[一部の州]:<-州の名前を入力
地域名(例:都市)[]:<-都市を入力
組織名(例:会社)[Internet Widgits Pty Ltd]:<-会社名を入力するか、Enterキーを押します
組織単位名(例: 、セクション)[]:<-Enterキーを押します
一般名(例:サーバーFQDNまたはあなたの名前)[]:<-サーバーのホスト名を入力します。私の場合はserver1.example.com
メールアドレス[]:<-Enterキーを押します
Mailmanの設定
Dovecotの構成
Spamassassinの構成
Amavisdの構成
Getmailの構成
BINDの構成
Jailkitの構成
Pureftpdの構成
Nginxの構成
vloggerの構成
[INFO]サービスMetronomeXMPPサーバーが検出されませんでした
UFWファイアウォールの構成
Fail2banの構成
[INFO]サービスOpenVZが検出されません
Appsvhostの構成
ISPConfigのインストール
ISPConfigポート[8080]:
管理者パスワード[admin]:<-ここに目的のISPConfig管理者ユーザーパスワードを入力します
 ISPConfig Webインターフェイス(y、n)への安全な(SSL)接続が必要ですか[y]:<-Enterキーを押します
 RSA秘密鍵の生成、4096ビット長のモジュラス
....................... ++
..... .................................................。 .................................................。 ....................... ++
eは65537(0x10001)
あなたは次のような情報を入力するように求められようとしています
証明書リクエストに組み込まれます。
入力しようとしているのは、識別名またはDNと呼ばれるものです。
かなりの数のフィールドがありますが、空白のままにすることができます
一部のフィールドにはデフォルト値があります。
「。」と入力すると、フィールドは空白のままになります。
-----
国名(2文字のコード) [AU]:<-2文字の国コードを入力してください
州名または州名(フルネーム)[一部の州]:<-州の名前を入力してください
地域名(例:市区町村) []:<-都市を入力してください
組織名(例:会社)[Internet Widgits Pty Ltd]:<-会社名を入力するか、Enterキーを押してください
組織単位名(例:セクション)[] :<-Enterキーを押します
一般名(例:サーバーFQDNまたはあなたの名前)[]:<-サーバーのホスト名を入力します。私の場合はserver1.example.com
メールアドレス[]:<-Enterキーを押します
証明書リクエストとともに送信される次の「追加」属性を入力してください
チャレンジパスワード[]:<-Enterキーを押します
オプションの会社名[]:<- -Enterキーを押します
RSAキーを書き込みます
 
DBServerの構成
ISPConfigcrontabのインストール
root用のcrontabなし
getmail用のcrontabなし
IPアドレスの検出
サービスの再起動...
インストールが完了しました。

インストーラーは基礎となるすべてのサービスを自動的に構成するため、手動で構成する必要はありません。

その後、http(s)://server1.example.com:8080 /またはhttp(s)://192.168.1.100:8080 /でISPConfig3にアクセスできます(httpまたはhttpsは、インストール時に選択したものによって異なります)。ユーザー名adminとパスワードadminでログインします(最初のログイン後にデフォルトのパスワードを変更する必要があります):

最後に、RoundCubeインストールのいくつかの権限を修正します。

 chown root:ispapps /etc/roundcube/debian-db.phpchmod 640 /etc/roundcube/debian-db.phpchown root:ispapps /etc/roundcube/config.inc.phpchmod 640 /etc/roundcube/config.inc .phpchown -R ispapps:adm / var / log / roundcubechmod -R 750 / var / log / roundcubechown -R ispapps:ispapps / var / lib / roundcube / tempchmod -R 750 / var / lib / roundcube / temp 

これで、システムを使用する準備が整いました。

RoundCube WebメールをISPConfigと統合するためのプラグインがいくつかあります。ここで、ISPConfigRoundCubeプラグインのインストール手順を確認してください。

20.1ISPConfig3マニュアル

ISPConfig 3の使用方法を学ぶために、ISPConfig3マニュアルをダウンロードすることを強くお勧めします。

300ページ以上で、ISPConfig(管理者、再販業者、クライアント)の背後にある概念をカバーし、ISPConfig 3をインストールおよび更新する方法を説明し、有効な入力の例とともにISPConfigのすべてのフォームとフォームフィールドのリファレンスを含み、チュートリアルを提供しますISPConfig 3の最も一般的なタスクについても説明します。また、サーバーをより安全にする方法を示し、最後にトラブルシューティングのセクションがあります。

21このチュートリアルの仮想マシンイメージのダウンロード

このチュートリアルは、VMWareおよびVirtualboxと互換性のあるovf/ova形式の仮想マシンイメージをすぐに使用できる状態で利用できます。仮想マシンイメージは、次のログイン詳細を使用します:

SSH/シェルログイン

ユーザー名:管理者
パスワード:howtoforge

ユーザー名:root
パスワード:howtoforge

ISPConfigログイン

ユーザー名:admin
パスワード:howtoforge

MySQLログイン

ユーザー名:root
パスワード:howtoforge

VMのIPは192.168.0.100で、ファイル/ etc / network/interfacesで変更できます。仮想マシンを保護するために、上記のすべてのパスワードを変更してください。

  • Debian:http://www.debian.org/
  • ISPConfig:http://www.ispconfig.org/

Debian
  1. 完璧なサーバー-Ubuntu14.10(nginx、BIND、Dovecot、ISPConfig 3)

  2. 完璧なサーバー-OpenSUSE12.3x86_64(nginx、Dovecot、ISPConfig 3)

  3. 完璧なサーバー-Ubuntu15.04(nginx、BIND、Dovecot、ISPConfig 3)

  1. 完璧なサーバー-Ubuntu12.04LTS(nginx、BIND、Dovecot、ISPConfig 3)

  2. 完璧なサーバー-Ubuntu12.10(nginx、BIND、Dovecot、ISPConfig 3)

  3. 完璧なサーバー-Ubuntu13.04(nginx、BIND、Dovecot、ISPConfig 3)

  1. 完璧なサーバー-Debian8Jessie(Apache2、BIND、Dovecot、ISPConfig 3)

  2. 完璧なサーバー-Debian8.4Jessie(Apache2、BIND、Dovecot、ISPConfig 3.1)

  3. 完璧なサーバー-Debian8.6(nginx、BIND、Dovecot、ISPConfig 3.1)