我的openwrt上运行的http服务器是nginx,相比lighthttp,nginx更高
效些,占用资源感觉更少些。对于自带的uhttp服务,只能保留,不然路由
器的网络界面就没办法进入了。如上篇所说,修改了默认的uhttpd服务器
端口号,这样nginx作为主要的http服务器界面出来了。
以下是nginx的相关配置,这里我将文件分开存放了,这样比较直观,
而且,配置的nginx,只支持一个站点,毕竟,路由器的资源很有限。
user nobody nogroup;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
use epoll; #使用epoll,更高效,我在实际使用过程中,感受不到,获取是自己从来不曾注意
multi_accept on;
}
http {
include mime.types;
include wordpress.conf; #wordpress的相关配置,会引用php的配置文件
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65; #修改超时时间
}
其他的内容都删除或者注释掉了。下面是核心的wordpress配置相关的
内容了:
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/access.log combined; #日志记录,调试时很有用的
#error_log /var/log/nginx/error.log warn; #日志记录,调试时很有用的
#access_log on; #日志记录,调试时很有用的
root /usb/web/blog; #web文件根目录在磁盘中的位置
error_page 500 502 503 504 /50x.htm; #50x相关的错误页面的配置,出现
#这种情况,基本上是php挂了(僵死了),或者php启动的时候端口被占用了。前一种情
#况,没想出简单的解决办法。后一种情况,想过调用uhttp服务器页面来重新
#启动,但最后用了一个cron任务每5分钟来进行检查,简单些。但在实际使用
#中,没发现显示自定义的页面。没时间理会了,留个遗憾吧
location = /50x.htm {
root html;
}
#禁止访问.htaccess文件
location ~* \.(htaccess)$ {
deny all;
}
#wordpress服务器配置
location / {
client_max_body_size 100m;
#这个规则至关重要,如果没有会导致wordpress permlinks失败,而出现404错误
try_files $uri $uri/ /index.php?$args;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
#php相关配置
location ~ \.php$ {
include fastcgi.conf;#所有php的fastcgi配置都放在这个文件里面
include fastcgi_params;#所有php的fastcgi参数配置都放在这个文件里
#面
}
#这个部分是把常用的较大的图片,样式表做一个浏览器缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 24h;
log_not_found off;
}
}
上述并没有关于w3cache等相关插件的特殊配置,我曾经研究了下关于
这些插件的配置,总不能处于理想状态,干脆将这些插件之类的全都删除
了。从另外一个角度考虑下,对于我们的服务器,php脚本执行的越少则会
反映越快,这些插件说不定还会起到反作用,虽然一般情况下带来好的效
果。
以下是php-fastcgi的相关配置:
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:1026; #php-fastcgi的端口注意修改。
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
上述基本上都差不多,我对一些缓存的大小进行了调整,使之可以有效
在128MB的内存上运行,对于其他的内存大小,可进行相关的调整。
fastcgi_params使用默认的即可。
mysql服务器的配置基本上使用默认的即可,注意修改php.ini中关于
mysql服务器相关的配置,以及mysql配置中关于数据库存放位置的配置,
如果是完全新的网站,需要建立相关数据表,可参照网上的相关文档安装。
我对mysql的my.cnf做了下列的修改,不然mysql服务器占用太多内存了。
key_buffer = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K
thread_cache_size = 8
server-id = 1