背景介绍: 阿里云,512M内存(最屌丝配置),搭建lamp 环境,除去 mysql分配了100M左右(这个不能再少了),http竟然占用了200多M,太庞大,决定换为较轻量级,高并发的nginx。
背景数据
如下图所示:系统也就500M ,出了mysql占用的100M, httpd 占了1/2 还多(经常达到十几个进程),剩余50M,有时更少不能忍,经常造成数据库崩掉,写了个自动重启脚本,但觉的不是治本之策
# 统计apache 进程个数
ps aux|grep httpd | wc –l
解决策略
- 1:针对Apache进行优化。包括优化worker运行方式等等。可以参考 apache优化
- 2 :更换轻量级服务器。采用nginx 或者lighthttpd等更轻量的服务器。传说中Nginx大法负载均衡和高并发略胜一筹,决定实践一把。
apache替换为nginx
1: 停掉apache
sudo service httpd stop注意:以防万一,最好不好提前卸掉。
2:安装nginx
yum install nginx3:启动nginx
sudo nginx- 4:简单配置nginx
主要是简单修改下log【方便追查问题】 和 web_root 对应文件【快速启用网站】 5:重启nginx
[root@iZ25xlozdf2Z nginx]# nginx -s quit
[root@iZ25xlozdf2Z nginx]# nginx6:添加php 支持
安装php-fpm
yum install php-fpmnginx.conf设置
location ~ .php$ {root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; include fastcgi_params;
}
7:重新启动服务,网站回复。
- 8:耗存简单对比 如下图:基本上节省了200M,虽然这个可能是运行初期数据;但是,还是确实轻了不少,每个服务占存基本上1/4,线程也少了不少。内存占用方面表现,感觉尚可,接下就看性能了
nginx替换apache之后,需要进行两个基本设置,一是:域名绑定和重定向,防止盗链,死链,参考文章 apache 防盗链 ;二是:设置多个端口,一个端口显然无法满足需求。
域名防盗链设置
域名防盗链主要通过,设定服务器域名,非域名重定向到现有域名(相对于之前的黑名单,我太单纯了,流量可以重定向利用一下)。
配置nginx.conf
1
2
3
4
5
6
7
8
|
# default 默认只能server_name 访问
listen
80 default ;
server_name cuihuan.net;
# 重定向
if (
$host !=
"cuihuan.net") {
rewrite
^/(.*)$ http://cuihuan.net/
$1
permanent;
}
|
解释:首先80端口默认只能域名访问 ,默认的域名cuihuan.net。 对于所有非cuihuan.net 的过来的数据直接引流的cuihuan.net。如下图【这个战斗力为五的渣渣还挂在我的页面】
进行了转码后还可以避免搜索引擎抓的域名出现死链。
配置多端口:
这个就简单了,直接把上面配置好的server copy一个挂上其他web服务或者phpadmin等等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
server {
listen
8002 default ;
server_name cuihuan.net;
if (
$host !=
"cuihuan.net") {
rewrite
^/(.*)$ http://cuihuan.net/
$1
permanent;
}
location / {
root /var/www/weixin;
index index.php;
}
location
~ \.php$ {
root /var/www/weixin;
fastcgi_pass
127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/weixin
$fastcgi_script_name;
include fastcgi_params;
}
# set nginx stutus
location /NginxStatus{
stub_status
on;
access_log
on;
auth_basic
"NginxStatus";
auth_basic_user_file conf/htpasswd;
}
#set deny all file
error_page
404 /
404.html;
location = /var/www/wordpress/40x.html {
}
error_page
500
502
503
504 /50x.html;
location = /home/www/wordpress/50x.html {
}
}
|
具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加群。在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加群。如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的可以加群。java架构群:591240817 一起交流。对于nginx搭建小网站来说,这个是基本的配置。个人感觉相对于之前 apache 防盗链配置 来说难易差不多。