兰色精灵 发表于 2015-1-14 20:25:07

给大家带来CentOS下LNMP架构及使用

如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!LNMP代表的就是:Linux体系下Nginx+MySQL+PHP这类网站办事器架构。

Linux是一类Unix盘算机操纵体系的统称,是今朝最盛行的收费操纵体系。
Nginx是一个高功能的HTTP和反向代办署理办事器,也是一个IMAP/POP3/SMTP代办署理办事器。
有以下上风:
作为web办事器,nginx处置静态文件、索引文件,主动索引的效力十分高;
作为代办署理办事器,nginx能够完成无缓存的反向代办署理减速,进步网站的运转速率;
作为负载平衡办事器,nginx既能够在外部间接撑持Rails和PHP,也能够撑持HTTP代办署理办事器对外举行办事,同时还撑持复杂的容错和使用算法举行负载平衡;
在功能上,占用很少的资本,能撑持更多的并发毗连,到达更高的会见效力;
在功效上,nginx是优异的代办署理办事器和负载平衡办事器;
装置设置上,nginx装置复杂、设置天真;
功能方面,nginx是专门为功能优化而开辟的,十分注意效力。它接纳Poll模子,能够撑持更多的并发毗连,最年夜能够撑持对50000个并发毗连数的形影,并且只占用很低的内存资本;
高可用性,nginx撑持热安排,启动速率出格敏捷,能够在不中断办事的情形下,对软件版本大概设置举行晋级,实时运转数月也无需从头启动,几近能够做到7*24显现不中断运转

Mysql是一个小型干系型数据库办理体系。
PHP是一种在办事器端实行的嵌进HTML文档的剧本言语。
这四种软件均为收费开源软件,组合到一同,成为一个收费、高效、扩大性强的网站办事体系。

1.Nginx的装置及基础的利用设置

nginx.org官网

tarzxfnginx-1.4.2.tar.gz
nginx-1.4.2/src/core
vinginx.h
#defineNGINX_VER"nginx/"NGINX_VERSION//NGINX_VERSION显现版本,能够往失落,以防黑客歹意打击




#nginx-1.4.2/auto/cc
#vigcc
#debug
#CFLAGS="$CFLAGS-g"//封闭debug调试




#./configure--prefix=/usr/local/lnmp/nginx
--with-http_ssl_module
--withhttp_stub_status_module//编译,启用https加密和nginx的NginxStatus功效,
//用来监控Nginx确当前形态。




#make&&makeinstall

#cd/usr/local/lnmp/nginx/sbin
#ln-s/usr/local/lnmp/nginx/sbin/nginx/usr/local/sbin///将nginx下令到场情况变量
#useradd-M-s/sbin/nologinnginx




#vimconf/nginx.conf
usernginxnginx;
worker_processes2;
events{
useepoll;//优化nginx
worker_connections1024;
}
http{//翻开日记功效
log_formatmain$remote_addr-$remote_user[$time_local]"$request"
$status$body_bytes_sent"$http_referer"
"$http_user_agent""$http_x_forwarded_for";
server{
location/status{
stub_statuson;
access_logoff;
}
}
}



Nginx撑持以下处置毗连的***(I/O复用***),这些***能够经由过程use指令指定。


[*]select-尺度***。假如以后平台没有更无效的***,它是编译时默许的***。你可使用设置参数--with-select_module和--without-select_module来启用或禁用这个模块。

[*]poll-尺度***。假如以后平台没有更无效的***,它是编译时默许的***。你可使用设置参数--with-poll_module和--without-poll_module来启用或禁用这个模块。

[*]kqueue-高效的***,利用于FreeBSD4.1+,OpenBSD2.9+,NetBSD2.0和MacOSX.利用双处置器的MacOSX体系利用kqueue大概会形成内核溃散。

[*]epoll-高效的***,利用于Linux内核2.6版本及今后的体系。在某些刊行版本中,如SuSE8.2,有让2.4版本的内核撑持epoll的补钉。



