八LNMP环境搭建.docx

上传人:b****1 文档编号:13373826 上传时间:2023-06-13 格式:DOCX 页数:31 大小:1.47MB
下载 相关 举报
八LNMP环境搭建.docx_第1页
第1页 / 共31页
八LNMP环境搭建.docx_第2页
第2页 / 共31页
八LNMP环境搭建.docx_第3页
第3页 / 共31页
八LNMP环境搭建.docx_第4页
第4页 / 共31页
八LNMP环境搭建.docx_第5页
第5页 / 共31页
八LNMP环境搭建.docx_第6页
第6页 / 共31页
八LNMP环境搭建.docx_第7页
第7页 / 共31页
八LNMP环境搭建.docx_第8页
第8页 / 共31页
八LNMP环境搭建.docx_第9页
第9页 / 共31页
八LNMP环境搭建.docx_第10页
第10页 / 共31页
八LNMP环境搭建.docx_第11页
第11页 / 共31页
八LNMP环境搭建.docx_第12页
第12页 / 共31页
八LNMP环境搭建.docx_第13页
第13页 / 共31页
八LNMP环境搭建.docx_第14页
第14页 / 共31页
八LNMP环境搭建.docx_第15页
第15页 / 共31页
八LNMP环境搭建.docx_第16页
第16页 / 共31页
八LNMP环境搭建.docx_第17页
第17页 / 共31页
八LNMP环境搭建.docx_第18页
第18页 / 共31页
八LNMP环境搭建.docx_第19页
第19页 / 共31页
八LNMP环境搭建.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

八LNMP环境搭建.docx

《八LNMP环境搭建.docx》由会员分享,可在线阅读,更多相关《八LNMP环境搭建.docx(31页珍藏版)》请在冰点文库上搜索。

八LNMP环境搭建.docx

八LNMP环境搭建

LEMP/LNMP安装及部署

Nginx介绍

Nginx("enginex")是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服

1、Apache服务器和nginx的优缺点:

我们之前大量使用Apache来作为HTTPServer。

Apache具有很优秀的性能,而且通过模块可以提供各种丰富的功能。

1)首先Apache对客户端的响应是支持并发的,运行httpd这个daemon进程之后,它会同时产生多个子进程/线程,每个子进程/线程分别对客户端的请求进行响应;

Apache两种工作模式:

是prefork模式与worker模式

prefork每个子进程只有一个线程,效率高但消耗内存大,是lunix下默认的模式;worker模式每个子进程有多个线程,内存消耗低,但一个线程崩溃会牵连其它同子进程的线程。

2)另外,Apache可以提供静态和动态的服务,例如对于PHP的解析不是通过性能较差的CGI实现的而是通过支持PHP的模块来实现的(通常为mod_php5,或者叫做apxs2)。

3)缺点:

因此通常称为Apache的这种Server为process-basedserver,也就是基于多进程的HTTPServer,因为它需要对每个用户请求创建一个子进程/线程进行响应;

这样的缺点是,如果并发的请求非常多(这在大型门户网站是很常见的)就会需要非常多的线程,从而占用极多的系统资源CPU和内存。

因此对于并发处理不是Apache的强项。

4)解决方法:

目前来说出现了另一种WebServer,在并发方面表现更加优越,叫做asynchronousservers异步服务器。

最有名的为Nginx和Lighttpd。

所谓的异步服务器是事件驱动程序模式的event-driven,除了用户的并发请求通常只需要一个单一的或者几个线程。

因此占用系统资源就非常少。

这几种又被称为lightweightwebserver。

举例,对于10,000的并发连接请求,nginx可能仅仅使用几M的内存;而Apache可能需要使用几百M的内存资源。

使用Apache来作为HTTPServer的情况我这里不再多做介绍;上面我们介绍到Apache对于PHP等服务器端脚本的支持是通过自己的模块来实现的,而且性能优越。

我们同样可以使用nginx或者lighttpd来作为HTTPServer来使用。

nginx和Apache类似都通过各种模块可以对服务器的功能进行丰富的扩展,同样都是通过conf配置文件对各种选项进行配置。

对于PHP等,nginx没有内置的模块来对PHP进行支持,而是通过FastCGI来支持的。

nginx则没有自己提供处理PHP的功能,需要通过第三方的模块来提供对PHP进行FastCGI方式的集成。

Nginx(发音enginex)专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力(单台物理服务器可支持30000~50000个并发请求)。

正因为如此,大量提供社交网站、新闻资讯、电子商务以及虚拟主机等服务的企业纷纷选择Ngnix来提供WEB服务。

2、Nginx的安装及运行控制:

目前Nginx的最新稳定版本为1.0.8,开发版本为1.1.6,其安装文件可以从官方网站http:

//www.nginx.org下载,下面以稳定版为例,介绍nginx的安装和运行控制。

