文档章节

nginx+apache实现动静态页面分离的web环境(一)

五大三粗
 五大三粗
发布于 2015/04/25 12:12
字数 1436
阅读 26
收藏 0

  前几天写了nginx+php(FastCGI)环境搭建的文章。搭建完环境压力测试之后发现,访问页面经常出现“502 ”的错误。不知道是php(FastCGI)的配置不合理,还是环境本身就有缺陷。在网上百度了一下,发现nginx结合apache的环境比较好,可以发挥apache处理动态页面的优势,同时利用nginx处理静态页面强大的功能,实现动静页面分离的效果。
   apache可以整合大多数应用,比如jsp,php,cgi,python等等,但是apache过于臃肿以及对静态文件响应过于缓慢让很多使用者感到头疼。nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。它能够支持高达50 000个并发连接数的响应,运行稳定,且内存、CPU等系统资源消耗非常低。nginx的优势在于高性能的处理静态页面。下面是我总结的环境搭建的过程,在这里贴出来,和大家共享一下。
系统、软件包及环境简介:
系统Centos 5.5  、 php 5.2 、mysql 5.1、apache 2.2、nginx 0.8 
1.Php支持库及扩展: libiconv-1.13.1.tar.gz     libevent-2.0.10-stable.tar.gz     ibmcrypt-2.5.8.tar.gz    mhash-0.9.9.9.tar.gz         mcrypt-2.6.8.tar.gz    gd-2.0.35.tar.gz    eaccelerator-0.9.6.1.tar.bz2   ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz  PDO_MYSQL-1.0.2.tgz        suhosin-0.9.32.1.tar.gz   freetds-0.82.tar.gz
2.Mysql所需软件包:  google-perftools-1.7.tar.gz   mysql-5.1.45.tar.gz    
3.Apache 所需软件包: httpd-2.2.17.tar.gz
4.Nginx所需软件包:pcre-8.12.tar.gz     nginx-0.8.54.tar.gz    mod_rpaf-0.6.tar.gz
当然还需要其他的一些安装包,我会在下面的更新中给出。
一、最小化安装Centos系统,删除不必要的程序,并安装相关组件。
yum -y remove httpd mysql php
yum -y install yum-fastestmirror
yum -y update
yum -y install patch make gcc gcc-c++ gcc-g77 flex bison tar libtool libtool-libs kernel-devel autoconf213  libtiff libtiff-devel gettext gettext-devel freetype freetype-devel zlib zlib-devel
libxml2 libxml2-devel file glib2 glib2-devel bzip2 diff* openldap-devel  bzip2-devel vim-minimalunzip
ncurses ncurses-devel curl curl-devel e2fsprogs  e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel 

export PHP_AUTOCONF=/usr/bin/autoconf-2.13
export PHP_AUTOHEADER=/usr/bin/autoheader-2.13
二、安装php 5.2所支持的库
cd /usr/local/src
wget -c  http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1/
./configure --prefix=/usr/local
make
make install
cd ../
wget -c  http://monkey.org/~provos/libevent-2.0.10-stable.tar.gz
tar zxvf libevent-2.0.10-stable.tar.gz
cd libevent-2.0.10-stable/
./configure --prefix=/usr
make
make install
cd ../
wget -c  http://ncu.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make
make install
/sbin/ldconfig
cd libltdl/
./configure --enable-ltdl-install
make
make install
cd ../../
wget -c  http://nchc.dl.sourceforge.net/sourceforge/mhash/mhash-0.9.9.9.tar.gz
tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make
make install
cd ../
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
wget -c http://nchc.dl.sourceforge.net/sourceforge/mcrypt/mcrypt-2.6.8.tar.gz
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
./configure
make
make install
cd ../
安装GD图形支持库:
cd /usr/local/src
wget http://www.libgd.org/releases/gd-2.0.35.tar.gz
tar xzvf gd-2.0.35.tar.gz
cd gd
cd  2.0.35
./configure --prefix=/usr/local/gd --mandir=/usr/share/man --with-jpeg --with-png --with-freetype --with-zlib --with-fontconfig
make             //如果GD报错:configure.ac:64: warning: macro `AM_ICONV' not found in library 你就make clean一下,然后再make
make install

三、安装 Mysql:
1)先安装Google的开源TCMalloc库,可以提高MySQL在高并发情况下的性能
cd /usr/local/src
wget -chttp://google-perftools.googlecode.com/files/google-perftools-1.7.tar.gz
tar zxvf  google-perftools-1.7.tar.gz
cd google-perftools-1.7/
./configure
make && make install
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
/sbin/ldconfig
cd ../
2)开始安装Mysql