nginx-t//检测语法
nginx//启动nginx
nginx-sreload//从头加载nginx
nginx-sstop//封闭nginx

nginx完成假造主机

vinginx.conf
http{
server{
listen80;
server_namewww.tjf.com;
location/{
root/html/tjf;
indexindex.htmlindex.htm;
}
}
server{
listen80;
server_namewww.ty.com;
location/{
root/html/ty;
indexindex.htmlindex.htm;
}
}
}




#mkdir/html
#mkdir/html/tjf
#mkdir/html/ty
#echo"tjf">/html/tjf/index.html
#echo"ty">/html/ty/index.html
#nginx-sreload



在/etc/hosts中到场剖析,扫瞄器会见域名就能够完成假造主机

nginx负载平衡:


#vinginx.conf
upstreamty{//ty只是一个名字,能够任意
server192.168.0.25:8080weight=3;//weight设置该办事器每次被会见的次数
server192.168.0.26:8080;
}//加在http{}中



想让谁人server完成负载平衡,就修正其server{}内的语句

server{
listen80;
server_namewww.ty.org;
#access_loglogs/ty.org.access.logmain;
location/{
proxy_passhttp://ty;
}
}




nginx的session坚持:
利用nginxsticky模块完成基于cookie的负载平衡
即一个ip一次一直就会见一个tomcat办事器,(当用户注册账户时,第一个注册页注册完成,实行下一步时即切换页面,不会切到另外一台tomcat办事器),别的一个ip会见下一台tomcat办事器
#nginx-sstop//给nginx增加模块徐从头编译,先stop
#tarzxfnginx-sticky-module-1.1.tar.gz
#cdnginx-1.4.2
#makeclean



#./configure--prefix=/usr/local/lnmp/nginx--with-http_ssl_module--with-http_stub_status_module--add-module=/root/nginx-sticky-module-1.1
#make&&makeinstall




#vim/usr/local/lnmp/nginx/conf/nginx.conf//设置文件中到场sticky模块
upstreamty{
sticky;
server192.168.1.25:8080;
server192.168.1.26:8080;
}



#nginx//启动nginx,就能够发明一个ip每次在无效工夫内一直会见一台tomcat办事器

https加密web会见

cd/etc/pki/tls/certs
makecert.pem//密钥和密文均在此文件
cpcert.pem/usr/local/lnmp/nginx/conf




vimnginx.conf//将HTTPSserver段翻开,即往失落#
ssl_certificatecert.pem;
ssl_certificate_keycert.pem;




nginx-t
nginx-sreload

会见扫瞄器


猎取证书



2.Mysql的源码装置


mysql-5.5.12.tar.gz

#yuminstallcmakemakegccgcc-c++
#tarzxfmysql-5.5.12.tar.gz
#cdmysql-5.5.

1
2
3
4
5
6
7
#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#Unixsocket文件路径
>-DWITH_MYISAM_STORAGE_ENGINE=1#装置myisam存储引擎
>-DDEFAULT_CHARSET=utf8#利用utf8字符
>-DDEFAULT_COLLATION=utf8_general_ci#校验字符
>-DEXTRA_CHARSETS=all#装置一切扩大字符集





呈现此成绩依据提醒晓得必要装置yuminstallncurses-devel,装置完后删除缓存文件CMakeCache.txt,从头实行编译

make&&makeinstall
useradd-M-s/sbin/nologinmysql
cd/usr/local/lnmp/mysql
cdscripts/




./mysql_install_db--user=mysql--basedir=/usr/local/lnmp/mysql/--datadir=/usr/local/lnmp/mysql/data///可使用./mysql_install_db--help检察参数信息