编译安装Nginx

准备工作:

Yum源搭建好。

装好gcc等软件

防护统统关闭

1)安装支持软件:

Nginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保Nginx的安装顺利完成。

yum–yinstallpcre-devel

Yum–yinstallzlib-devel

2)创建运行用户、组:

Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。

如:

创建一个名为nginx的用户,不建立宿主目录,也禁止登录到shell环境。

useradd-M–s/sbin/nologinnginx

3)编译安装nginx:

释放nginx源码包

Tar–zxvf/tmp/nginx-1.0.8.tar.gz–C/lnmp

-C指定解压的目录

编译前配置:

./configure--prefix=/usr/local/nginx--user=nginx--group=nginx--with-http_stub_status_module

注:

配置前可以参考:

./configure--help给出说明

--prefix:

设定Nginx的安装目录

--user和—group:

指定Nginx运行用户和组

--with-http_stub_status_module:

启用http_stub_status_module模块以支持状态统计

编译:

Make

安装:

Makeinstall

至此Nginx安装完成,为了使Nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行nginx命令就可以调用Nginx的主程序。

ln-s/usr/local/nginx/sbin/nginx/usr/local/sbin/

ls-l/usr/local/sbin/nginx

lrwxrwxrwx.1rootroot278月1118:

16/usr/local/sbin/nginx->/usr/local/nginx/sbin/nginx

Nginx的运行控制:

与apache的主程序httpd类似,Nginx的主程序也提供了"-t"选项用来对配置文件进行检查,以便找出不当或错误的配置。

配置文件nginx.conf默认位于安装目录下的conf/子目录中。

若要检查位于其他位置的配置文件,可使用"-c"选项来指定路径。

nginx-t

nginx:

theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisok

nginx:

configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful

启动、停止Nginx:

直接运行nginx即可启动Nginx服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加"-c配置文件路径"选项来指定路径。

需要注意的是!

,若服务器中已安装有httpd等其他WEB服务软件,应采取措施避免部突。

Servicehttpdstatus

httpd:

未被识别的服务

nginx直接执行nginx命令启动

netstat–tlun|grep“:

80”

tcp000.0.0.0:

800.0.0.0:

*LISTEN

通过检查 Nginx程序的监听状态,或者在浏览器中访问此WEB服务(默认页面将显示"Welcometonginx!

"),可以确认Nginx服务是否正常运行。

注意:

要在防火墙上允许80端口的通信。

iptables-IINPUT-ptcp--dport80-jACCEPT//允许80端口通信

serviceiptablessave//保存,规则

或使用elinks浏览器(需安装elinks软件包。

yum-yinstallelinks)

停止Nginx服务:

(在没添加脚本之前)

less/usr/local/nginx/logs/nginx.pid//查看nginx进程PID

#Killall-9nginx

当Nginx进程运行时,PID号默认存放在/usr/local/nginx/logs/目录下的nginx.pid文件中,因此若改用kill命令,也可以根据nginx.pid文件中的PID号来进行控制。

启动关闭脚本

为了使Nginx服务的启动、停止、重载等操作更加方便,可以编写Nginx服务脚本,并使用chkconfig和service工具来进行管理,也更加符合RHEL系统的管理习惯。

脚本内容如下:

(脚本在电脑中,nginx)

精简版:

#!

/bin/bash

#chkconfig:

23459928

#description:

NginxServiceControlScript

a="/usr/local/nginx/sbin/nginx"

b="/usr/local/nginx/logs/nginx.pid"

case$1in

start)

$a

;;

stop)

kill-sQUIT$(cat$b)

;;

restart)

$0stop

$0start

;;

*)

echo"error{start|stop|restart|reload}"

;;

Esac

注:

可以给脚本定义相应的注释,和提示

注:

通过kill或killall命令发送HUP信号表示重载配置,用新的配置开始新的工作进程

关闭旧的工作进程。

QUIT信号表示退出进程,KILL信号表示杀死进程。

通过"-s"选项指定信号种类。

添加为系统服务。

这样一来,就可以通过nginx脚本来启动、停止、重启、重载Nginx服务器了。

servicenginxstart//启动

servicenginxstop//停止

servicenginxrestart//重启

3、配置文件nginx.conf:

/usr/local/nginx/conf/nginx.conf

在Nginx服务器的主配置文件nginx.conf中,包括全局配置、I/O事件配置、HTTP配置这三大块内容,配置语句的格式为"关键字值;"(末尾以分号表示结束),以"#"开始的部分表示注释。

1)全局配置

由各种配置语句组成,不使用特定的界定标记。

全局配置部分包括运行用户、工作进程数、错误日志、PID存放位置等基本设置。

常用配置项:

#usernobody;

//运行用户,Nginx的运行用户实际是编译时指定的nginx,若编译时未指定则默认为nobody

worker_processes2;

