「理想的な」クラスター。 パート2.2:アクセスしやすくスケーラブルなWebサーバー、ビジネスを守るための最高のテクノロジー



「理想的な」クラスターに関する一連の記事の続きとして、信頼性が高く、生産性が高く、管理しやすいWebシステムを作成するためのレシピを共有したいと思います。



サイトおよびWebシステムの信頼性と高速性を確保するために、当社では市場で利用可能な技術的手段の調査を実施しました。 私たちはシンプルな目標に導かれました:システムのスケーラビリティと高いパフォーマンスを同時に達成すること。

実際、クラスターはゼロから構築されました。 フロントエンドバックエンドアーキテクチャがありました。 データベースはMariaDB Galeraに送られ、すべてのサイトは統合されたWebノードに移動しました。

長時間の作業、紛争、議論の過程で、 アクロニスが喜んで共有できる既製のソリューションが生まれました。 私たちは助けるために存在します。



「理想的な」クラスターに関する他の出版物


次に、いくつかの重要な側面について説明します。




この記事が他の何百もの記事とどう違うのかと尋ねるかもしれません。




コンセプト:



app01.localを除くすべてのサーバーで、sshを含むすべての未使用のサービスが削除され、それらの間の相互作用はグレーのプライベートネットワークを介して行われます。 サイトの運用に必要なパブリックネットワークに対して開かれているポート(80、443など)のみ

Proxmoxの既知の問題



作成されたコンテナの自動ロードを有効にすることを忘れないでください



vmbr1ブリッジのネットワークを作成すると、Proxmoxは仮想名eth0を付けるため、作成したネットワークを削除して、すべてを正しくやり直す必要があります



コンテナを入力するには、コンテナを起動し、ターミナルでコマンドvzctl enter container_numberを入力する必要があります

Proxmoxに関する記事(冒頭のリンク)で、公式のパブリックネットワークのファイアウォールのルールが記述されたファイルを使用すると述べましたが、これは理想的には私たち以外には知られるべきではありません。

nano /etc/iptables.up.rules 


 *nat :PREROUTING ACCEPT [2164:136969] :POSTROUTING ACCEPT [58:3659] :OUTPUT ACCEPT [0:0] # Nat -A POSTROUTING -o vmbr0 -j MASQUERADE # ISPConfig Web Panel -A PREROUTING -d *.*.*182/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.8.3:8080 -A PREROUTING -d *.*.*.182/32 -p tcp -m tcp --dport 8081 -j DNAT --to-destination 192.168.8.3:8081 # app01. ssh server -A PREROUTING -d *.*.*.182/32 -p tcp -m tcp --dport 22 -j DNAT --to-destination 192.168.8.4:22 COMMIT 


#ハイパーバイザーのSSHポートを2222に変更します

 nano /etc/ssh/sshd_config 


 Port 2222 


すべてのコンテナの一般的なプリセット



#ISPConfigエージェントがあるすべてのコンテナで、これらの行を必ずhostsファイルに追加してください。

 nano /etc/hosts 


 192.168.8.1 gw.local 192.168.8.2 front01.local 192.168.8.3 isp.local 192.168.8.4 app01.local 192.168.8.5 db01.local 


#タイムゾーンを

 ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime 


 yum install wget nano wget ntpdate -y 


#これらのリポジトリはあるべきです。なぜなら、ここでは基本リポジトリにない多くのパッケージを見つけるからです。

 wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm rm *.rpm -f 


#このリポジトリは便利ですが、デフォルトでオフにします
 rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt cd /tmp wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm && rpm -ivh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm 


#オフにします。--enablerepo = rpmforgeを使用します

 sed -i 's/enabled = 1/enabled = 0/g' /etc/yum.repos.d/rpmforge.repo 


#しかし、これはWebシステムの真珠であり、管理者が仕事で必要とするものが本当にたくさんあります。 しなければならない

 wget -q -O - http://www.atomicorp.com/installers/atomic | sh 


#便利なソフトウェアを入れる

 yum install nano mc screen sudo nscd htop ntp zip unzip pigz iotop sysstat lsof strace atop multitail -y yum --enablerepo=rpmforge install htop -y 


#このコンテナの不要なサービスを削除する

 yum remove -y sendmail httpd sshd samba bind openssh -y 


#システムの更新

 yum update -y 


#mysqlを削除

 yum remove mysql* mysql-* 