chown-Rroot.mysql/usr/local/lnmp/mysql/*
chown-Rmysqldata/



cpsupport-files/my-medium.cnf/etc/my.cnf//设置文件
cpmysql.server/etc/init.d/mysqld//启动剧本
servicemysqldstart



#vi/root/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
////如今间接利用mysql等下令,大概没法实行,必要设置情况变量,查找源码编译后的mysql下令路径为/usr/local/lnmp/mysql/bin,将其到场该文件PATH后,以分号相隔,即
#source.bash_profile//使其失效


3.php的源码装置
gd是一个用以天生图片的库
libiconv用于完成一个字符编码到另外一个字符编码的转换
mhash是一个哈稀演函数库,它能够撑持多种哈稀演算法,如MD5、SHA1
libmcrypt可使php撑持更多加密算法

tarzxflibiconv-1.13.1.tar.gz#增强体系对撑持字符编码转换的功效
cdlibiconv-1.13.1
./configure--prefix=/usr/local/lnmp/modules/libiconv
make&&makeinstall




tarjxflibmcrypt-2.5.8.tar.bz2#mcryptmhash是php加密算法扩大库
cdlibmcrypt-2.5.8
./configure--prefix=/usr/local/lnmp/modules/libmcrypt
make&&makeinstall




cdlibltdl/
./configure--prefix=/usr/local/lnmp/modules/libmcrypt/libltdl--enable-ltdl-install
make&&makeinstall




tarjxfmhash-0.9.9.9.tar.bz2
cdmhash-0.9.9.9
./configure--prefix=/usr/local/lnmp/modules/mhash
make&&makeinstall




tarzxfmcrypt-2.6.8.tar.gz
cdmcrypt-2.6.8
./configure--prefix=/user/local/lnmp/modules/mcrypt--with-libmcrypt-prefix=/user/local/lnmp/modules/libmcrypt







此处会报错如上,必要以下操纵:
1
2
3
4
#vi/etc/ld.so.conf
includeld.so.conf.d/*.conf
/usr/local/lnmp/modules/libmcrypt/lib
#ldconfig




从头编译会报mhash毛病,以下



需操纵
vi/etc/ld.so.conf增加以下一条
/usr/local/lnmp/modules/mhash/lib
ln-s/usr/local/lnmp/modules/mhash/lib/*/usr/local/lib
ln-s/usr/local/lnmp/modules/mhash/include/*/usr/loca/include
ldconfig




再从头编译则OK
#make&&makeinstall

Php软件包依附性:
yuminstallnet-snmp-develcurl-devellibxml2-devellibpng-devellibjpeg-develfreetype-
develgmp-devel

tarjxfphp-5.4.12.tar.bz2
cdphp-5.4.12
./configure--prefix=/usr/local/lnmp/php--with-config-file-path=/usr/local/lnmp/php/etc
--with-mysql=/usr/local/lnmp/mysql--with-openssl--with-snmp--with-gd
--with-zlib--with-curl--with-libxml-dir--with-png-dir--with-jpeg-dir
--with-freetype-dir--with-pear--with-gettext--with-gmp--enable-inline-optimization
--enable-soap--enable-ftp
--enable-sockets--enable-mbstring--with-mysqli=/usr/local/lnmp/mysql/bin/mysql_config
--enable-fpm--with-fpm-user=nginx--with-fpm-group=nginx
--with-mcrypt=/usr/local/lnmp/modules/libmcrypt--with-mhash






#makeZEND_EXTRA_LIBS=-liconv#ZEND减速php实行,手工指定将iconv加到php分外库中,
#一样平常来讲这些库的增添php能够主动完成,可是iconv必要手工操纵到场




#vi/etc/ld.so.conf
usr/local/lnmp/modules/libiconv/lib
#ln-s/usr/local/lnmp/modules/libiconv/lib/*/usr/local/lib
#ldconfig




#makeinstall
#cd/usr/local/lnmp/php/etc

#cpphp-fpm.conf.defaultphp-fpm.conf
#viphp-fpm.conf
;pid=run/php-fpm.pid//往失落前边的正文





