基于Linux的lnmp环境部署搭建.docx
《基于Linux的lnmp环境部署搭建.docx》由会员分享,可在线阅读,更多相关《基于Linux的lnmp环境部署搭建.docx(16页珍藏版)》请在冰豆网上搜索。
![基于Linux的lnmp环境部署搭建.docx](https://file1.bdocx.com/fileroot1/2022-10/28/4051a474-0dcb-419b-a0a2-caca379385ce/4051a474-0dcb-419b-a0a2-caca379385ce1.gif)
基于Linux的lnmp环境部署搭建
一、LNMP简介
Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。
代表版本有:
debian、centos、ubuntu、fedora、gentoo等。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。
在高并发连接的情况下,Nginx是Apache服务器不错的替代品。
Nginx同时也可以作为7层负载均衡服务器来使用。
Nginx0.8.46+PHP5.2.14(FastCGI)可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。
为什么Nginx的性能要比Apache高得多?
这得益于Nginx使用了最新的epoll(Linux2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。
目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。
处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。
下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别:
在高并发服务器中,轮询I/O是最耗时间的操作之一,select和epoll的性能谁的性能更高,同样十分明了。
一.1.Nginx详解以及优点
在当前互联网环境下,一般高端的服务前端都采用nginx作为web前端,而更多的都是采用lnmp架构,真正的后端服务器才会采用apache.
为什么这么做,要取决于nginx和apache两者之间的优缺性.:
nginx与apache相比有以下优势:
在性能上,nginx占用很少的系统资源,能支持更多的并发链接,达到更高的访问率;在功能上,Nginx是优秀的代理服务器和负载均衡器;在安装配置上,简单灵活。
nginx模块基本都是静态编译,同时对Fast-CGI支持比较好.在处理链接上,nginx支持epoll,而且体积小一般只有几百K。
Nginx的优点有以下几点:
1.作为Web服务器,nginx处理静态文件、索引文件以及自动索引效率非常高。
2.作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度。
3.作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器,对外进行服务。
同时支持简单的容错和利用算法进行负载均衡。
4.在性能方面,Nginx是专门为性能优化而开发的,在实现上非常注重效率。
它采用内核Poll模型,可以支持更多的并发连接,最大可以支持对50000个并发连接数的响应,而且占用很低的内存资源。
5.在稳定性方面,Nginx采取了分阶段资源分配技术,使得对CPU与内存的占用率非常低。
Nginx官方表示Nginx保持10000个没有活动的连接,这些连接只占2.5M内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的。
6.在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7×24小时的不间断运行。
一.2.Nginx工作原理以及工作模块介绍
Nginx的工作原理以及工作模块:
Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个locationblock(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
Nginx的模块从结构上分为核心模块、基础模块和第三方模块,HTTP模块、EVENT模块和MAIL模块等属于核心模块,HTTPAccess模块、HTTPFastCGI模块、HTTPProxy模块和HTTPRewrite模块属于基本模块,而HTTPUpstreamRequestHash模块、Notice模块和HTTPAccessKey模块属于第三方模块,用户根据自己的需要开发的模块都属于第三方模块。
正是有了这么多模块的支撑,Nginx的功能才会如此强大。
Nginx的模块从功能上分为三类,分别是:
Handlers(处理器模块)。
此类模块直接处理请求,并进行输出内容和修改headers信息等操作。
handlers处理器模块一般只能有一个。
Filters(过滤器模块)。
此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出。
Proxies(代理类模块)。
就是Nginx的HTTPUpstream之类的模块
二、Linux系统安装
二.1.Linux前言
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
它能运行主要的UNIX工具软件、应用程序和网络协议。
它支持32位和64位硬件。
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
CentOS是Linux发行版之一,它是来自于RedHatEnterpriseLinux依照开放源代码规定释出的源代码所编译而成。
由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的RedHatEnterpriseLinux使用。
VMwareWorkstation是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试、部署新的应用程序的最佳解决方案。
VMwareWorkstation可在一部实体机器上模拟完整的网络环境,以及可便于携带的虚拟机器,其更好的灵活性与先进的技术胜过了市面上其他的虚拟计算机软件。
二.2.安装VMwareWorkstation以及安装CentOS、secureCRT
参考有关教程
三、安装准备
三.1.关闭防火墙
在搭建lnmp环境之前,为了不受防火墙的影响,首先要关掉防火墙和selinux
一次性关掉selinux:
setenforce0
永久关掉selinux:
sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config
关掉防火墙:
serviceiptablesstop
三.2.安装基本软件包
[shell]#yuminstallvimgccgcc-c++makeopensslopenssl-develgd gd-develpcre-devel-y
在家目录新建一个softs文件,用于存放所有源代码
[shell]#mkdirsofts
[shell]#cdsofts
四、下载编译安装mysql
四.1.安装mysql所用到的工具包
[shell]#yuminstallcmakeperlbisonncurses-devel-y
添加mysql的用户和数据目录
[shell]#useradd-s/sbin/nologin-Mmysql
[shell]#mkdir-p/data/database/mysql
[shell]#chown-Rmysql:
mysql/data/database/mysql
四.2.下载编译安装mysql
[shell]#wget
[shell]#tarxvzfmysql-5.5.48-linux2.6-x86_64.tar.gz
[shell]#cdmysql-5.5.31
[shell]#cmake.\
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/\
-DMYSQL_DATADIR=/data/database/mysql\
-DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock\
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DENABLED_LOCAL_INFILE=1\
-DMYSQL_TCP_PORT=3306\
-DEXTRA_CHARSETS=all\
-DDEFAULT_CHARSET=utf8\
-DDEFAULT_COLLATION=utf8_general_ci\
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock\
-DMYSQL_USER=mysql\
-DWITH_DEBUG=0\
-DENABLED_PROFILING:
BOOL=ON\
-DENABLE_DEBUG_SYNC:
BOOL=OFF\
-DMYSQL_MAINTAINER_MODE:
BOOL=OFF\
-DWITH_BIG_TABLES:
BOOL=ON\
-DWITH_FAST_MUTEXES:
BOOL=ON\
-DENABLE-PROFILING:
BOOL=ON\
-DWITH_SSL:
STRING=bundled\
-DWITH_UNIT_TESTS:
BOOL=OFF\
-DWITH_ZLIB:
STRING=bundled\
-DWITH_PARTITION_STORAGE_ENGINE:
BOOL=ON\
-DWITH_SERVER_SUFFIX=4399DB\
-DENABLED_ASSEMBLER:
BOOL=ON\
-DENABLED_LOCAL_IN\
-DENABLED_THREAD_SAFE_CLIENT:
BOOL=ON\
-DENABLED_EMBEDDED_SERVER:
BOOL=OFF\
-DCOMMUNITY_BUILD:
BOOL=ON;
[shell]#make-j4
[shell]#makeinstall
四.3.修改mysql配置文件
[shell]#chown-Rmysql:
mysql/usr/local/mysql/data
[shell]#cd/usr/local/mysql
[shell]#cpsupport-/etc/f
[shell]#ln-s/data/database/mysql/usr/local/mysql/var
[shell]# vim/etc/init.d/mysql
basedir=/usr/local/mysql
datadir=/data/mysql
四.4.生成初始数据库
[shell]#/usr/local/mysql/scripts/mysql_install_db--user=mysql--basedir=/usr/local/mysql--datadir=/data/database/mysql--defaults-
四.5.把mysql加入环境量并使其生效
[shell]#echo"exportPATH=$PATH:
/usr/local/mysql/bin">>/etc/profile
[shell]#source/e