//指定nginx启动的工作进程数量,建议按照cpu数目来指定,一般为它的倍数

worker_cpu_affinity0000000100000010;

//为每个进程分配cpu,上例中将2个进程分配到两个cpu,当然可以写多个,或者将一个

进程分配到多个cpu

worker_rlimit_nofile102400;

//这个指令是指当一个nginx进程打开的最多文件数目,理论值应该是最多打开文件数(ulimit

-n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit-n的值

保持一致。

(通过"ulimit–n数值"可以修改打开的最多文件数目)

error_loglogs/error.log;//全局错误日志文件的位置

pidlogs/nginx.pid;//PID文件的位置

2)I/O事件配置:

使用"events{}"界定标记,用来指定Nginx进程的I/O响应模型,每个进程的连接数等设置

events{

useepool;//使用epool模型,对于2.6以上的内核,建议使用epool模型以提高性能

worker_connections4096;//每个进程允许的最多连接数(默认为1024),每个进程的连接数应根据实际需要来定,一般在10000以下,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections(每个进程工作数目*连接数),具体还要看服务器的硬件、带宽等。

}

3)HTTP配置

使用"http{}"界定标记,包括访问日志、HTTP端口、网页目录、默认字符集、连接保持、以

及虚拟主机、PHP解析等一系列设置。

其中大部分配置语句包含在子界定标记"servier{}"内。

http{

#设定mime类型,即conf/目录下的mime.types文件中的设定。

includemime.types;

default_typeapplication/octet-stream;

#设定日志格式

log_formatmain'$remote_addr-$remote_user[$time_local]'

'"$request"$status$bytes_sent'

'"$http_referer""$http_user_agent"'

'"$gzip_ratio"';

log_formatdownload'$remote_addr-$remote_user[$time_local]'

'"$request"$status$bytes_sent'

'"$http_referer""$http_user_agent"'

'"$http_range""$sent_http_content_range"';

#设定accesslog

access_loglogs/access.logmain;

sendfileon;//支持文件发送(下载)

keepalive_timeout65;//连接保持超时

#设定虚拟主机

server{//用来配置虚拟主机

listen80;//WEB服务的监听设置,可以采用"IP地址:

端口"形式

(1)

server_name;//网站名,称可以写多个名称,用空格分隔

(2)

location/{//表示如何匹配后面的路径的

indexindex.html;//默认首页

roothtml;//网页根目录位置,默认为Nginx安装目录下的html/子目录,root语句用来设置特定访问位置的网页文档路径,根据需要可改为/var/www/html等其他路径。

(3)

}

charsetgb2312;//网页的默认字符集(4)默认的是注释的,需要手动打开

#设定本虚拟主机的访问日志

access_loglogs/.access.logmain;

error_page500502503504/50x.html;//内部错误的反馈页面

location=/50x.html{

roothtml;

}

}

}

Nginx的location

基本语法:

location[=|~|~*|^~]/uri/{…}

=    表示做精确匹配

~:

为区分大小写匹配

~*:

为不区分大小写匹配

!

~:

和!

~*分别为区分大小写不匹配及不区分大小写不匹配

正则表达式匹配,其中:

文件及目录匹配,其中:

-f和!

-f用来判断是否存在文件

-d和!

-d用来判断是否存在目录

-e和!

-e用来判断是否存在文件或目录

-x和!

-x用来判断文件是否可执行

示例1:

location=/{

#只匹配/查询。

}

location/{

#匹配任何查询,因为所有请求都已/开头。

但是正则表达式规则和长的块规则将被优先查询匹配

}

示例2:

location^~/images/{

#匹配任何以/images/开头的任何查询并且停止搜索。

任何正则表达式将不会被测试。

}

示例3:

location~*\.(gif|jpg|jpeg)${

#匹配任何以gif、jpg或jpeg结尾的请求。

}

4、状态统计及虚拟主机应用:

Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的WEB访问情况。

配置

编译参数时可添加—with-http_stub_stastus_module来启用此模块。

要使用Nginx的状态统计功能,除了启用内建模块以外,还需要修改nginx.conf文件,指定访问位置并打开stub_status配置。

在http{}配置的server{}子配置内添加如下配置项

注:

location/tongji//匹配任何包含/tongji的任何查询

stub_statuson//打开状态统计功能

Access_logoff//关闭此位置的日志记录

auth_basic"nginxstatus"登录提示

auth_basic_user_file/usr/loacl/nginx/.htpasswd//存用户密码的文件

htpasswd-c/usr/local/nginx/.htpasswd用户名//-c为创建文件,以后将不用创建

Nginx支持为目录添加密码认证,使用apache的htpasswd来创建密码文件

(找不到htpasswd命令,请安装httpd,并且不启动服务)

保存修改过的nginx.conf文件并重启nginx服务使修生效。

nginx-t//检查语法错误

