LNMP架构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LNMP架构相关的知识,希望对你有一定的参考价值。

1.1  

1.1.1 LNMP介绍

大约在2010年以前,互联网公司最常用的经典Web服务环境组合就是LAMP(即

LinuxApachemysqlphp),近几年随着nginx   Web服务的逐渐流行,又出现了

新的Web服务环境组合——LNMPLEMP,其中LNMPLinuxNginxMySQL

PHP等首字母的缩写,而LNMP中的E则表示Nginx,它取自Nginx名字的发音

enginex)。现在,LNMP已经逐渐成为国内大中型互联网公司网站的主流组合环境,因

此,我们必须熟练掌握LNMP环境的搭建、优化及维护方法。

 

1.1.2 LNMP组合工作流程

LNMP组合工作时,首先是用户通过浏览器输入域名请求Nginx Web服务,如果请求是静态资源,则由Nginx解析返回给用户;如果是动态请求(.php结尾),那么Nginx 就会把它通过FastCGl接口(生产常用方法)发送给PHP引擎服务(FastCGl进程php-fpm)进行解析,如果这个动态请求要读取数据库数据,那么PHP就会继续向后请求MyS5OL数据库,以读取需要的数据,并最终通过Ngix服务把获取的数据返回给用户这就是LNMP环境的基本请求顺序流程

1.1.3 LNMP部署流程介绍

第一步:安装软件服务

第二步:将服务软件进行串联结合

nginxphp结合

phpmysql结合

第三步:启动相关服务,进行测试

