1. 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显示不间断运行。


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.gzcmake-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

修改内容:

(二)企业部分之lnmp环境的搭建:mysql源码安装_依赖性


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源码安装成功