2014-04-19 12:38:01
来 源
itjs.cn
Apache
本文介绍lnamp(Nginx+Apache+MySQL+PHP)配置过程详解,希望对于初学Nginx服务器相关的朋友有帮助,更多Nginx安装、配置、报错处理等资源请本站内搜索。。
入手DS的VPS后,决定尝试一下LNAMP构架来配置服务器,全文使用Debian系统的aptitude安装以及手动配置,这篇算是小小的笔记。不喜欢自己费时间折腾的可以考虑31sky的LNAMP一键包,适用于CentOS、Debian 和

Ubuntu ,安装很方便。喜欢自己配置的,可以借鉴一下这里。

1. 关于 LNAMP

LNAMP构架是利用Nginx为服务器的前端,Apache作为后端处理动态的页面,介于Nginx处理静态内容比较出色,Apache处理动态页面比较稳定,这样的构架充分的发挥了两者的优点。当然也有不足之处,在网站设置伪静态的时候,如何让服务器自动选择快速解析,充分发挥两个服务器的特长,这一点值得研究。LNAMP的安装配置并不困难,但是在小内存的VPS上如何优化运行内存,也是提出不少挑战的。关于LNAMP,在hostloc上看到一篇帖子称之为Mapn,从作者博客上的说明上来看,服务器运行原理是一样的,都是让apache监听非80端口,然后前端的Nginx处理请求传递给Apache。

2. 安装LNAMP

LNAMP的安装配置并不困难,这里Debian X64为基础 按 Nginx – Apache – Mysql – php 这样的顺序进行安装。

2.1 更新Debian更新源:apt-get update

apt-get upgrade

修改命令行显示 :

cd ; vi .bashrc

找到export PS1,修改为 export PS1=’[email protected]:W$’

[这里可以参考Linux公社的 Linux命令行提示符设置解析 自己设置独立的显示,重新登录之后即可显示]

安装aptitude, nano

apt-get install aptitude nano

aptitude 是个相比apt-get 比较好一点的安装命令

nano 就是相对 vi/vim 比较舒服的编辑器

2.2 安装NginxDebian上的关于Nginx的源还是0.6.32的,相对比较古老,官方都出0.94的测试版了,所以这里使用Nginx 的0.8.54稳定版进行手动编译先安装库文件

aptitude install libgcrypt11-dev libpcre3 libpcre3-dev libssl-dev

【因为使用者的linux版本不一,所以出现编译失败的时候,可以根据错误提示,返回这一步安装缺失的库文件】

安装pcre

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.11.tar.gz

tar zxvf pcre-8.11.tar.gz

cd pcre-8.11

./configure

make && make install

安装nginx

wget http://nginx.org/download/nginx-0.8.54.tar.gz

tar zxvf nginx-0.8.54.tar.gz

cd nginx-0.8.54

./configure --prefix=/etc/nginx

make && make install

安装完后先停用apache2,避免出现端口冲突

/etc/init.d/apache2 stop

然后配置nginx,这里可以find / –name nginx.conf ,因为在上面编译nginx的时候定义了prefix路径,所以这里的conf文件在/etc/nginx/conf/nginx.conf

关于nginx.conf文件的说明,可以参考inginx的博客 — Nginx 配置文件nginx.conf的完整配置说明 。

然后启动nginx

/etc/nginx/sbin/nginx

启动之后,配置nginx.conf 本文的后面将继续讨论

2.3 配置Apache因为系统本身就自带了Apache2,所以这里就只说明配置,如果在没有的用命令安装

aptitude install apache2

对于apache ,首先要修改它的监视听端口为上面设置的81

设置端口ports.conf

  nano /etc/apache2/ports.conf

NameVirtualHost *:81

Listen 127.0.0.1:81

编辑apache2.conf

nano /etc/apache2/apache2.conf

这里设置apache2 进程数,数量的多少还是要看自己的内存而定,这是我的512MB内存的设置,也仅供参考。

<ifmodule mpm_prefork_module>

StartServers 3

MinSpareServers 3

MaxSpareServers 8

MaxClients 50

MaxRequestsPerChild 10000

</ifmodule>

编辑http.conf,设置根目录以及支持php文件

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

DocumentRoot "/var/www"

然后重启apache2

/etc/init.d/apache2 restart

2.4 Mysqlmysql在Debian的安装比较简单,直接用aptitude就可以了。

aptitude install mysql-community-server-5.0

对于Debian lenny版安装的时候就会要求输入密码,其他的可以在安装后输入命令设置

mysqladmin -u root password "newpwd"

2.5 PHP安装配置

aptitude install php5 php5-mysql php5-curl

php安装后修改php.ini

把extension=msql.so前的; 去掉,支持mysql

2.6 其他的部件

安装phpmyadmin

aptitude install phpmyadmin

mv /usr/share/phpmyadmin /var/www/phpmyadmin

访问http://你的ip 或者域名/phpmyadmin/ 就可以使用phpmyadmin了。默认安装的版本比较旧,可以直接从phpmyadmin直接下载新的版本覆盖phpmyadmin这个文件夹

安装Zend Optimizer这里可以参照随枫玉雨写的64位debian或Ubuntu安装ZendOptimizer-3.3.3 关键也是下载的那个Zend Optimizer文件,我从官网下载一直就只有data 而木有install.sh 文件,也不知道要怎么编译。

3. LNAMP的一些问题

首先,耗内存。Apache作为服务器的后端,但是Apache还是要运行的吖,这就要求对Apache 进行瘦身,比如去掉一些没必要的模块什么的。这又是新的折腾了。

然后,就是伪静态的问题,也就是nginx.conf 里面要怎么设置的问题。一键包的作者是这么写的

location / {

client_max_body_size 100m;

client_body_buffer_size 128k;

proxy_send_timeout 300;

proxy_read_timeout 300;

proxy_buffer_size 4k;

proxy_buffers 16 32k;

proxy_busy_buffers_size 64k;

proxy_temp_file_write_size 64k;

proxy_connect_timeout 30s;

proxy_pass http://$ipaddress:81/;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

我在看WindyWinte写的Debian配置LANMP笔记(Debian+Apache+Nginx+MySQL+PHP) 这篇日志,里面的作者是这样弄静态的

# proxy the PHP scripts to Apache on 127.0.0.1:81

location / {

try_files $uri $uri/ @apache;

}

location @apache {

proxy_pass http://127.0.0.1:81;

include proxy_params;

}

Mapn的作者是这样写的

location / {

try_files $uri @backend;

location ~* .(jpeg|jpg|gif|png|bmp|ico|js|css|swf)$ {

proxy_pass http://127.0.0.1:81;

include proxy.inc;

include cache.inc;

}

}

location @backend {

internal;

proxy_pass http://127.0.0.1:81;

include proxy.inc;

}

WindyWinte跟Mapn的写法还是差不多的,在服务器对比之后,我采用了Mapn的方法,现在伪静态没什么问题。详细的文档可以点击下载查看。

关于LNAMP运行的更多的情况,稍等我之后监控的报告把。

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。