Debian/Ubuntu + Nginx + PHP(5|7)-FPM + MySQL + Redis with VestaCP
apt-get update; apt-get upgrade -y cd /tmp wget http://vestacp.com/pub/vst-install.sh #wget http://vestacp.com/pub/vst-install-debian.sh #sed -i 's/ph..
cd /tmp
wget http://nginx.org/download/nginx-1.5.10.tar.gz
tar xzvf nginx-1.5.10.tar.gz
cd nginx-1.5.10
./configure --sbin-path=/usr/local/sbin --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_ssl_module
make
make install
vim /usr/local/nginx/conf/nginx.conf
user apache apache;
worker_processes 4;
worker_rlimit_nofile 150000;
error_log /var/log/nginx/error_log;
pid /var/run/nginx/nginx.pid;
events {
worker_connections 25000;
}
http {
include /usr/local/nginx/conf/mime.types;
default_type application/octet-stream;
server_tokens off;
log_format main '$remote_addr - $remote_user [$time_local] $status '
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
#limit_zone one $binary_remote_addr 10m;
limit_conn_zone $binary_remote_addr zone=one:10m;
limit_conn one 7;
limit_rate 512K;
#limit_zone cglob $binary_remote_addr 16m;
limit_conn_zone $binary_remote_addr zone=cglob:16m;
client_header_timeout 60;
client_body_timeout 60;
send_timeout 120;
proxy_read_timeout 60;
proxy_connect_timeout 60;
proxy_send_timeout 180;
msie_padding on;
proxy_buffer_size 32K;
proxy_buffers 64 512K;
proxy_busy_buffers_size 1024K;
proxy_temp_file_write_size 1024K;
gzip on;
gzip_min_length 10240;
gzip_buffers 32 64k;
gzip_types application/x-javascript text/css text/xml text/plain;
client_header_buffer_size 4K;
client_max_body_size 100000000;
large_client_header_buffers 16 8K;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
output_buffers 32 256k;
postpone_output 1460;
lingering_time 30;
lingering_timeout 6;
reset_timedout_connection on;
keepalive_timeout 20;
server_names_hash_bucket_size 10240;
server {
listen xxx.xxx.xxx.xxx:85 default rcvbuf=8192 sndbuf=16384; #ipSV
server_name localhost;
access_log /var/log/httpd/access_log main;
error_log /var/log/nginx/error_log info;
location / {
proxy_pass http://xxx.xxx.xxx.xxx/; #ipSV
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# Main Static files location
location ~* ^/(phpmyadmin|webmail|squirrelmail|uebimiau|roundcube)/.+\.(jpg|jpeg|gif|png|ico|css|zip|tar|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js|wmv|avi|cur|swf|mp3|wma|htc|cur)$ {
root /var/www/html/;
expires 30d;
access_log off;
}
# MRTG
location ~* ^/(stats)/.+\.(jpg|jpeg|gif|png|html|htm)$ {
root /var/www/html/;
access_log off;
}
#Static files location
location ~* ^.+\.(jpg|jpeg|gif|mp3|png|avi|vob|mpg|mpeg|mp4|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$ {
root /var/www/html;
}
location /nginx-status {
stub_status on;
access_log off;
#allow 127.0.0.1; # Real IP here
#deny all;
}
}
include /usr/local/nginx/etc/virtual.conf;
}
vim /usr/local/directadmin/data/templates/custom/nginx.conf
server {
listen |IP|:85;
server_name |DOMAIN| www.|DOMAIN| |SERVER_ALIASES|;
#access_log /var/log/httpd/domains/|DOMAIN|.log main;
#error_log /var/log/httpd/domains/|DOMAIN|.error.log error;
access_log off;
error_log off;
location / {
proxy_pass http://|IP|;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 60; #120
proxy_send_timeout 90;
proxy_read_timeout 90; #120
proxy_buffer_size 64k;
proxy_buffers 120 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
}
location @back {
proxy_pass http://|IP|;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#Static files location
location ~* ^.+\.(jpg|jpeg|gif|mp3|png|avi|vob|mpg|mpeg|mp4|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$ {
root |HOME|/domains/|DOMAIN|/public_html;
expires 14d;
error_page 404 = @back;
}
}
vim /usr/local/directadmin/data/templates/custom/nginx_sub.conf
server {
listen |IP|:85;
server_name |SUB|.|DOMAIN| www.|SUB|.|DOMAIN|;
#access_log /var/log/httpd/domains/|DOMAIN|.|SUB|.log main;
#error_log /var/log/httpd/domains/|DOMAIN|.|SUB|.error.log error;
access_log off;
error_log off;
location / {
proxy_pass http://|IP|;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 60; #120
proxy_send_timeout 90;
proxy_read_timeout 90; #120
proxy_buffer_size 64k;
proxy_buffers 120 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
}
location @back {
proxy_pass http://|IP|;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#Static files location
location ~* ^.+\.(jpg|jpeg|gif|mp3|png|avi|vob|mpg|mpeg|mp4|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$ {
root |HOME|/domains/|DOMAIN|/public_html/|SUB|;
expires 14d;
error_page 404 = @back;
}
}
.
.
vim /usr/local/directadmin/scripts/nginx_direct.sh
#!/bin/bash
NGINXHOST=/usr/local/nginx/etc/virtual.conf;
PATH_CONF=/usr/local/directadmin/data/users;
NGINXTEMPATE=/usr/local/directadmin/data/templates/custom/nginx.conf;
NGINXSUBTEMPATE=/usr/local/directadmin/data/templates/custom/nginx_sub.conf;
HOLD=/tmp/nginx.conf.$$;
showHelp() {
echo "Rewrite all users's nginx.conf from template:";
echo "$0 all ";
echo "Rewrite users nginx.conf :";
echo "$0 -u username";
echo "For useing modify nginx.conf , you mast create file:";
echo "/usr/local/directadmin/data/users/USERNAME/domains/DOMAIN_NAME.custom_nginx with modify config.";
}
do_exit() {
exit 1;
}
check_user(){
if [ "$1" = "" ] ; then
#echo "User not exit";
return 1;
else
return 0;
fi
}
check_domain()
{
if [ ! -s $1 ];then
return 1;
else
return 0;
fi
}
user_configs(){
_UHOME=`grep -e "^${1}:" /etc/passwd | cut -d: -f6`;
_USER=$1;
_DOMAINLIST=${PATH_CONF}/$_USER/domains.list;
_NGINXCONF=${PATH_CONF}/$_USER/nginx.conf;
if ! check_user $_UHOME; then
return 1;
fi
if ! check_domain $_DOMAINLIST; then
return 1;
fi
_UIP=`cat ${PATH_CONF}/$_USER/user.conf | grep ip= | cut -d= -f2`;
if [ ! -f $_NGINXCONF ]
then
echo "include $_NGINXCONF;" >> $NGINXHOST;
else
cat $_NGINXCONF > $HOLD;
rm -rf $_NGINXCONF;
fi
for i in `cat $_DOMAINLIST`; do
if [ -f ${PATH_CONF}/$_USER/domains/$i.custom_nginx ]
then
cat ${PATH_CONF}/$_USER/domains/$i.custom_nginx >> $_NGINXCONF;
else
if [ -f ${PATH_CONF}/$_USER/domains/$i.pointers ]
then
for j in `cat ${PATH_CONF}/$_USER/domains/$i.pointers | awk -F= '{print $1}' `; do
park=`echo "$park $j www.$j"`;
done
fi
if ! cat $NGINXTEMPATE | sed 's#|HOME|#'$_UHOME'#g' | sed 's!|DOMAIN|!'$i'!g' |sed 's/|SERVER_ALIASES|/'"$park"'/' | sed 's!|IP|!'$_UIP'!' | sed 's!|USERNAME!'$1'!' >> $_NGINXCONF; then
if [ -f $HOLD ]; then
cat $HOLD > $_NGINXCONF;
fi
return 1;
fi
fi
for l in `cat ${PATH_CONF}/$_USER/domains/$i.subdomains`; do
cat $NGINXSUBTEMPATE | sed 's#|HOME|#'$_UHOME'#g' | sed 's!|DOMAIN|!'$i'!g'|sed 's/|SUB|/'$l'/g' | sed 's!|IP|!'$_UIP'!' | sed 's!|USERNAME|!'$1'!' >> $_NGINXCONF;
done
park="";
done
if [ -f $HOLD ]; then
rm -rf $HOLD;
fi
}
doAll(){
for i in `ls /usr/local/directadmin/data/users/`; do
user_configs $i;
done
}
case "$1" in
all) doAll;
;;
-u) user_configs $2;
;;
* ) showHelp;
do_exit 0;
;;
esac
do_exit 0;
vim /usr/local/directadmin/scripts/nginx_task.sh
#!/bin/bash
if [ -f /usr/local/nginx/etc/task.nginx ]; then
`cat /usr/local/nginx/etc/task.nginx | sort -u > /usr/local/nginx/etc/task.nginx.do`
rm -rf /usr/local/nginx/etc/task.nginx
while read LINE
do
`echo sh $LINE`;
done < /usr/local/nginx/etc/task.nginx.do
rm -rf /usr/local/nginx/etc/task.nginx.do
#/etc/init.d/nginx reload
killall nginx && /usr/local/sbin/nginx
fi
vim /usr/local/directadmin/scripts/nginx_del.sh
#!/bin/bash
USER_CONF="include /usr/local/directadmin/data/users/$1/nginx.conf;";
if cp /usr/local/nginx/etc/virtual.conf /usr/local/nginx/etc/virtual.conf.bak; then
rm -rf /usr/local/nginx/etc/users/$1;
STR="/usr/bin/perl -pi -e 's#$USER_CONF##' /usr/local/nginx/etc/virtual.conf.bak";
eval ${STR};
sed '/^$/d' /usr/local/nginx/etc/virtual.conf.bak > /usr/local/nginx/etc/virtual.conf;
rm -rf /usr/local/nginx/etc/virtual.conf.bak
fi
cd /usr/local/directadmin/scripts/custom
echo "echo \"/usr/local/directadmin/scripts/nginx_direct.sh -u \$username\" >> /usr/local/nginx/etc/task.nginx" > domain_create_post.sh;
echo "echo \"/usr/local/directadmin/scripts/nginx_direct.sh -u \$username\" >> /usr/local/nginx/etc/task.nginx" > domain_destroy_post.sh;
echo "echo \"/usr/local/directadmin/scripts/nginx_direct.sh -u \$username\" >> /usr/local/nginx/etc/task.nginx" > domain_pointer_create_post.sh;
echo "echo \"/usr/local/directadmin/scripts/nginx_direct.sh -u \$username\" >> /usr/local/nginx/etc/task.nginx" > domain_pointer_destroy_post.sh;
echo "echo \"/usr/local/directadmin/scripts/nginx_direct.sh -u \$username\" >> /usr/local/nginx/etc/task.nginx" > subdomain_create_post.sh;
echo "echo \"/usr/local/directadmin/scripts/nginx_direct.sh -u \$username\" >> /usr/local/nginx/etc/task.nginx" > subdomain_destroy_post.sh;
echo "echo \"/usr/local/directadmin/scripts/nginx_direct.sh -u \$username\" >> /usr/local/nginx/etc/task.nginx" > user_create_post.sh;
echo "echo \"/usr/local/directadmin/scripts/nginx_del.sh \$username\" >> /usr/local/nginx/etc/task.nginx" > user_destroy_post.sh;
mkdir /var/run/nginx/
mkdir /usr/local/nginx/etc/
>/usr/local/nginx/etc/virtual.conf
mkdir /var/log/nginx
>/var/log/nginx/error_log
chown diradmin:diradmin -R /usr/local/directadmin/scripts/*
chmod a+x /usr/local/directadmin/scripts/custom/*.sh
crontab -e
*/2 * * * * /usr/local/directadmin/scripts/nginx_task.sh &
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 85
#or
iptables -t nat -A PREROUTING -i vlan1557 -d 122.155.7.xxx -p tcp --dport 80 -j DNAT --to 122.155.7.xxx:85
#or
iptables -t nat -A PREROUTING -i vmbr0 -d 122.155.12.xxx -p tcp --dport 80 -j DNAT --to 122.155.12.xxx:85
#nginx shortcut
rm -f /usr/local/directadmin/data/users/*/nginx.conf
cat /dev/null > /usr/local/nginx/etc/virtual.conf
/usr/local/directadmin/scripts/nginx_direct.sh all
cat /var/log/nginx/error_log | awk '{print $16}' | cut -d, -f1 | sort | uniq -c | sort -nr |more
September 15, 2013
Blog | #DirectAdmin #Nginx
apt-get update; apt-get upgrade -y cd /tmp wget http://vestacp.com/pub/vst-install.sh #wget http://vestacp.com/pub/vst-install-debian.sh #sed -i 's/ph..
Monitor service up/down & auto restart //httpd (apache) vim /root/apacherestart.sh #!/bin/bash PGREP=/usr/bin/pgrep CHKSERVICE=httpd $PGREP ${CHKS..
Problem: owner ?? in folder user directadmin when tranfer data with rsync -va -e 'ssh' Solution: ls -l /home | grep '^d' | awk '{print chown, -R, ..
How to set time log proftp same Server (OS: Debian + CP: DirectAdmin) 1. edit proftpd.conf vim /etc/proftpd.conf 2. edit to config TimesGMT off SetEnv..
#1. Get Xcache 1.3.2 (lated Release : xcache.lighttpd.net/pub/Releases) cd /tmp wget http://xcache.lighttpd.net/pub/Releases/1.3.2/xcache-1.3.2.tar.gz..
#1. Install file module cd /tmp/ wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz tar xvfz ioncube_loaders_lin_x8..