热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

入手DS的VPS后,决定尝试一下LNAMP构架来配置服务器,全文使用Debian系统的aptitude安装以及手动配置,这篇算是小小的笔记。不喜欢自己费时间折腾的可以考虑31sky的LNAMP一键包,适用于CentOS、Debian和Ubuntu,安装很方便。喜欢自己配置的,可以借鉴一下
入手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内存的设置,也仅供参考。

StartServers 3
MinSpareServers 3
MaxSpareServers 8
MaxClients 50
MaxRequestsPerChild 10000

编辑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运行的更多的情况,稍等我之后监控的报告把。


推荐阅读
  • 本文介绍了如何在Ubuntu 16.04系统上配置Nginx服务器,以便能够通过网络访问存储在服务器上的图片资源。这解决了在网页开发中需要使用自定义在线图标的需求。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 随着毕业设计的结束,我终于有时间更新我的博客了。这次,我将分享如何在自己的服务器上搭建 Bitwarden,一个广受好评的开源密码管理工具。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 搭建Jenkins、Ant与TestNG集成环境
    本文详细介绍了如何在Ubuntu 16.04系统上配置Jenkins、Ant和TestNG的集成开发环境,涵盖从安装到配置的具体步骤,并提供了创建Windows Slave节点及项目构建的指南。 ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 当我在命令行登录MySQL后,无法访问任何依赖数据库连接的PHP应用。此问题每次都会出现。以下是复现问题的具体步骤及解决方案。 ... [详细]
  • PHP调用Shell命令的多种方法及环境配置指南
    本文详细介绍了在PHP中调用Shell命令的不同方式及其应用场景,同时提供了在Ubuntu系统中配置PHP以支持Shell命令执行的具体步骤。此外,还涵盖了安装与配置Apache服务器及PHP环境的过程,以便于开发者能够顺利地在Web环境中执行Shell脚本。 ... [详细]
  • 本文探讨了在支付项目开发中使用SS5 Socket Server实现内部网络访问外部网络的技术方案。详细介绍了SS5的安装、配置及性能测试过程,旨在为面临相同需求的技术人员提供参考。 ... [详细]
  • 本文探讨了Unix和Linux操作系统的起源和发展历程。从20世纪60年代计算机技术的初期阶段,到Unix的诞生及后续Linux的崛起,文章详细介绍了这些操作系统如何逐步成为现代计算不可或缺的一部分。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
author-avatar
jueduiliu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有