linode安装完lnmp简单优化

2013年05月11日 1237点热度 0人点赞 0条评论
文章导航
[隐藏]

首先修复linode防火墙问题:

[cce]vi /etc/init.d/iptables[/cce]
大约在138行case”$i”in添加:
[cce]
security) 
$IPTABLES -t filter -P INPUT $policy \ 
&& $IPTABLES -t filter -P OUTPUT $policy \ 
&& $IPTABLES -t filter -P FORWARD $policy \ 
|| let ret+=1 
;;
[/cce]
修改iptables 防火墙配置文件:
[cce]vi /etc/sysconfig/iptables-config[/cce]
找到下面的2个配置项:
[cce]
IPTABLES_MODULES=”ip_conntrack_netbios_ns” 
IPTABLES_MODULES_UNLOAD=”yes”
[/cce]
修改为:
[cce]
IPTABLES_MODULES=”” 
IPTABLES_MODULES_UNLOAD=”no”
[/cce]

备注:我使用的是linode centos6,默认IPTABLES_MODULES=””,所以无需修改这个选项。

保存后重启下iptables防火墙

[cce]service iptables restart[/cce]
优化下系统配置:
[cce]vi /etc/sysctl.conf[/cce]
在最下面增加:
[cce]
# Add 
net.ipv4.tcp_max_syn_backlog = 65536 
net.core.netdev_max_backlog = 32768 
net.core.somaxconn = 32768 
net.core.wmem_default = 8388608 
net.core.rmem_default = 8388608 
net.core.rmem_max = 16777216 
net.core.wmem_max = 16777216 
net.ipv4.tcp_timestamps = 0 
net.ipv4.tcp_synack_retries = 2 
net.ipv4.tcp_syn_retries = 2 
net.ipv4.tcp_tw_recycle = 1 
#net.ipv4.tcp_tw_len = 1 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_mem = 94500000 915000000 927000000 
net.ipv4.tcp_max_orphans = 3276800 
#net.ipv4.tcp_fin_timeout = 30 
#net.ipv4.tcp_keepalive_time = 120 
net.ipv4.ip_local_port_range = 1024 65535 
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
[/cce]

执行/sbin/sysctl –p立即生效

lnmp安装完成后,安装eaccelerator和memcache,在lnmp文件夹有相关sh文件

#安装eaccelerator

./eaccelerator.sh

#安装memcached

./memcached.sh

优化mysql:

[cce]vi /etc/my.cnf[/cce]
[cce]
[client] 
port        = 3306 
socket        = /tmp/mysql.sock

[mysqld] 
port        = 3306 
socket        = /tmp/mysql.sock 
skip-external-locking 
key_buffer_size = 64M 
max_allowed_packet = 1M 
table_open_cache = 128 
sort_buffer_size = 512K 
net_buffer_length = 8K 
read_buffer_size = 512K 
read_rnd_buffer_size = 1M 
myisam_sort_buffer_size = 32M 
thread_concurrency = 16 
skip-networking 
server-id    = 1

max_connections=1000 
wait_timeout=120 
interactive_timeout=120 
max_connect_errors=2000

[mysqldump] 
quick 
max_allowed_packet = 16M

[mysql] 
no-auto-rehash

[myisamchk] 
key_buffer_size = 20M 
sort_buffer_size = 20M 
read_buffer = 2M 
write_buffer = 2M

[mysqlhotcopy] 
interactive-timeout
[/cce]

备注:

lnmp默认的max_connections只有100,mysql很容易就出现mysql too many connections错误,这里我设置是1000,你可以根据自己vps情况设置。

因为我的vps只是用来放个小博客,不需要远程链接,所以我关闭了mysql远程链接,你根据自己情况选择是添加skip-networking。

 

nginx配置项修改:

vi /usr/local/nginx/conf/nginx.conf

找到:

[cce]
worker_processes 1;

fastcgi_pass unix:/tmp/php-cgi.sock;
[/cce]
修改为
[cce]
worker_processes 4;

fastcgi_pass  127.0.0.1:9000;
[/cce]

为了使以后增加的站点也是用这种方式,需要修改下/root/vhost.sh

找到

[cce]fastcgi_pass  unix:/tmp/php-cgi.sock;[/cce]
修改为
[cce]fastcgi_pass 127.0.0.1:9000;[/cce]

修改php-ftpm配置文件:

/usr/local/php/etc/php-fpm.conf

查找:

[cce]
<value name="listen_address">/tmp/php-cgi.sock</value>

<value name="max_children">5</value>

<value name="request_terminate_timeout">0s</value>
[/cce]
修改为:
[cce]
<value name="listen_address">127.0.0.1:9000</value>

<value name="max_children">10</value>

<value name="request_terminate_timeout">60s</value>
[/cce]

备注:

这里我只开了10个php-fpm进程,你可以根据自己内存调整

request_terminate_timeout我修改为60秒,是为了防止有php脚本使用file_get_contents()函数超时导致php进程一直卡住

php.ini这里就不做修改了,lnmp禁用了不少函数,如果你需要使用其中某个函数去除即可。

重启下lnmp:

/root/lnmp restart

 

删除/home/wwwroot/下除phpmyadmin以外的文件,

phpmyadmin改成别的名字

 

PS:本文转载COO BLOG

Sandyliao

保持飢渴好吃的性格、維持好攝之徒的愛好、繼續在三流的技術下活著!

文章评论

您需要 登录 之后才可以评论