I generally run my Asterisk boxes in a very limited virtual environment, so keeping memory usage to a minimum is definitely a good thing. I’ve seen some success in that department by scrapping Apache in place of nginx.
These instructions assume you already have an operational RHEL6-based FreePBX system in place; I don’t use their distro, but as it’s just a RHEL derivative it should work. I also don’t allow their .htaccess
files to be processed, but obviously if you’re relying on them for something, that configuration will need to be translated for nginx.
#!/bin/bash # set up the nginx repo tee /etc/yum.repos.d/nginx.repo<<'EOF' [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1 EOF yum upgrade yum install nginx php-fpm # configure nginx sed -i -E 's/user nginx;/user asterisk;/' /etc/nginx/nginx.conf rm -f /etc/nginx/conf.d/default.conf tee /etc/nginx/conf.d/freepbx.conf<<'EOF' server { server_name pbxtest; listen 80; index index.php; root /var/www/html/; location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; include 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_param SERVER_NAME $host; } } EOF # configure PHP-FPM rm -f /etc/php-fpm.d/www.conf tee /etc/php-fpm.d/freepbx.conf<<'EOF' [freepbx] listen = /var/run/php-fpm.sock listen.owner = asterisk listen.group = asterisk user = asterisk group = asterisk pm = dynamic pm.max_children = 30 pm.start_servers = 3 pm.min_spare_servers = 3 pm.max_spare_servers = 21 pm.max_requests = 1000 EOF # set up the services chkconfig httpd off chkconfig php-fpm on chkconfig nginx on service httpd stop service php-fpm start service nginx start |
#!/bin/bash # set up the nginx repo tee /etc/yum.repos.d/nginx.repo<<'EOF' [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1 EOF yum upgrade yum install nginx php-fpm # configure nginx sed -i -E 's/user nginx;/user asterisk;/' /etc/nginx/nginx.conf rm -f /etc/nginx/conf.d/default.conf tee /etc/nginx/conf.d/freepbx.conf<<'EOF' server { server_name pbxtest; listen 80; index index.php; root /var/www/html/; location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; include 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_param SERVER_NAME $host; } } EOF # configure PHP-FPM rm -f /etc/php-fpm.d/www.conf tee /etc/php-fpm.d/freepbx.conf<<'EOF' [freepbx] listen = /var/run/php-fpm.sock listen.owner = asterisk listen.group = asterisk user = asterisk group = asterisk pm = dynamic pm.max_children = 30 pm.start_servers = 3 pm.min_spare_servers = 3 pm.max_spare_servers = 21 pm.max_requests = 1000 EOF # set up the services chkconfig httpd off chkconfig php-fpm on chkconfig nginx on service httpd stop service php-fpm start service nginx start
If you find you need to undo the changes, just reverse the chkconfig
and service
commands at the end of the script, swapping off
with on
and stop
with start
.
a big thank thank you