#サービス目的のISPConfigにmariadbをインストールする

 yum install mariadb-server mariadb-devel mariadb-client -y 


#cronをインストール

 yum install -y cronie cronie-anacron crontabs sysstat -y 


#cronを起動に追加して実行

  /etc/init.d/crond start && chkconfig crond on 


#mariadbをカスタマイズする

 nano /etc/my.cnf 


 [mysqld] skip-name-resolve default_storage_engine=InnoDB innodb_file_per_table = 1 # network connect_timeout = 60 wait_timeout = 28800 max_connections = 200 max_allowed_packet = 512M max_connect_errors = 1000 # performance query_cache_size = 32M tmp_table_size = 32M max_heap_table_size = 32M thread_cache_size = 16 table_open_cache = 600 innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT transaction-isolation = READ-COMMITTED log_error = /var/log/mysql/mysql-error.log #slow_query_log_file = /var/log/mysql/mysql-slow.log 


#mariadbをスタートアップに追加

 chkconfig --levels 235 mysqld on && /etc/init.d/mysqld start 


gw.local環境のセットアップ


CentOS 64環境でOpenVZコンテナ(新しいCT)を作成する必要がありますこの仮想マシンは、パブリックおよびプライベートネットワークに対応します。

eth1ネットワーク(他のコンテナーと対話するためのプライベートネットワーク)には、eth0(パブリックプロバイダーネットワーク)およびvmbr1という名前のvmbr0ネットワークインターフェイスが必要です。


この仮想マシンには、128 MBを超えるRAMは必要ありません。



gw.localコンテナ自体にネットワークを設定しましょう

コンテナ内のネットワーク:

 vi /etc/sysconfig/network-scripts/ifcfg-eth0 


 DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=xxx237 NETMASK=255.255.255.0 GATEWAY=xxx1 


 vi /etc/sysconfig/network-scripts/ifcfg-eth1 


 DEVICE=eth1 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.8.1 NETWORK=192.168.8.0 


#現在のiptablesルールを保存

  /etc/init.d/iptables save 


#外部ビジネスアドレスの* natセクションにルールを追加します

 vi /etc/sysconfig/iptables 


 -A PREROUTING -d *.*.*.237/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.8.2:80 -A PREROUTING -d *.*.*.237/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.8.2:443 -A PREROUTING -d *.*.*.237/32 -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.8.5:25 -A PREROUTING -d *.*.*.237/32 -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.8.5:110 -A PREROUTING -d *.*.*.237/32 -p tcp -m tcp --dport 145 -j DNAT --to-destination 192.168.8.5:145 -A PREROUTING -d *.*.*.237/32 -p tcp -m tcp --dport 995 -j DNAT --to-destination 192.168.8.5:995 -A PREROUTING -d *.*.*.237/32 -p tcp -m tcp --dport 465 -j DNAT --to-destination 192.168.8.5:465 -A PREROUTING -d *.*.*.237/32 -p tcp -m tcp --dport 587 -j DNAT --to-destination 192.168.8.5:587 -A PREROUTING -d *.*.*.237/32 -p tcp -m tcp --dport 143 -j DNAT --to-destination 192.168.8.5:143 -A PREROUTING -d *.*.*.237/32 -p tcp -m tcp --dport 993 -j DNAT --to-destination 192.168.8.5:993 -A POSTROUTING -o eth0 -j MASQUERADE 


#トラフィック転送を許可

 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p 


環境front01.localの設定



CentOS 64環境でOpenVZコンテナー(新しいCT)を作成する必要がありますこの仮想マシンは、gw.localから転送されたポート80および443に対応します。 このコンテナにはnginxがインストールされており、app01.localのサイトへのすべてのリクエストをプロキシします
nginxの設定手順自体は、この記事「理想的な」wwwクラスターで詳しく説明されています。 パート1.フロントエンド:CentOSでのNGINX + Keepalived(vrrp)

