lnamp(Nginx + Apache + MySQL + PHP)配置过程详解 - Nginx - 服务器之家

服务器之家

专注于服务器技术!
当前位置:首页 > Web服务器 > Nginx

lnamp(Nginx + Apache + MySQL + PHP)配置过程详解

发布时间:2013-08-25 来源:服务器之家

入手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=’u@h: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运行的更多的情况,稍等我之后监控的报告把。