Web服务器架构
Web服务器架构一般主要由系统环境、Web服务器、数据库和语言组成。
可以有以下组成方式:
系统:linux unix windox mac freebsd aix
Web服务器:apache nginx tengine
数据库:mysql pgsql oracle
语言:php perl python jsp xml
2.LNMP、LAMP和LNMPA
LNMP、LAMP和LNMPA都是当今较流行的高性能网站服务器架构组合。
LNMP:Linux + Nginx + MySQL + PHP
LAMP:Linux + Apache + MySQL + PHP
LNMPA:Linux + Nginx + Mysql + PHP + Apache
(1)LNMP优点
LNMP和LAMP不同点在于Web服务器Nginx。
Nginx的主要特点是稳定、功能丰富、安装配置简单、低系统资源。Nginx对于反向代理和负载均衡有不错的支持。Nginx不仅仅可以做为Web服务器,还可以做负载均衡服务器、代理服务器和邮件服务器。
作为Web服务器来说,相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,Nginx处理静态文件、索引文件,自动索引的效率非常高,体现更高的效率。
作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站的运行速度。
作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡;Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
作为邮件代理服务器来说, Nginx是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器)。
安装配置上,Nginx安装简单、配置灵活、配置文件非常简洁(还能够支持perl语法);性能方面,Nginx是专门为性能优化而开发的,非常注重效率。它采用Poll模型,可以支持更多的并发连接,最大可以支持对50000个并发连接数的形影,而且只占用很低的内存资源;可用性方面,Nginx支持热部署,启动速度特别迅速,可以在不间断服务的情况下,对软件版本或者配置进行升级,及时运行数月也无需重新启动,几乎可以做到7*24显示不间断运行。
v Nginx性能高于Apache的原因
Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。虽然都是I/O 多路复用技术,但处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。
【select 模型】
当处理数据量大的时候,select 模型存在三个问题:连接数受限;查找速度慢;数据由内核拷贝
1. 连接数受限。因为一个进程所打开的 FD (文件描述符)是有限制的,由 FD_SETSIZE 设置,默认值是 1024/2048 ,因此 Select 模型的最大并发数就被相应限制了。
2. 查找速度慢。select 每次调用都会线性扫描全部的 FD 集合,这样效率就会呈现线性下降。
3. 内核/用户空间内存拷贝问题。
【epoll 模型】
1.Epoll 没有最大并发连接的限制,上限是最大可以打开文件的数目,这个数字一般远大于 2048, 一般来说这个数目和系统内存关系很大 ,具体数目可以 cat /proc/sys/fs/file-max 察看。
2.效率提升, Epoll 最大的优点就在于它只管你“活跃”的连接 ,而跟连接总数无关,因此在实际的网络环境中, Epoll 的效率就会远远高于 select 和 poll 。
3.内存拷贝, Epoll 在这点上使用了“共享内存 ”,这个内存拷贝也省略了。
【总结】
当有 I/O 事件到来时,select只通知应用程序事件到来,应用程序必须轮询所有的 FD 集合,测试每个 FD 是否有事件发生,并处理事件;Epoll不仅会告诉应用程序有I/0 事件到来,还会告诉应用程序相关的信息,这些信息是应用程序填充的,因此根据这些信息应用程序就能直接定位到事件,而不必遍历整个FD 集合。
(2)LNMPA优点
LNMPA使用Nginx作为前端服务器,能够更快、更及时地使用更少的系统资源处理静态页面、js、图片等文件,当客户端请求访问动态页面时,由Nginx反向代理给作为后端服务器的Apache处理,Apache处理完再交予Nginx返回给客户端。
采用LNMPA能够更好的解决LNMP架构中由于PHP-FPM方面产生的502错误,同时能够以很简单的方式提供更安全的多用户多站点环境。
3.LNMP
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx的主要特点是稳定、功能丰富、安装配置简单、低系统资源。Nginx对于反向代理和负载均衡有不错的支持。Nginx不仅仅可以做为Web服务器,还可以做负载均衡服务器、代理服务器和邮件服务器。
Mysql是一个中小型关系型数据库管理系统,可满足一般情况下大部分数据管理需求。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
注意:在搭建lnmp环境前,必须检测系统内部不能存在相关的软件:(纯净搭建)
#rpm -qa | grep php
#rpm -qa | grep httpd
#rpm -qa | grep mysql
环境:关闭防火墙、selinux置为disabled
LNMP环境的搭建——MySQL
所需软件包:mysql-boost-5.7.11.tar.gz,cmake-2.8.12.2-4.el6.x86_64.rpm
tar zxf mysql-boost-5.7.11.tar.gz
cd mysql-boost-5.7.11
yum install cmake -y yum update cmake-2.8.12.2-4.el6.x86_64.rpm yum install gcc gcc-c++ ncurses-devel bison -y ##解决依赖性
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
若还有依赖性未解决,则继续安装,直到无报错
过程中可能需要删除CmakeCache.txt
make -j2
在这一段过程中报错,很有可能是因为内存空间不足,此时将内存扩大,即可正常安装
建立一个虚拟磁盘,扩大空间
fdisk -cu /dev/vdb (8e) pvcreate /dev/vdb1 vgextend VolGroup /dev/vdb1 lvextend -l +2047 /dev/VolGroup/lv_root ##(将剩余2047都加给它)(lvs;vgs) resize2fs /dev/VolGroup/lv_root df -h
make install
useradd -u 27 -s /sbin/nologin mysql groupmod -g 27 mysql
cd /usr/local/mysql/support-files cp mysql.server /etc/init.d/mysqld mv /etc/my.cnf /etc/my.cnf.bak cp my-defaule.cnf /etc/my.cnf
修改配置文件,并更新环境
vim /root/.bash_profile source ~/.bash_profile
修改内容:
mysql --initialize --user=mysql
chown -R mysql.mysql /usr/local/lnmp/mysql/data /etc/init.d/mysqld start
mysql -p ##此时无密码
成功登陆mysql
mysql_secure_installation ##进行密码修改
至此mysql源码安装成功