このコンテナには、プライベートネットワーク( vmbr1192.168.8.2のアドレスがあり、操作には1024 MB以下のRAMが必要です。

これは、ネットワークがコンテナ自体でどのように見えるかです。

 vi /etc/sysconfig/network-scripts/ifcfg-eth1 


 DEVICE=eth1 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.8.2 NETWORK=192.168.8.0 GATEWAY=192.168.8.1 


環境の設定isp。


CentOS 64環境でOpenVZコンテナー(新しいCT)を作成する必要がありますこの仮想マシンは、ISPConfigコントロールパネルを提供します。 記事の冒頭で、パネルはパブリックパブリックアドレスによって提供され、ポート8080および8081で利用できることを示しました。

このコンテナには、プライベートネットワークアドレス( vmbr1192.168.8.3があり、約384 MBのRAMが必要です。



#このコンテナのネットワーク設定:

 /etc/sysconfig/network-scripts/ifcfg-eth1 


 DEVICE=eth1 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.8.3 NETWORK=192.168.8.0 GATEWAY=192.168.8.100 


#ISPConfigパネルのWebサーバーコンポーネントをインストールする

 yum install php-mysql php nginx php-fpm postfix patch -y 


#標準のnginxグリーティングで設定を削除

 rm -f /etc/nginx/conf.d/default.conf rm -f /etc/nginx/conf.d/virtual.conf rm -f /etc/nginx/conf.d/ssl.conf 


#nginxとphp-fpmを追加して、オートロードして実行します

 chkconfig --levels 235 php-fpm on && /etc/init.d/php-fpm start chkconfig --levels 235 nginx on && /etc/init.d/nginx start 


#ISPConfigエージェントがパラメーターについて中央のisp.localデータベースに接続できるようにする

 mysql 


 CREATE USER 'root'@'192.168.8.%' IDENTIFIED BY 'c2HZqsMmiBKa'; GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.8.%' IDENTIFIED BY 'c2HZqsMmiBKa' WITH GRANT OPTION; flush privileges; 


#phpMyAdminをインストール

 yum install phpmyadmin -y 


#phpmyadminでphpMyAdminシンボリックリンクを作成する

 ln -s /usr/share/phpMyAdmin/ /usr/share/phpmyadmin 


 nano /etc/phpMyAdmin/config.inc.php 


 $cfg['blowfish_secret'] = '46a30e4ed1cf83.14522379'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ $cfg['Servers'][$i]['host'] = 'db01.local'; // MySQL hostname or IP address $cfg['Servers'][$i]['port'] = '3306'; // MySQL port - leave blank for default port $cfg['Servers'][$i]['auth_type'] = 'cookie'; // Authentication method (config, http or cookie based)? 


#ISPConfigをインストール

 cd /usr/src/ 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 


#対話型インストールウィザードの質問に答えます
>>初期設定

オペレーティングシステム:Redhatまたは互換性のある、不明なバージョン。

以下は、プライマリ設定に関するいくつかの質問ですので、注意してください。
デフォルト値は[角括弧]で囲まれ、受け入れられます。
「引用」なしで「終了」をタップして、インストーラーを停止します。

言語を選択(en、de)[ en ]:

インストールモード(標準、エキスパート)[標準]: エキスパート

サーバーの完全修飾ホスト名(FQDN)。例:server1.domain.tld [ isp.local ]:

MySQLサーバーのホスト名[ localhost ]:

MySQLルートユーザー名[ root ]:

MySQLルートパスワード[]:

作成するMySQLデータベース[ dbispconfig ]:

MySQL文字セット[ utf8 ]:

次の2つの質問は、内部ISPConfigデータベースのユーザーとパスワードに関するものです。
ユーザー名として「ispconfig」であり、ランダムなパスワードであるデフォルトを受け入れることをお勧めします。
別のパスワードを使用する場合は、パスワードに数字と文字のみを使用してください。

ISPConfig mysqlデータベースのユーザー名[ ispconfig ]:

ISPConfig mysqlデータベースパスワード[ 1850fcffe2fc0b1ca2707c3e27c5eec4 ]:

このサーバーを既存のISPConfigマルチサーバーセットアップ(y、n)[ n ]に参加させます。

Apacheとnginxが検出されました。 ISPConfigに使用するサーバーを選択:(apache、nginx)[apache]: nginx

ISPConfigサーバーレコードをデータベースに追加しています。

メールの構成(y、n)[y]: n

Jailkitの構成(y、n)[y]: n

FTPサーバーの構成(y、n)[y]: y

Pureftpdの構成
DNSサーバーの構成(y、n)[y]: n

ヒント:このサーバーがISPConfigインターフェースを実行する場合は、「Configure nginx Server」オプションで「y」を選択します。

nginxサーバーの構成(y、n)[y]: y

nginxの構成
Apps vhostの構成
ファイアウォールサーバーの構成(y、n)[y]: y

Bastille Firewallの構成
ISPConfig Webインターフェイスのインストール(y、n)[y]: y

ISPConfigのインストール
ISPConfigポート[ 8080 ]:

ISPConfig WebインターフェースのSSLを有効にします(y、n)[y]: y

RSA秘密鍵、4096ビット長のモジュラスの生成
.................................................. .............. ++
.................................................. .................................................. ................... ++
eは65537(0x10001)です
組み込まれる情報の入力を求められます
証明書要求に。
入力しようとしているのは、識別名またはDNと呼ばれるものです。
かなりの数のフィールドがありますが、空白のままにすることができます
一部のフィールドにはデフォルト値がありますが、
「。」を入力すると、フィールドは空白のままになります。
-国名(2文字のコード)[XX]: Ru
州または県の名前(フルネーム)[]: モスクワ
地域名(例:都市)[デフォルトの都市]: モスクワ
組織名(会社など)[Default Company Ltd]: isp.local
組織単位名(セクションなど)[]: IT
共通名(例:自分の名前またはサーバーのホスト名)[]: isp.local
メールアドレス[]:

次の「追加」属性を入力してください
証明書リクエストとともに送信されます
チャレンジパスワード[]:
オプションの会社名[]:
RSAキーを書く
DBServerの構成
ISPConfig crontabのインストール
ルートのcrontabはありません
php-fpmのリロード:[OK]
nginxのリロード:[OK]
インストールが完了しました。



#ISPConfigパネルをサービスパブリックインターフェイスのポート8080に転送しました

 https://__ip:8080/ 




デフォルトのユーザー名とパスワード: admin

このサイトにインストールされているISPConfigのバージョンで既知の問題を確認します。 更新プログラム付きのパッチがある場合は、それらを適用します

 cd /usr/local/ispconfig/server/scripts wget http://www.ispconfig.org/downloads/ispconfig_patch chmod 700 ispconfig_patch chown root:root ispconfig_patch ln -s /usr/local/ispconfig/server/scripts/ispconfig_patch /usr/local/bin/ispconfig_patch 


#これは利用可能な、執筆時点でのパッチのリストです
ISPConfig 3.0.5.3のパッチ

パッチID: 3053_langedit
日付:2013-09-25
説明:このパッチは、言語ファイルエディタのUTF-8エンコーディングの問題を解決します。

パッチID: 3053_langimport
説明:このパッチは、言語ファイルインポーターに厳密な解析ルーチンを追加します。

パッチID: 3053_backupdownload
説明:このパッチは、Webサイトのバックアップのダウンロードと復元に関する問題を修正します。

パッチID: 3053_apsdel​​ete
説明:このパッチは、APSインスタンスを削除する際の問題を修正します。

パッチID: 3053_ftpuser
説明:このパッチにより、FS#3089-FTPユーザーオプション-エラーが修正されます。このドメインに対する権限がありません。

パッチID: 3053_phpversion
説明:このパッチは、クライアントがWebサイトのphpバージョンを変更できない問題を修正します。 クライアントインターフェースに表示される唯一のphp選択オプションは「デフォルト」です。

パッチID: 3053_sysini
説明:このパッチは、FS#3086-マルチサーバー設定でのsys_iniアクセスに関するSQLクエリ警告を修正します。

パッチID: 3053_dashboard
説明:このパッチは、ダッシュボードの表示の問題(クォータテーブルの重複)を修正します。


#phpMyAdminを担当するセクションのコメントを外します

 nano /etc/nginx/sites-enabled/000-ispconfig.vhost 


 location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/lib/php5-fpm/ispconfig.sock; fastcgi_param HTTPS on; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } 


  /etc/init.d/nginx reload 


環境app01.localの設定(apache2 + php-fpm)



CentOS 64環境でOpenVZコンテナ(新しいCT)を作成する必要がありますこの仮想マシンは、phpで書かれたサイトを提供します。 一般に、apache2はnginxよりもはるかに遅く、静的ファイル(グラフィック、スクリプト、スタイルなど)を提供します。また、mod_phpと組み合わせて、着信リクエストの処理に多くのメモリを消費します。 これは、apache2アーキテクチャ自体によるものです。 メモリ消費の問題がphp-fpmを使用して解決できる場合、遅い静的とのみ調整でき、front.localのnginx側のキャッシュでこれを部​​分的に補正できます。
apache2を使用するのは、.htaccessまたはapache2専用のモジュールを使用する必要がある場合にのみ意味があります。
この仮想マシンのsshポートはサービスパブリックアドレスから転送され、ポート80はfront.localからプロキシされます

このコンテナにはプライベートネットワーク( vmbr1192.168.8.4のアドレスがあり、この仮想マシンのRAMに保存する価値はありません。一般的には4〜20 GBになります。

#このコンテナのネットワーク設定:

 vi /etc/sysconfig/network-scripts/ifcfg-eth1 


 DEVICE=eth1 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.8.4 NETWORK=192.168.8.0 GATEWAY=192.168.8.100 


#Webサーバーコンポーネントをインストールする

 yum install mod_rpaf memcached ntp httpd php php-mysql php-mbstring php-mcrypt rpm-build openssl-devel cyrus-sasl-devel pkgconfig zlib-devel pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel mod_ssl php-fpm php-cli php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-magpierss php-snmp php-tidy spawn-fcgi openssl perl-TimeDate httpd-devel ruby ruby-devel webalizer perl-DateTime-Format-HTTP perl-DateTime-Format-Builder perl-TimeDate libevent-devel php-pecl-memcache mod_fcgid subversion git php-soap -y yum install --enablerepo=rpmforge mod_fastcgi mod_suphp -y 


#サービスをスタートアップに追加して開始する

 chkconfig --levels 235 php-fpm on && /etc/init.d/php-fpm start chkconfig --levels 235 httpd on && /etc/init.d/httpd start chkconfig --levels 235 memcached on && /etc/init.d/memcached start 


#PHPモジュールの手動アセンブリの場合、開発者のコ​​ンポーネントをインストールします

 yum groupinstall 'Development Tools' -y 


#php.iniの最小限の変更

 sed -i "s/^error_reporting =.*/error_reporting = E_ALL \& \~E_NOTICE/g" /etc/php.ini sed -i "s/^;cgi.fix_pathinfo =.*/cgi.fix_pathinfo = 1/g" /etc/php.ini sed -i "s/^;date.timezone =.*/date.timezone = Europe\/Moscow/g" /etc/php.ini sed -i "s/^max_execution_time =.*/max_execution_time = 600/g" /etc/php.ini sed -i "s/^max_input_time =.*/max_input_time = 600/g" /etc/php.ini sed -i "s/^memory_limit =.*/memory_limit = 512M/g" /etc/php.ini sed -i "s/^post_max_size =.*/post_max_size = 500M/g" /etc/php.ini sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 2000M/g" /etc/php.ini sed -i "s/^max_file_uploads =.*/max_file_uploads = 200/g" /etc/php.ini sed -i "s/^short_open_tag =.*/short_open_tag = On/g" /etc/php.ini sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 500M/g" /etc/php.ini sed -i "s/;realpath_cache_size =.*/realpath_cache_size = 4096k/g" /etc/php.ini 


#xdebugモジュールをビルドします(コードのデバッグと問題の特定に役立ちます)

 yum install php-devel php-pear pecl install Xdebug 


 nano /etc/php.d/xdebug.ini 


 [xdebug] zend_extension="/usr/lib64/php/modules/xdebug.so" xdebug.remote_enable = 1 


 php -v 


 No log handling enabled - turning on stderr logging Created directory: /var/lib/net-snmp/mib_indexes PHP 5.4.24 (cli) (built: Jan 13 2014 12:36:47) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Retha 


#PHPモジュールのインストール-Zend Guard

 cd /usr/src/ && wget wget http://downloads.zend.com/guard/6.0.0/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz tar xzvf ZendGuardLoader-7* -C /usr/local/ chmod -R 755 /usr/local/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64/ mv /usr/local/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64/ /usr/local/Zend 


 nano /etc/php.d/zend.ini 


 zend_extension=/usr/local/Zend/php-5.4.x/ZendGuardLoader.so 


 php -v 


 PHP 5.4.24 (cli) (built: Jan 13 2014 12:36:47) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans with Zend Guard Loader v3.3, Copyright (c) 1998-2013, by Zend Technologies 


#PHPのオペコードキャッシングモジュールを有効にする-APC

 sed -i "s/^apc.enabled=.*/apc.enabled=1/g" /etc/php.d/apc.ini sed -i "s/^apc.shm_size=.*/apc.shm_size=256M/g" /etc/php.d/apc.ini sed -i "s/;apc.num_files_hint=.*/apc.num_files_hint=20000/g" /etc/php.d/apc.ini sed -i "s/;apc.user_entries_hint=.*/apc.user_entries_hint=20000/g" /etc/php.d/apc.ini sed -i "s/;apc.ttl=.*/apc.ttl=86400/g" /etc/php.d/apc.ini sed -i "s/;apc.user_ttl=.*/apc.user_ttl=7200/g" /etc/php.d/apc.ini sed -i "s/;apc.gc_ttl=.*/apc.gc_ttl=86400/g" /etc/php.d/apc.ini sed -i "s/;apc.cache_by_default=.*/apc.cache_by_default=1/g" /etc/php.d/apc.ini sed -i "s/;apc.max_file_size=.*/apc.max_file_size=10M/g" /etc/php.d/apc.ini 


#suphpモジュールの構成

 mkdir -p /root/backup/etc mv /etc/httpd/conf.d/suphp.conf /root/backup/ && nano /etc/httpd/conf.d/suphp.conf 


 LoadModule suphp_module modules/mod_suphp.so suPHP_Engine on suPHP_ConfigPath /etc/suphp.conf 


 mv /etc/suphp.conf /root/backup/etcsuphp.conf && nano /etc/suphp.conf 


 [global] ;Path to logfile logfile=/var/log/httpd/suphp.log ;Loglevel loglevel=info ;User Apache is running as webserver_user=apache ;Path all scripts have to be in docroot=/ ;Path to chroot() to before executing script ;chroot=/mychroot ; Security options allow_file_group_writeable=true allow_file_others_writeable=false allow_directory_group_writeable=true allow_directory_others_writeable=false ;Check wheter script is within DOCUMENT_ROOT check_vhost_docroot=true ;Send minor error messages to browser errors_to_browser=false ;PATH environment variable env_path=/bin:/usr/bin ;Umask to set, specify in octal notation umask=0077 ; Minimum UID min_uid=100 ; Minimum GID min_gid=100 [handlers] ;Handler for php-scripts x-httpd-suphp="php:/usr/bin/php-cgi" ;Handler for CGI-scripts x-suphp-cgi="execute:!self" 


#mod_rpafを設定します。3番目のアドレスはサーバーのパブリックWebアドレスです

 nano /etc/httpd/conf.d/mod_rpaf.conf 


 <IfModule mod_rpaf.c> RPAF_Enable On RPAF_ProxyIPs 127.0.0.1 192.168.8.2 *.*.*.237 RPAF_Header X-Forwarded-For RPAF_SetHostName On RPAF_SetHTTPS On RPAF_SetPort On </IfModule> 


#FastCgiWrapperをオフにする

 nano /etc/httpd/conf.d/fastcgi.conf 


 sed -i "s/^FastCgiWrapper .*/FastCgiWrapper Off/g" /etc/httpd/conf.d/fastcgi.conf 


#ISPConfigをインストール

 cd /usr/src/ 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 


#対話型インストールウィザードの質問に答えます

>>初期設定

オペレーティングシステム:Redhatまたは互換性のある、不明なバージョン。

以下は、プライマリ設定に関するいくつかの質問ですので、注意してください。
デフォルト値は[角括弧]で囲まれ、受け入れられます。
「引用」なしで「終了」をタップして、インストーラーを停止します。

言語を選択(en、de)[ en ]:

インストールモード(標準、エキスパート)[標準]: エキスパート

サーバーの完全修飾ホスト名(FQDN)。例:server1.domain.tld [ app01.local ]:

MySQLサーバーのホスト名[ localhost ]:

MySQLルートユーザー名[ root ]:

MySQLルートパスワード[]:

作成するMySQLデータベース[ dbispconfig ]:

MySQL文字セット[ utf8 ]:

次の2つの質問は、内部ISPConfigデータベースのユーザーとパスワードに関するものです。
ユーザー名として「ispconfig」であり、ランダムなパスワードであるデフォルトを受け入れることをお勧めします。
別のパスワードを使用する場合は、パスワードに数字と文字のみを使用してください。

ISPConfig mysqlデータベースのユーザー名[ ispconfig ]:

ISPConfig mysqlデータベースパスワード[ 8b8295ae2a50a39a1a00da65df0bee72 ]:

このサーバーを既存のISPConfigマルチサーバーセットアップに参加させます(y、n)[n]: y

MySQLマスターサーバーのホスト名[]: isp.local

MySQLマスターサーバーのルートユーザー名[ root ]:

MySQLマスターサーバーのルートパスワード[]: c2HZqsMmiBKa

MySQLマスターサーバーのデータベース名[ dbispconfig ]:

ISPConfigサーバーレコードをデータベースに追加しています。

メールの構成(y、n)[y]: n

Jailkitの構成(y、n)[y]: n

FTPサーバーの構成(y、n)[y]: y

Pureftpdの構成
pure-ftpdの停止:[OK]
pure-ftpdの起動:[OK]
DNSサーバーの構成(y、n)[y]: n

ヒント:このサーバーがISPConfigインターフェースを実行する場合は、「Apacheサーバーの構成」オプションで「y」を選択します。

Apacheサーバーの構成(y、n)[y]: y
Apacheの構成
Vloggerの構成
Apps vhostの構成
ファイアウォールサーバーの構成(y、n)[y]: y

Bastille Firewallの構成
ISPConfig Webインターフェイスのインストール(y、n)[n]: n

DBServerの構成
ISPConfig crontabのインストール
ルートのcrontabはありません
httpdの停止:[OK]
[2014年1月23日13:46:44] [警告] NameVirtualHost *:80にはVirtualHostsがありません
[木1月23日13:46:44 2014] [警告] NameVirtualHost *:443にはVirtualHostがありません
[2014年1月23日13:46:44] [警告] NameVirtualHost *:80にはVirtualHostsがありません
httpdの開始:[OK]
インストールが完了しました。


環境db01を設定します。



CentOS 64環境でOpenVZコンテナー(新しいCT)を作成する必要があります。サイトのMariadbは、このin vitroマシンに配置されます。
このノードのISPConfigクラスターへの追加についてのみ説明します。 次の記事では、MySQLの最適化に関する質問を残します。

このコンテナには、プライベートネットワーク( vmbr1192.168.8.5のアドレスがあります。データベースサーバーのRAMの量を節約しないでください。この場合は4 GBのRAMとしますが、深刻なタスクの場合、20 GBは小さくなります。

これは、ネットワークがコンテナ自体でどのように見えるかです。

 vi /etc/sysconfig/network-scripts/ifcfg-eth1 


 DEVICE=eth1 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.8.5 NETWORK=192.168.8.0 GATEWAY=192.168.8.100 


#ISPConfigパネルのphpコンポーネントをインストール

 yum install php-mysql php -y 


#スタートアップから削除してapache2をオフにする

 chkconfig httpd off && /etc/init.d/httpd stop 


#ISPConfigをインストール

 cd /usr/src/ 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 


#対話型インストールウィザードの質問に答えます

>>初期設定

オペレーティングシステム:Redhatまたは互換性のある、不明なバージョン。

以下は、プライマリ設定に関するいくつかの質問ですので、注意してください。
デフォルト値は[角括弧]で囲まれ、受け入れられます。
「引用」なしで「終了」をタップして、インストーラーを停止します。

言語の選択(en、de)[en]: en

インストールモード(標準、エキスパート)[標準]: エキスパート

サーバーの完全修飾ホスト名(FQDN)。例:server1.domain.tld [ db01.local ]:

MySQLサーバーのホスト名[ localhost ]:

MySQLルートユーザー名[ root ]:

MySQLルートパスワード[]:

作成するMySQLデータベース[ dbispconfig ]:

MySQL文字セット[ utf8 ]:

次の2つの質問は、内部ISPConfigデータベースのユーザーとパスワードに関するものです。
ユーザー名として「ispconfig」であり、ランダムなパスワードであるデフォルトを受け入れることをお勧めします。
別のパスワードを使用する場合は、パスワードに数字と文字のみを使用してください。

ISPConfig mysqlデータベースのユーザー名[ ispconfig ]:

ISPConfig mysqlデータベースパスワード[ 06cd6c11370b50a83eb0a3d3907a3581 ]:

このサーバーを既存のISPConfigマルチサーバーセットアップに参加させます(y、n)[n]: y

MySQLマスターサーバーのホスト名[]: isp.local

MySQLマスターサーバーのルートユーザー名[ root ]:

MySQLマスターサーバーのルートパスワード[]: c2HZqsMmiBKa

MySQLマスターサーバーのデータベース名[ dbispconfig ]:

ISPConfigサーバーレコードをデータベースに追加しています。

メールの構成(y、n)[y]: n

Jailkitの構成(y、n)[y]: n

FTPサーバーの構成(y、n)[y]: n

DNSサーバーの構成(y、n)[y]: n

ヒント:このサーバーがISPConfigインターフェースを実行する場合は、「Apacheサーバーの構成」オプションで「y」を選択します。

Apacheサーバーの構成(y、n)[y]: n

ファイアウォールサーバーの構成(y、n)[y]: y

Bastille Firewallの構成
ISPConfig Webインターフェイスのインストール(y、n)[n]: n

DBServerの構成
ISPConfig crontabのインストール
ルートのcrontabはありません
httpdの停止:[失敗]
httpdの開始:[OK]
インストールが完了しました。


ISPConfigの概要:


ISPConfig Webパネルでの承認後、スタートページに移動します。



ツール - パスワードと言語言語を変更し、コントロールパネルにアクセスするための強力なパスワードを作成します。

システム - サーバーサービス 、サーバーから不要な役割を削除します。
ISPConfigが単一のノードを別のノードのミラーにすることができるという事実に注意を喚起したいと思います。 つまり サービスとユーザーの構成は、複数のサーバーで同時に同じになります。 サーバーミラーでミラーのノードを選択する必要があります

サーバー構成 - サーバーセクションの各サーバーで、 ログレベルをデバッグに設定します。 これで、ISPConfigがクラスターのノードで実行するすべてのアクションを確認できます

 tail -f -n 1000 /var/log/ispconfig/ispconfig.log 

サーバー構成にはすぐにWebセクションがあり、その中にPermissionsがあります。同じファイルストレージ(ceph、ocfs2など)に複数のWebサーバーミラーがある場合、 更新時にフォルダーパーミッションを設定しLinuxユーザーIDをwebidに接続するチェックボックスをチェックする必要があります 。 これにより、異なるミラー上のguid / uidとユーザーおよびグループ、およびそれらの名前/グループの違いに関する問題を回避できます。 ユーザーのフォルダー構造を変更する場合は、[ Webフォルダーを不変(拡張属性)にする]チェックボックスオフにします。 これを忘れた場合は、 chatrtr -iコマンドが役立ちます。 次の重要なセクション: Rescue 、クラッシュが発生した場合に重要なサービスの自動起動を有効にしますが、再起動しないサービスの再起動を無効にすることを忘れないでください。

テストユーザーを作成しましょう: クライアント - クライアントを 追加しアドレス連絡先ログインパスワードを入力してください (便利なパスワードジェネレーターもあります)。 制限に加えてデフォルトのWebサーバーと許可されたWebサーバーの動作モードを選択します。


php-fpmとmod_phpを同時にサポートするようにapp01.localを構成しました。 顧客のリストに戻り、新しく作成されたものを入力します。


サイト - 新しいウェブサイトを追加


サイト名と必要なphpバックエンドを指定します。

クラスタ構成のISPConfigは、すべての変更を反映するのに時間がかかることに注意してください。



サイトのファイルにアクセスする手段として、 sshを使用します。WindowsではWinSCPを使用すると便利です。 この方法は、従来のFTPよりもはるかに安全です。
アクセスするには、 Shell UserセクションでSSHユーザーを作成する必要があります。
ユーザー名、パスワード、および必要に応じてキーを指定する必要があります。 ISPConfigアカウントのアカウントのプレフィックスがユーザーに追加されることに注意してください。

MySQLを使用するには、 データベースユーザーセクションでユーザーを作成する必要があります。ISPConfigシステムのIDがログインに追加されます。



データベースセクションでサイトの1つにデータベースを作成します。新しいデータベースの名前を指定する必要があります。このデータベースが属するサイトを指定することを忘れないでください。作成したユーザーを選択し、 リモートアクセスボックスをチェックしますアプリケーションサーバーに関連して)。 プレフィックスが名前に追加されることを忘れないでください。



phpMyAdminにアクセスするには、[ データベース]セクションの任意のデータベースの近くにある対応するアイコンをクリックします。



phpMyAdminで自分自身を見つける



ファイナル


サイトが存在するapp01.localは、ポート22のパブリックサービスネットワークで利用できます。 WinSCP , :



, web



index.html index.php

 <?php //   ,   INFO_ALL phpinfo(); //      . // phpinfo(8)    . phpinfo(INFO_MODULES); ?> 


, php-fpm/mod_php





, :

Source: https://habr.com/ru/post/J209934/


All Articles