#cdphp-5.4.12
#cpphp.ini-production/usr/local/lnmp/php/etc/php.ini#合适php临盆情况下的设置文件
#vi/usr/local/php/etc/php.ini
cgi.fix_pathinfo=0#避免Nginx文件范例毛病剖析毛病
date.timezone=Asia/Shanghai#设置时区




#cdsapi/fpm/
#cpinit.d.php-fpm/etc/init.d/fpm//fpm启动剧本,默许端口为9000
#chmod+x/etc/init.d/fpm
#/etc/init.d/fpmstart




如今就能够设置nginx会见php测试页以下:
vi/usr/local/lnmp/nginx/conf/nginx.conf
server{
location/{
roothtml;
indexindex.phpindex.htmlindex.htm;//记得要增加index.php
}
location~.php${
roothtml;
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
#fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
includefastcgi.conf;
}
}




#cathtml/index.php
<?php
phpinfo()
?>
#nginx-sreload//扫瞄器会见ip/index.php看到php测试页则乐成


如今LNMP架构已搭建完成,接上去在lnmp架构上搭建一个bbs网站:
软件下载地点
http://download.comsenz.com/DiscuzX/

1.上传upload目次中的文件到办事器
2.设置目次属性(windows办事器可疏忽这一步)
以下这些目次必要可读写权限
./config
./data含子目次
3.实行装置剧本/install/
请在扫瞄器中运转install步伐,即会见http://您的域名/服装论坛目次/install/

[*]参照页面提醒,举行装置,直至装置终了


装置完后以下




Tomcat静态页面:
Tomcat办事器是一个收费的开放源代码的静态Web使用办事器,属于轻量级使用办事器,在中小型体系和并发会见用户不是良多的场所下被广泛利用,是开辟和调试JSP步伐的首选
tomcat相称于jsp的注释器,次要用于静态页面,nignx合用于web静态页面

装置tomcat必需要装置jdk
装置jdk-6u32-linux-x64.bin
shjdk-6u32-linux-x64.bin
mvjdk1.6.0_32//usr/local/jdk//挪动到指定目次
vim/etc/profile//设置java全局变量
exportJAVA_HOME=/usr/local/jdk
exportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib//指定java库目次
exportPATH=$PATH:$JAVA_HOME/bin



source/etc/profile//使其当即失效

tarzxfapache-tomcat-7.0.42.tar.gz-C/usr/local/lnmp/
cd/usr/local/lnmp/apache-tomcat-7.0.42/bin
./startup.sh//tomcat默许翻开端口为8080
扫瞄器会见192.168.1.25:8080就能够看到tomcat网页



每次会见都得加上:8080,若不想加能够修正nginx.conf
location~.jsp${
proxy_passhttp://127.0.0.1:8080;
}
如许就能够不必加:8080端口会见192.168.1.25/index.jsp,如今jsp静态网页是经由过程nginx会见


由于nginx如今不撑持图片功效,以是会见时不克不及一般显现图片,此时必要在ngix.conf到场一下字段:
location~.(png|gif|css|jsp|js)${
root/usr/local/lnmp/tomcat/webapps/ROOT;
}
再次会见便可呈现图片
测试页内容Thissystemstimeis<%=newjava.util.Date()%>


利用nginx完成tomcat静态页面的负载平衡
vinginx.conf
http{
upstreamty{
server192.168.1.25:8080;//25、26主机上都装有tomcat
server192.168.1.26:8080;
}
}
server{
location~.jsp${
proxy_passhttp://ty;
}
}

设置好各办事器的jsp静态网页文件
nginx-sreload
如今就能够会见完成负载平衡了
-----------------------------------------------------------
Memcached
是一个高功能的散布式的内存工具缓存体系,经由过程在内存里保护一个一致的伟大的hash表,它可以用来存储各类格局的数据,包含图象、视频、文件和数据库检索的了局等。复杂的说就是将数据挪用到内存中,然后从内存中读取,从而年夜年夜进步读取速率。
memcache为php的一个模块,使php可以利用内存存储,加载到内存进步会见速率

