This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| en:常见问题及解答:如何为astercc系统配置多台php服务器 [2016/11/14 01:48] – created liuxl | en:常见问题及解答:如何为astercc系统配置多台php服务器 [2016/11/18 03:11] (current) – removed solo | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== How to configure multiple PHP servers for the asterCC system ====== | ||
| - | |||
| - | ===== System Details ===== | ||
| - | |||
| - | * CTI(Asterisk)、Nginx:192.168.1.62 | ||
| - | * MySQL:192.168.1.60 | ||
| - | * PHP1:192.168.1.61 | ||
| - | * PHP2:192.168.1.70 | ||
| - | |||
| - | < | ||
| - | |||
| - | 1.Before distributing the system, you need to back up the database on the CTI machine. | ||
| - | < | ||
| - | |||
| - | And then in the new mysql database server (192.168.1.60) on the backup data import. | ||
| - | < | ||
| - | |||
| - | |||
| - | 2.On the MySQL machine, the CTI, PHP1, PHP2 machine database authorization. | ||
| - | In the mysql> under the implementation of the following order: | ||
| - | < | ||
| - | |||
| - | |||
| - | 3.In the CTI, PHP1, PHP2 three machines / | ||
| - | < | ||
| - | [database] | ||
| - | dbtype = mysql | ||
| - | dbhost = 192.168.1.60 | ||
| - | dbname = astercc10 | ||
| - | dbport = 3306 | ||
| - | username = astercc | ||
| - | password = asterccpw | ||
| - | prefix= cc10_ | ||
| - | |||
| - | [statistics] | ||
| - | ; | ||
| - | status = on | ||
| - | dbtype = mysql | ||
| - | dbhost = 192.168.1.60 | ||
| - | dbname = astercc10 | ||
| - | dbport = 3306 | ||
| - | dbuser = astercc | ||
| - | dbpassword = asterccpw | ||
| - | prefix= cc10_ | ||
| - | |||
| - | |||
| - | [system] | ||
| - | ;if Cluster no, | ||
| - | cluster = php | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | |||
| - | |||
| - | 4.In / | ||
| - | |||
| - | class DATABASE_CONFIG { | ||
| - | var $default = array( | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ); | ||
| - | |||
| - | < | ||
| - | |||
| - | |||
| - | 5.Configure the iptables service, the implementation of the machine configuration is complete:service iptables restart | ||
| - | |||
| - | CTI (and Nginx) machines: | ||
| - | < | ||
| - | *filter | ||
| - | :INPUT DROP [32888: | ||
| - | :FORWARD DROP [0:0] | ||
| - | :OUTPUT ACCEPT [38964: | ||
| - | -A INPUT -p udp -m udp --dport 5060 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 4569 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 5036 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 2727 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 137:138 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 123 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 8081 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 139 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 389 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 445 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT | ||
| - | -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT | ||
| - | -A INPUT -s 127.0.0.1/ | ||
| - | -A INPUT -m state --state ESTABLISHED -j ACCEPT | ||
| - | COMMIT | ||
| - | </ | ||
| - | |||
| - | |||
| - | On a MySQL machine: | ||
| - | < | ||
| - | *filter | ||
| - | :INPUT DROP [32888: | ||
| - | :FORWARD DROP [0:0] | ||
| - | :OUTPUT ACCEPT [38964: | ||
| - | -A INPUT -p udp -m udp --dport 5060 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 4569 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 5036 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 2727 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 161 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 161 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 162 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 162 -j ACCEPT | ||
| - | -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT | ||
| - | -A INPUT -s 127.0.0.1/ | ||
| - | -A INPUT -m state --state ESTABLISHED -j ACCEPT | ||
| - | COMMIT | ||
| - | </ | ||
| - | |||
| - | |||
| - | On PHP1 machines: | ||
| - | < | ||
| - | *filter | ||
| - | :INPUT ACCEPT [32888: | ||
| - | :FORWARD ACCEPT [0:0] | ||
| - | :OUTPUT ACCEPT [38964: | ||
| - | -A INPUT -p udp -m udp --dport 5060 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 4569 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 5036 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT | ||
| - | -A INPUT -p udp -m udp --dport 2727 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 9000 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT | ||
| - | -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT | ||
| - | COMMIT | ||
| - | </ | ||
| - | |||
| - | |||
| - | On PHP2 machines: | ||
| - | like PHP1 | ||
| - | |||
| - | < | ||
| - | Port: According to the actual situation, the / | ||
| - | 21: FTP default port | ||
| - | 22: SSH default port | ||
| - | 80: http acquiescence port, because I changed the machine 8081, the CTI iptables added 8081 | ||
| - | 123: NTP default port | ||
| - | 137: udp samba port | ||
| - | 138: udp samba port | ||
| - | 139: tcp samba port | ||
| - | 389: tcp samba port | ||
| - | 445: tcp samba port | ||
| - | 901: tcp samba port | ||
| - | 161: Port of SNMP | ||
| - | 162: Port of the SNMP trap | ||
| - | 443: https default port | ||
| - | 2727: MGCP default port | ||
| - | 3306: mysql default port | ||
| - | 4569: IAX2 default port | ||
| - | 5036: IAX1 default port | ||
| - | 5038: Asterisk default port | ||
| - | 5060: sip The default port | ||
| - | 9000: php default port | ||
| - | 10000: 20000: Asterisk RTP to use the port | ||
| - | </ | ||
| - | |||
| - | |||
| - | 6.In CTI, PHP1 installed samba services, the Executive Order: | ||
| - | < | ||
| - | |||
| - | |||
| - | 7.After installation is complete, create samba user and password, such as: sbu/123456, | ||
| - | run: | ||
| - | < | ||
| - | And then, when prompted, enter 123456: | ||
| - | < | ||
| - | |||
| - | 8.Modify the samba configuration file / | ||
| - | |||
| - | On a CTI machine: | ||
| - | < | ||
| - | [ccastspool] | ||
| - | path = / | ||
| - | comment = Home Directories | ||
| - | browseable = no | ||
| - | writable = yes | ||
| - | ; valid users = %S | ||
| - | ; valid users = MYDOMAIN\%S | ||
| - | create mask=777 | ||
| - | directory mask = 777 | ||
| - | force user = asterisk | ||
| - | |||
| - | [ccastetc] | ||
| - | path = / | ||
| - | comment = Home Directories | ||
| - | browseable = no | ||
| - | writable = yes | ||
| - | ; valid users = %S | ||
| - | ; valid users = MYDOMAIN\%S | ||
| - | create mask=777 | ||
| - | directory mask = 777 | ||
| - | force user = asterisk | ||
| - | |||
| - | [ccastlib] | ||
| - | path = / | ||
| - | comment = Home Directories | ||
| - | browseable = no | ||
| - | writable = yes | ||
| - | ; valid users = %S | ||
| - | ; valid users = MYDOMAIN\%S | ||
| - | create mask=777 | ||
| - | directory mask = 777 | ||
| - | force user = asterisk | ||
| - | |||
| - | [ccscripts] | ||
| - | path = / | ||
| - | comment = Home Directories | ||
| - | browseable = no | ||
| - | writable = yes | ||
| - | ; valid users = %S | ||
| - | ; valid users = MYDOMAIN\%S | ||
| - | create mask=777 | ||
| - | directory mask = 777 | ||
| - | force user = asterisk | ||
| - | </ | ||
| - | |||
| - | On PHP1 machines: | ||
| - | < | ||
| - | [ccdata] | ||
| - | path = / | ||
| - | comment = Home Directories | ||
| - | browseable = no | ||
| - | writable = yes | ||
| - | ; valid users = %S | ||
| - | ; valid users = MYDOMAIN\%S | ||
| - | create mask=777 | ||
| - | directory mask = 777 | ||
| - | force user = asterisk | ||
| - | |||
| - | [ccstatistics] | ||
| - | path = / | ||
| - | comment = Home Directories | ||
| - | browseable = no | ||
| - | writable = yes | ||
| - | ; valid users = %S | ||
| - | ; valid users = MYDOMAIN\%S | ||
| - | create mask=777 | ||
| - | directory mask = 777 | ||
| - | force user = asterisk | ||
| - | </ | ||
| - | |||
| - | |||
| - | 9.After the configuration is complete, restart the Samba service configuration to take effect, execute the command: | ||
| - | < | ||
| - | |||
| - | 10.The samba file, mounted on each other. (For example, on a CTI machine, mount the ccdata from the PHP1 machine to the / | ||
| - | |||
| - | |||
| - | On the CTI machine, execute the following commands to mount: | ||
| - | < | ||
| - | mount -t cifs -o username=sbu, | ||
| - | mount -t cifs -o username=sbu, | ||
| - | </ | ||
| - | |||
| - | PHP1 machines, followed by the implementation of orders, carrying: | ||
| - | < | ||
| - | mount -t cifs -o username=sbu, | ||
| - | mount -t cifs -o username=sbu, | ||
| - | mount -t cifs -o username=sbu, | ||
| - | mount -t cifs -o username=sbu, | ||
| - | </ | ||
| - | |||
| - | PHP2 machines, followed by orders for carrying: | ||
| - | < | ||
| - | mount -t cifs -o username=sbu, | ||
| - | mount -t cifs -o username=sbu, | ||
| - | mount -t cifs -o username=sbu, | ||
| - | mount -t cifs -o username=sbu, | ||
| - | mount -t cifs -o username=sbu, | ||
| - | mount -t cifs -o username=sbu, | ||
| - | </ | ||
| - | |||
| - | Set the boot automatically mount, master and slave can be mounted on all the settings are similar to the following: | ||
| - | < | ||
| - | < | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 11.修改 / | ||
| - | CTI机器上: | ||
| - | < | ||
| - | [www] | ||
| - | listen=127.0.0.1 | ||
| - | listen.allowed_clients=127.0.0.1 | ||
| - | </ | ||
| - | |||
| - | PHP1机器上: | ||
| - | < | ||
| - | [www] | ||
| - | listen=192.168.1.61: | ||
| - | listen.allowed_clients=127.0.0.1, | ||
| - | </ | ||
| - | |||
| - | PHP2机器上: | ||
| - | < | ||
| - | [www] | ||
| - | listen=192.168.1.70: | ||
| - | listen.allowed_clients=127.0.0.1, | ||
| - | </ | ||
| - | |||
| - | |||
| - | 12.修改/ | ||
| - | CTI机器上: | ||
| - | |||
| - | 12-1:在http中添加以下内容: | ||
| - | < | ||
| - | http{ | ||
| - | |||
| - | upstream myphp { | ||
| - | #ip_hash; PHP负载均衡 | ||
| - | server 192.168.1.61: | ||
| - | server 192.168.1.70: | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | |||
| - | 12-2:在location中前面位置添加以下内容,并将默认配置的fastcgi_pass | ||
| - | < | ||
| - | location ~ .*\.(php|php5)? | ||
| - | { | ||
| - | # | ||
| - | set $target myphp; | ||
| - | if ($request_uri ~* login) { | ||
| - | set $target 127.0.0.1: | ||
| - | } | ||
| - | if ($request_uri ~* reloadConf) { | ||
| - | set $target 127.0.0.1: | ||
| - | } | ||
| - | fastcgi_pass | ||
| - | # | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | |||
| - | 如果只使用1台服务器(如: | ||
| - | </ | ||
| - | |||
| - | |||
| - | 13.授权相关文件的共用 | ||
| - | |||
| - | CTI机器上: | ||
| - | |||
| - | 13-1:先拷贝到mount的目录: | ||
| - | < | ||
| - | 再执行: | ||
| - | < | ||
| - | |||
| - | 13-2:拷贝: | ||
| - | < | ||
| - | 再执行: | ||
| - | < | ||
| - | |||
| - | 13-3:/ | ||
| - | |||
| - | 13-4:/ | ||
| - | |||
| - | 13-5:拷贝: | ||
| - | < | ||
| - | 再执行: | ||
| - | < | ||
| - | |||
| - | |||
| - | 13-6:拷贝: | ||
| - | < | ||
| - | 再执行: | ||
| - | < | ||
| - | |||
| - | |||
| - | PHP1机器上: | ||
| - | |||
| - | 13-7:将本机的agentsxindesk.ctp文件备份成agentsxindesk.ctp.bak | ||
| - | 备份: | ||
| - | < | ||
| - | 再执行: | ||
| - | < | ||
| - | |||
| - | 13-8:备份: | ||
| - | < | ||
| - | 再执行: | ||
| - | < | ||
| - | |||
| - | |||
| - | 13-9:将本机的hcdesk.conf文件备份成hcdesk.conf.bak | ||
| - | 备份: | ||
| - | < | ||
| - | 再执行: | ||
| - | < | ||
| - | |||
| - | 13-10:将本机的astercc.conf文件备份成astercc.conf.bak | ||
| - | 备份: | ||
| - | < | ||
| - | 再执行: | ||
| - | < | ||
| - | |||
| - | |||
| - | PHP2机器上: | ||
| - | |||
| - | 13-11:将本机的agentsxindesk.ctp文件备份成agentsxindesk.ctp.bak | ||
| - | 备份: | ||
| - | < | ||
| - | 再执行: | ||
| - | < | ||
| - | |||
| - | 13-12:备份: | ||
| - | < | ||
| - | 再执行: | ||
| - | < | ||
| - | |||
| - | 13-13:将本机的hcdesk.conf文件备份成hcdesk.conf.bak | ||
| - | 备份: | ||
| - | < | ||
| - | 再执行: | ||
| - | < | ||
| - | |||
| - | 13-14:将本机的astercc.conf文件备份成astercc.conf.bak | ||
| - | 备份: | ||
| - | < | ||
| - | 再执行: | ||
| - | < | ||
| - | |||
| - | |||
| - | 14.修改一些文件的内容 | ||
| - | |||
| - | CTI机器上: | ||
| - | |||
| - | / | ||
| - | < | ||
| - | |||
| - | < | ||
| - | [astercc] | ||
| - | secret = asterccsecret | ||
| - | deny=0.0.0.0/ | ||
| - | permit=127.0.0.1/ | ||
| - | permit=192.168.1.0/ | ||
| - | read = system, | ||
| - | write = system, | ||
| - | </ | ||
| - | |||
| - | / | ||
| - | < | ||
| - | [asterisk] | ||
| - | server = 192.168.1.62 | ||
| - | port = 5038 | ||
| - | username = astercc | ||
| - | secret = asterccsecret | ||
| - | </ | ||
| - | |||
| - | |||
| - | 15.注意/ | ||
| - | |||
| - | 16.crontab文件内容,执行:crontab -e 进行对其内容的编辑。crontab 中监测启动的程序,互补即可,不要有重复运行的。 | ||
| - | |||
| - | CTI: | ||
| - | |||
| - | < | ||
| - | 30 12 * * * / | ||
| - | 30 20 * * * / | ||
| - | 30 23 * * * / | ||
| - | * * * * * / | ||
| - | 10 2 * * * / | ||
| - | 10 0 * * * / | ||
| - | 20 0 * * * / | ||
| - | </ | ||
| - | |||
| - | MySQL: | ||
| - | 全删除,不需要执行任何程序。 | ||
| - | |||
| - | |||
| - | PHP1 和 PHP2,两台机器需要根据配置和负载来划分执行哪些脚本,两台机器不要都执行,做到互补以下脚本即可: | ||
| - | < | ||
| - | * * * * * / | ||
| - | * 2 * * * / | ||
| - | * * * * * / | ||
| - | * * * * * / | ||
| - | * * * * * / | ||
| - | * * * * * / | ||
| - | */5 * * * * / | ||
| - | * * * * * / | ||
| - | * * * * * / | ||
| - | * * * * * / | ||
| - | * * * * * / | ||
| - | * * * * * / | ||
| - | </ | ||
| - | |||
| - | |||
| - | 17.mount 挂载的检测,需要添加到crontab中。 | ||
| - | CTI: | ||
| - | < | ||
| - | */5 * * * * dfccdata=`df |grep ccdata`; [ " | ||
| - | */5 * * * * dfccstatistics=`df |grep ccstatistics`; | ||
| - | </ | ||
| - | |||
| - | |||
| - | PHP1: | ||
| - | < | ||
| - | */5 * * * * dfccastspool=`df |grep ccastspool`; | ||
| - | */5 * * * * dfastetc=`df |grep etc/ | ||
| - | */5 * * * * dfccastlib=`df |grep ccastlib`; [ " | ||
| - | */5 * * * * dfccscripts=`df |grep ccscripts`; [ " | ||
| - | </ | ||
| - | |||
| - | |||
| - | PHP2: | ||
| - | < | ||
| - | */5 * * * * dfccdata=`df |grep ccdata`; [ " | ||
| - | */5 * * * * dfccstatistics=`df |grep ccstatistics`; | ||
| - | |||
| - | */5 * * * * dfccastspool=`df |grep ccastspool`; | ||
| - | */5 * * * * dfastetc=`df |grep etc/ | ||
| - | */5 * * * * dfccastlib=`df |grep ccastlib`; [ " | ||
| - | */5 * * * * dfccscripts=`df |grep ccscripts`; [ " | ||
| - | </ | ||
| - | |||
| - | |||
| - | 18.最后, | ||
| - | |||
| - | 在CTI机器上执行: | ||
| - | < | ||
| - | 在PHP1机器上执行: | ||
| - | < | ||
| - | 在PHP2机器上执行: | ||
| - | < | ||
| - | |||
| - | 正常在CTI上会提示:001,在PHP1上会提示002,在PHP2上会提示003,再重新做授权。在CTI上重启asterccd服务,看是否有报错。 | ||