新的配置生效后,在浏览器中访问Nginx服务器的/tongji网站位置(http:

//web服务器

IP/tongji)可以看到状态统计信息

如上图所示:

其中"Activeconnections"表示当前的活动连接数;而"serveracceptshandled

requests"表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次

数、已处理的请求数.

客户端地址访问控制:

注:

allow允许规则,deny拒绝规则;规则的执行是按从上向下执行,匹配某条规则后将不

再检查其他规则。

2)虚拟主机:

使用Nginx搭建虚拟主机服务器时,每个虚拟WEB站点拥有独立的"server{}"配置段,各自监听的IP地址、端口号可以单独指定,当然网站名称也是不同的。

例如:

要创建两个站点和

a为两个虚拟WEB主机分别建立根目录,并准备测试首页

b调整nginx.conf配置文件---域名虚拟主机

配置两个"server{}"区域,分别对应两个WEB站点,指定各自的网站名称、监听地址、网站

根目录、访问日志等信息,然后重载配置

打开下方的三行的文档的注释信息,使其生效。

在主配置文件当中添加两个虚拟主机的配置信息。

修改Linux下和windows下的hosts文件,使其能正常解析域名。

测试:

使用浏览器分别通过和访问两个WEB站点(注意域

名解析。

测试时没有dns服务器,可以在客户及的hosts文件中添加主机ipFQDNC:

\Windows\System32\Drivers\etc\hosts)

5、LEMP架构及应用部署:

就像构建LAMP平台一样,构建LEMP平台也需要LINUX服务器、MYSQL数据库、PHP解析

环境,区别主要在于Nginx与PHP的协作配置上

以编译方式安装Nginx(过程参照上面相关介绍完成)

安装MYSQL数据库----------以编译方式安装

首先安装yum-yinstallncurses*

释放MYSQL的源码包:

编译前配置:

./configure--prefix=/usr/local/mysql--with-charset=utf8--with-collation=utf8_general_ci--with-extra-charset=gbk.gb2313

注:

--with-charset:

指定默认使用的字符集编码;--with-collation:

指定默认使用的字符集校对规则,utf8_general_ci是适用于UTF-8字符集的通用规则;--with-extra-charsets:

指定额外支持的其他字符集编码。

编译并安装MYSQL:

优化调整:

初始化数据库:

启动MYSQL服务及为root用户设置密码:

安装PHP解析环境:

较新版本(如5.3)的PHP已经自带FPM(fastCGIprocessmanager,FastCGI进程管理器)模块,用来对PHP解析实例进行管理,优化解析效率,因此在配置PHP编译选项时应添加"--enable-fpm"以启用此模块。

为了提高PHP解析效率,建议将相应版本的ZendGuardLander也装上

释放PHP源码包:

编译前配置:

注:

在RHEL6的64系统中按上面的配置项配置可能会报以下错误,如果要是报错的话请按如下方法解决:

解决方法:

根据报错发现是因为libpng.so和libpng.a找不到,但libpng的相关软件包我已经安装了,如下图查询结果,发现libpng的包都安装了。

补充:

少libxml用yum安装

那为什么还报libpng.so和libpng.a找不到呢?

要解决的问题就是它没找到,我安装了的,那我得去找找看它到底是放那里去了。

执行下列命令,可以查找libpng.so在那里。

通过上面的搜索其实就知道一些原因了,configure一般的搜索编译路径为/usr/lib/下,因为php默认就在/usr/lib/下找相关库文件,而x64机器上是在:

/usr/lib64.这时你就可以直接把需要的库文件从/usr/lib64中拷贝到/usr/lib/中去就可以了

解决完后重新执行./configure进行编译前的配置

如果报configure:

error:

libjpeg.(a|so)notfound错误解决方法和上面的解决方法类似。

具体操作如下:

如果报下面错误

usr/bin/install:

cannotcreateregularfile`/usr/local/man/man1/cjpeg.1':

Nosuchfileordirectory

make:

***[install]Error1

提示找不到目录。

既然电脑找不到,咱们人脑可以找嘛,自己先创建先

mkdir/usr/local/man

mkdir/usr/local/man1创建完了再来

类似错误很多,方法也很多,我们得灵活应变,具体问题具体分析!

编译并安装PHP:

注:

安装后的调整:

安装ZendGuardLander:

(注:

若RHEL6是64位系统,该软件得到其官网下载64位的相应软件包,若用32位的就会报错。

下载地址:

修改php.ini文件:

在php.ini中添加如下配置

配置Nginx支持PHP环境:

若要让Nginx能够解析PHP网页,有两种方法可以选择;其一,充当中介,将访问PHP页面的WEB请求转交给其他服务器(LAMP)去处理;其二,通过使用PHP的FPM模块来调用本机的PHP环境

如果选用FPM方式,则需要先启动

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2