enterprise6的Package里提够memcached
RPM包装置
yuminstallmemcached
/etc/init.d/memcachedstart




telnetlocalhost11211//测试memcached是不是乐成翻开
stats检察形态
set设置
add增加
get检察delete删除



tomcat负载平衡的session把持
(正在会见的办事器宕机,间接切换至另台server,前次会见的纪录仍可用)

session:
交织存储memcache

Tomcat-1(T1)将session存储在memcached-2(T2)上。只要当M2不成用时,T1才将session存
储在memcached-1上(M1是T1failoverNode)。利用这类设置的优点是,当T1和M1同时崩
溃时也不会丧失session会话,制止单点妨碍。

官网http://code.谷歌.com/p/memcached-session-manager

起首A、B已为tomcat负载平衡:
A:
1、
asm-3.2.jarminlog-1.2.jar
kryo-1.04.jarmsm-kryo-serializer-1.6.5.jar
kryo-serializers-0.10.jarreflectasm-1.01.jar
memcached-session-manager-1.6.3.jarspymemcached-2.7.3.jar
memcached-session-manager-tc7-1.6.3.jar//tc7对应tomcat的版本7
//将.jar包放至tomcat/lib目次,必定注重包的版本
2、
vim/tomcat/conf/context.xml
<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.1.25:11211,n2:192.168.1.26:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>



3、



cd/tomcat/webapps/ROOT
vitest.jsp//创立测试页
<%@pagecontentType="text/html;charset=GBK"%>
<%@pageimport="java.util.*"%>
<html><head><title>ClusterAppTest</title></head>
<body>
ServerInfo:
<%
out.println(request.getLocalAddr()+":"+request.getLocalPort()+"<br>");%>
<%
out.println("<br>ID"+session.getId()+"<br>");
StringdataName=request.getParameter("dataName");
if(dataName!=null&&dataName.length()>0){
StringdataValue=request.getParameter("dataValue");
session.setAttribute(dataName,dataValue);
}
out.print("<b>Sessionlist</b>");
Enumeratione=session.getAttributeNames();
while(e.hasMoreElements()){
Stringname=(String)e.nextElement();
Stringvalue=session.getAttribute(name).toString();
out.println(name+"="+value+"<br>");
System.out.println(name+"="+value);
}
%>
<formaction="test.jsp"method="POST">
name:<inputtype=textsize=20name="dataName">
<br>
key:<inputtype=textsize=20name="dataValue">
<br>
<inputtype=submit>
</form>
</body>
</html>



4、

/etc/init.d/memcachedstart
/tomcat/bin/./shutdown.sh
/tomcat/bin/./startup.sh//重启tomcat




tail-f/tomcat/logs/catalina.out//检察日记,如初始化finished,则乐成
INFO:MemcachedSessionServicefinishedinitialization……




B:中1、3、4步调一样,2设置的内容略微有改动

<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.1.25:11211,n2:192.168.1.26:11211"
failoverNodes="n2"
requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$"transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>





如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!

因胸联盟 发表于 2015-1-16 17:50:52

给大家带来CentOS下LNMP架构及使用

Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。

再现理想 发表于 2015-1-22 20:09:52

最好先搜寻一下论坛是否有您需要的文章。这样可以获得事半功倍的效果。

变相怪杰 发表于 2015-1-31 15:26:30

为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。?

金色的骷髅 发表于 2015-2-6 21:20:10

熟读Linux系统有关知识,如系统目录树,有关内容可购书阅读或搜索论坛。

爱飞 发表于 2015-2-18 20:55:11

在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。

简单生活 发表于 2015-3-6 11:23:00

和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。

小女巫 发表于 2015-3-13 02:08:30

发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。

精灵巫婆 发表于 2015-3-20 10:19:56

了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。
页: [1]
查看完整版本: 给大家带来CentOS下LNMP架构及使用