groupadd mysql -g 27
useradd mysql -u 27 -g 27 -c "MySQL Server" -d /var/lib/mysql -m
cd /usr/local/src
tar -zxf mysql-5.1.45.tar.gz
cd mysql-5.1.45
./configure --prefix=/usr/local/mysql --localstatedir=/var/lib/mysql --with-unix-socket-path=/var/lib/mysql/mysql.sock --with-mysqld-user=mysql --enable-assembler --enable-thread-safe-client --with-extra-charsets=all --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=partition,innodb_plugin,myisam,myisammrg
make && make install
cd ../
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
/usr/local/mysql/bin/mysql_install_db --user=mysql
chown -R mysql.mysql /var/lib/mysql
chgrp -R mysql /usr/local/mysql/.
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
chmod u+x /etc/init.d/mysql
chkconfig --level 345 mysql on
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
echo "/usr/local/lib" >>/etc/ld.so.conf
ldconfig
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
ln -s /usr/local/mysql/bin/mysql_config /usr/bin/mysql_config
service mysql start
/usr/local/mysql/bin/mysqladmin -u root password wangwang(红色部分为你的数据库的密码)
service mysql restart
3)设置MySQL:
打开“/etc/my.cnf”文件,修改以下设置,如果没有,可手动添加:
关闭远程连接,即3306端口。这是MySQL的默认监听端口。由于此处MySQL只服务于本地脚本,所以不需要远程连接。尽管MySQL内建的安全机制很严格,但监听一个TCP端口仍然是危险的行为,因为如果MySQL程序本身有问题,那么未授权的访问完全可以绕过MySQL的内建安全机制。(你必须确定,你是否真的不需要远程连接mysql,一般数据库地址为localhost的,即使本地数据库,不需要外链)
skip-networking
保存后退出。
修改完my.cnf后,还需要对mysql的用户名、帐号、及默认数据库进行调整
首先先登录mysql,在终端窗口输入
/usr/local/mysql/bin/mysql -u root -p
然后会提示输入密码,输入正确密码后,会出现mysql>提示符。
输入以下命令:
mysql>use mysql;
mysql>select Host,User,Password,Select_priv,Grant_priv from user;
mysql>delete from user where user='';                  (删除user用户)
mysql>delete from user where password='';               (删除user用户)
mysql>delete from user where host='';                     (删除user用户)
mysql>drop database test;             (删除默认的test数据库)
mysql>flush privileges;               (刷新mysql的缓存,让以上设置立即生效)
mysql>quit;
为了使以上优化和安全设置生效,请重启Mysql服务。
service mysql restart

© 著作权归作者所有

五大三粗
粉丝 163
博文 2290
码字总数 4763735
作品 0
广州
程序员
私信 提问
Nginx系列-8.配置Nginx+Apache实现动静分离

Nginx系列-8.配置Nginx+Apache实现动静分离 目录 - Nginx系列 Nginx系列-1.Linux下安装Nginx Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架构 Nginx系列-3.配置Nginx虚拟主机 Nginx系...

ngle
2018/06/10
0
0
Nginx系列-6.配置Nginx的HTTPS

Nginx系列-6.配置Nginx的HTTPS 目录 - Nginx系列 Nginx系列-1.Linux下安装Nginx Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架构 Nginx系列-3.配置Nginx虚拟主机 Nginx系列-4.Nginx日...

ngle
2018/06/09
0
0
Nginx系列-7.配置Nginx使用uwsgi支持web.py框架

Nginx系列-7.配置Nginx使用uwsgi支持web.py框架 目录 - Nginx系列 Nginx系列-1.Linux下安装Nginx Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架构 Nginx系列-3.配置Nginx虚拟主机 Ng...

ngle
2018/06/10
0
0
nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除

一,nginx反向代理配置 #tomcat 显然就是用户访问www.wolfdream.com(需要设置本地localhost,将www.wolfdream.com指向nginx所在IP)的时候(或将www.wolfdream.com直接写在nginx所在的IP地址)...

晨曦之光
2012/03/09
992
0
部署LAMP+NFS实现双Web服务器负载均衡

一、需求分析 1.前端需支持更大的访问量,单台Web服务器已无法满足需求了,则需扩容Web服务器; 2.虽然动态内容可交由后端的PHP服务器执行,但静态页面还需要Web服务器自己解析,那是否意味着...

甩锅侠
2017/10/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

抽离css以及公共js

分离css 分离css:为何要把 CSS 文件分离出来,而不是直接一起打包在 JS 中。最主要的原因是我们希望更好地利用缓存。 extract-text-webpack-plugin > 1. 假设我们原本页面的静态资源都打包成...

莫西摩西
44分钟前
1
0
面向对象的7大原则

https://blog.csdn.net/u010355144/article/details/44940171

南桥北木
今天
2
0
Jenkins的配置从节点中默认没有Launch agent via Java Web Start,该如何配置使用

Jenkins的配置从节点中默认没有Launch agent via Java Web Start,如下图所示,而这种启动方式在Windows上是最方便的。 如何设置才能让出来呢? 1:打开"系统管理"——"Configure Global Sec...

shzwork
今天
2
0
BAT面试必问HashMap源码分析

HashMap 简介 HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。 JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈...

别打我会飞
今天
10
0
RISC-V双周简报0x1f:一晚上写个RISC-V处理器玩玩(2018-09-01)

https://cnrv.io/bi-week-rpts/2018-09-01 https://blog.csdn.net/zoomdy/article/details/82914730...

whoisliang
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部