第四步:代码上线(wordpress

 

1.1.4 LNMP FastCGI知识说明

工作原理讲解说明:

. 用户请求的静态文件,由nginx服务自行处理,根据静态的location配置进行处理

      用户请求的动态文件,由php服务进行处理,根据动态的location配置进行处理

. nginx服务接收到动态请求,会将请求抛送给fastcgi,类似于nginx服务接收动态请求的秘书,秘书会将动态请求送给PHP程序

. PHP如果可以处理,会将处理结果直接通过fastcgi返回给nginx程序;如果不可以处理,还会请求后端数据库,最终再把处理结果返回给nginx

 

1.2 LNMP MySQL数据库

1.2.1 MySQL数据库介绍

MySQL是一种关系型数据库管理软件,关系型数据库的特点是将数据保存在不同的二维表中,并且将这些表放入不同的数据库中,而不是把所有数据统一放在一个大仓库里,这样的设计增加了MySQL的读取速度,灵活性和可管理性也得到了很大提高。访问及管理MySQL数据库的最常用标准化语言为SQL结构化查询语言。

 

1.2.2 MySQL的优点

1、性能卓越、服务稳定,很少出现异常宕机。

2、开放源代码且无版权制约,自主性强、使用成本低。

3、历史悠久,社区及用户非常活跃。

4、软件体积小,安装使用简单,并且易于维护,安装及维护成本低。

5、支特多种操作系统,提供多种API接口,支持多种开发语言,特别对流行的PHP语言无缝支持。

 

1.2.3 安装MySQL数据库

安装方法:

     yum安装    #<=====安装简单,速度快,但是没法定制安装。

     编译安装    #<======可以定制安装,但是安装时间较长。

     二进制安装方法(绿色软件安装方法)  #<=====解压软件简单配置后就可以使用,不用安装,速度较快。

 

安装部署(二进制安装方法):

第一个里程碑:下载mysql程序包,上传到系统中相应目录下

最新版链接地址:

ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz

 

第二个里程碑:解压软件程序

cd /server/tools

tar xf   mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz

 

第三个里程碑:将解压后的程序目录移动到/application/目录中,创建软连接

mv mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34

ln -s /application/mysql-5.6.34/   /application/mysql

 

第四个里程碑:创建数据目录管理用户

useradd -M -s /sbin/nologin mysql       --- 用于管理mysql数据目录

chown -R mysql.mysql   /application/mysql/data/

 

PS:以上步骤完成,表示数据库软件安装完毕

第五个里程碑:初始化数据库程序

#1. 确认软件安装在哪里

#2. 确认数据存放在哪里

#3. 确认MySQL使用的用户谁?

/application/mysql/scripts/mysql_install_db   --basedir=/application/mysql --datadir=/application/mysql/data   --user=mysql       #<=======初始化数据库

============================================================================

To start mysqld at boot time you have to   copy

support-files/mysql.server to the right   place for your system

mysql启动脚本   默认放在support-files/mysql.server 

 

记得给MySQL设置个密码

PLEASE REMEMBER TO SET A PASSWORD FOR THE   MySQL root USER !

To do so, start the server, then issue   the following commands:

 

mysqladmin   -uroot password "oldboy123"  #<=====MySQLroot用户设置密码‘oldboy123

 

第六个里程碑:配置服务启动脚本,并且进行授权

cp   /application/mysql/support-files/mysql.server    /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

sed -i 's#/usr/local/mysql#/application/mysql#g'   /application/mysql/bin/mysqld_safe /etc/init.d/mysqld

PS/application/mysql   是你安装数据库的路径

第七个里程碑:生成mysql服务配置文件

cp   /application/mysql/support-files/my-default.cnf /etc/my.cnf

 

第八个里程碑:启动mysql服务

/etc/init.d/mysqld start

 

 

1.2.4 配置MySQL数据库

设置mysql服务开机自启动:

###加入开机自启动

 chkconfig --add mysqld

 chkconfig mysqld on

 

数据库基础操作:

##########################################################################################################

show databases;                <--- 查询默认的数据库信息

create database oldboy;        <---创建新的数据库

drop database oldboy;          <---删除存在的数据库

use mysql;                     <--- 表示选择使用一个数据库,相当于cd进入一个数据库

show tables                  <---查看数据库中表信息

select database();             <--- 表示查看当前所在数据库,类似于pwd命令的功能

select user();                 <--- 查看当前登录数据库的用户,类似于whoami命令

                                    并且mysql还可以限制指定用户可以从哪里进行连接登录数据库

select * from userG;          <---查看user表中所有信息,并且纵行显示

select user,host from user;         ---查看user表中指定信息,并且横行显示

select user,host from mysql.user;   ---查看可以登录mysql数据库的目录,以及都可以从哪里进行管理mysql数据库

grant all on *.* to [email protected]'host'   identified by 'oldboy123';             ---创建用户

grant all on *.* to [email protected]'localhost'   identified by 'oldboy123';   ---创建用户(大写用户)

drop user 'user'@'host';

delete from mysql.user where   user='oldboy' and host='localhost';

flush privileges                  --- 刷新权限

例如:

#创建数据库

create database wordpress;

 

1.3 PHP 安装(处理动态请求)

1.3.1 获取PHP软件包

1,我们可以使用wget引方式下载PHP软件包,也可以下载到本地计算机,再上传到Linux

2,Linux下的下载命令为:(下载到/server/tools

wget   http://cn.php.net/get/php-5.3.27.tar.gz/from/cn2.php.net/mirror

wget http://cn2.php.net/get/php-5.3.27.tar.gz/from/this/mirror

 

1.3.2 解压配置PHP

解压:

cd /server/tools

tar xf php-5.5.32.tar.gz

 

1.3.3 解决PHP软件的依赖关系

需要提前配置好epel

yum install zlib-devel libxml2-devel libjpeg-devel   libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel   libcurl-devel libxslt-devel libxslt-devel -y

libiconv软件安装(编译安装)---字符集转换库(默认可以不进行安装了!!!)

cd /server/tools

wget   http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

tar zxf libiconv-1.14.tar.gz

cd libiconv-1.14

./configure --prefix=/usr/local/libiconv

make

make install

也可以yum安装:

yum -y install libmcrypt-devel mhash   mcrypt

rpm -qa libmcrypt-devel mhash mcrypt

 

1.3.4 编译安装PHP

cd /server/tools/php-5.5.32

./configure

--prefix=/application/php-5.5.32

--with-mysql=/application/mysql/

--with-pdo-mysql=mysqlnd

--with-iconv-dir=/usr/local/libiconv

--with-freetype-dir

--with-jpeg-dir

--with-png-dir

--with-zlib

--with-libxml-dir=/usr

--enable-xml

--disable-rpath

--enable-bcmath

--enable-shmop

--enable-sysvsem

--enable-inline-optimization

--with-curl

--enable-mbregex

--enable-fpm

--enable-mbstring

--with-mcrypt

--with-gd

--enable-gd-native-ttf

--with-openssl

--with-mhash

--enable-pcntl

--enable-sockets

--with-xmlrpc

--enable-soap

--enable-short-tags

--enable-static

--with-xsl

--with-fpm-user=www

--with-fpm-group=www

--enable-ftp

--enable-opcache=no

说明:LNMP架构部署时,如果mysql服务和web服务不在一台主机上,php配置参数需要进行调整

         --with-mysql=/application/mysql/  =>    --with-mysql=mysqlnd

 

      #Generating files

      #configure: creating ./config.status

      #creating main/internal_functions.c

      #creating main/internal_functions_cli.c

      #+--------------------------------------------------------------------+

      #| License:                                                             |

      #| This software is subject to the PHP License, available in this     |

      #| distribution in the file LICENSE.    By continuing this installation |

      #| process, you are bound by the terms of this license agreement.     |

      #| If you do not agree with the terms of this license, you must abort   |

      #| the installation process at this point.                            |

      #+--------------------------------------------------------------------+

      #

      #Thank you for using PHP.

     

       ##防错(以下信息可以不进行配置了)

      ln -s /application/mysql/lib/libmysqlclient.so.18  /usr/lib64/

touch   ext/phar/phar.phar

make

make install

了解FastCGI

PHP软件程序创建软链接

ln -s /application/php-5.5.32/   /application/php

配置php解析文件/配置php-fpm配置文件

cd /server/tools/php-5.5.32

ll php.ini*

-rw-r--r--. 1 1001 1001 69236 2016-02-02   21:33 php.ini-development

-rw-r--r--. 1 1001 1001 69266 2016-02-02   21:33 php.ini-production

(php.ini-developments是开发人员调试用配置文件,php.ini-production是生产常见所有配置文件)

cp php.ini-production   /application/php/lib/php.ini   --- 相当于程序主配置文件

php.ini-production php.ini-development 文件区别关系对比

扩展:文件比较命令   diff zdiff vimdiff windows上的文件比较

cd /application/php/etc/

cp php-fpm.conf.default php-fpm.conf

 

# 编译安装PHP时,若配置未正确指定PHP进程用户信息,可以修改PHP文件进行调整

# sed -i 's#user = www#user =   nginx#g;s#group = www#group = nginx#g'   /application/php-5.5.32/etc/php-fpm.conf

启动php-fpm程序

/application/php/sbin/php-fpm

lsof -i :9000                    <--- 确认php 9000端口是否正确启动

ps -ef|grep php-fpm

 

1.3.5 测试nginx软件与PHP软件建立连接关系

nginx配置文件添加配置信息

 location ~* .*.(php|php5)?$ {

      fastcgi_pass  127.0.0.1:9000;

      fastcgi_index index.php;

      include fastcgi.conf;

 }

echo '<?php phpinfo(); ?>'        >/application/nginx/html/blog/test_info.php

然后浏览访问http://blog.etiantian.org/test_info.php是否 会有如下页面

  技术分享图片

 

1.3.6 测试php软件与mysql软件建立连接关系

php程序代码来完成数据库连接建立

vim   /application/nginx/html/blog/test_mysql.php

 

<?php

//$link_id=mysql_connect('主机名','用户','密码');

//mysql -u用户 -p密码 -h 主机

$link_id=mysql_connect('localhost','wordpress','oldboy123')   or mysql_error();

if($link_id){

             echo "mysql successful by   oldboy ! ";

            }else{

             echo mysql_error();

            }

?>

出现如下内容即为正常

技术分享图片

至此:LNMP架构环境部署完成

 

1.4 Wordpress博客站点部署

1.4.1 修改nginx配置文件

修改nginx配置文件,使nginx程序与php程序建立联系

vim /application/nginx /conf/extra/blog.conf

server {

          listen       80;

          server_name  blog.etiantian.org;

          root   html/blog;

          index  index.php index.html   index.htm;

              location   ~* .*.(php|php5)?$ {

            fastcgi_pass  127.0.0.1:9000;

            fastcgi_index index.php;

            include fastcgi.conf;

          }

}           

#说明:利用nginxlocation区块实现动态请求与静态请求的分别处理

编写完成后重启NGINX服务  nginx -s reload

 

1.4.2 下载WordPress博客程序

英文官网:https://www.wordpress.org/         

wget   https://cn.wordpress.org/wordpress-4.5.1-zh_CN.tar.gz

 

1.4.3 移动WordPress程序到blog站点目录

tar xf wordpress-4.5.1-zh_CN.tar.gz  ?===解压程序包

mv wordpress/*   /application/nginx/html/blog/   ?====移动到blog站点目录下

chown -R www.www /application/nginx/html/blog/   ?===将程序授权给www用户

注意:确认hosts文件进行了解析,然后浏览器页面进行wordpress部署

       vim   wp-config.php  可以修改wordpress上的数据库连接参数信息

 

1.4.4 WordPress博客站点数据库迁移

 

0) 重复上面创建数据库的步骤

      

迁移数据库:利用数据库备份命令(mysql mysqladmin mysqldump

1   备份数据库数据库信息

      mysqldump -uroot -poldboy123 --all-databases >/tmp/bak.sql

      ll /tmp/bak.sql -h

      scp /tmp/bak.sql 172.16.1.51:/tmp/

 

2   恢复数据库数据库信息       

      ##db01

      mysql -uroot -poldboy123 </tmp/bak.sql

      ###db01添加新的用户

      grant all on wordpress.* to [email protected]'172.16.1.0/255.255.255.0'   identified by 'oldboy123';

      flush privileges;

      mysql -uwordpress -poldboy123 -h 172.16.1.51

 

3   数据库迁移完毕,修改网站连接数据库的配置文件

      mysql -uwordpress -poldboy123 -h 172.16.1.51  <-- 修改配置文件之前,先测试网站web服务器与迁移后的数据库连通性

       vim   wp-config.php      <-- 修改wordpress上的数据库连接参数信息

       /**   MySQL主机 */

       define('DB_HOST','172.16.1.51')     <-- 修改连接的主机信息,将localhost修改为172.16.1.51

       说明:web服务器数据库此时可以关闭了

 

4)停止nginx服务器上MySQL服务


以上是关于LNMP架构的主要内容,如果未能解决你的问题,请参考以下文章

LNMP源码编译安装及一键部署LNMP架构

LNMP架构部署!

LNMP架构 安装PHP

LNMP架构的搭建

LNMP架构

LNMP基础架构