LNMP架构

1.1

1.1.1 LNMP介绍

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

Linux、Apache、MySQL、PHP),近几年随着Nginx   Web服务的逐渐流行,又出现了

新的Web服务环境组合——LNMP或LEMP,其中LNMP为Linux、Nginx、MySQL、

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部署流程介绍


第一步:安装软件服务

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

nginx和php结合

php和mysql结合

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

第四步:代码上线(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 user\G;          <---查看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 !\n";

}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;

}

}

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


编写完成后重启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服务

原文地址:http://blog.51cto.com/zhuzhiwei/2136096

时间: 2024-11-06 14:30:00

LNMP架构的相关文章

linux运维、架构之路-Lnmp架构部署

一.Lnmp架构原理 二. Lnmp架构软件安装 1.Nginx安装脚本 #!/bin/bash useradd -s /sbin/nologin -M www mkdir -p /server/tools/ cd /server/tools/ wget http://nginx.org/download/nginx-1.10.3.tar.gz tar xf nginx-1.10.3.tar.gz yum install pcre-devel openssl-devel -y cd /home/

运维基本技能之--搭建LNMP架构

Nginx的介绍  Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X", 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP/FTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过五年半了.Igor Sysoev在建立的项目时,使用基于BSD许可.自Nginx 发布以来,Nginx 已经因为它的稳定性.丰富的功能集.示例配置

puppet 搭建lnmp架构

pupppet 搭建lnmp架构: [[email protected] puppet]# tree modules/ modules/ |-- httpd |   |-- files |   |   `-- httpd.conf |   `-- manifests |       |-- config.pp |       |-- init.pp |       |-- install.pp |       `-- service.pp |-- mysqld |   |-- files |  

LNMP架构应用实战——Nginx配置虚拟主机

LNMP架构应用实战--Nginx配置虚拟主机        前面介绍了nginx服务的安装与配置文件,今天介绍下它的另一种实用配置--"虚拟主机",每个虚拟主机可以是一个独立的网站,可以具有独立的域名,同一台服务器上的不同的虚拟主机之间是独立的,用户访问不同虚拟主机如同访问不同的服务器一样,因此它不需要为一个单独的WEB站点提供单独一个nginx服务器和一个单独的nginx进程 1.nginx虚拟主机简单介绍 同apache服务一样,它也有三种不同的虚拟主机,基于域名的虚拟主机.基于

LNMP架构应用实战——Nginx服务配置文件介绍

LNMP架构应用实战--Nginx服务配置文件介绍 nginx的配置文件比较简单,但功能相当强大,可以自由灵活的进行相关配置,因此,还是了解下其配置文件的一此信息 1.Nginx服务目录结构介绍 安装完成后,在安装路径下就会有Nginx目录信息 [[email protected] application]# tree nginx nginx +-- client_body_temp +-- conf          #nginx服务配置文件目录 |   +-- fastcgi.conf  

Lnmp架构之PHP

Lnmp架构搭建+创建Discuz论坛 PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写.PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用. PHP 独特的语法混合了C.Java.Perl 以及 PHP 自创新的语法.它可以比 CGI 或者 Perl 更快速的执行动态网页. LNMP的简介: L

Lnmp架构之MYSQL

Lnmp架构之MYSQL:关系型数据库管理系统 MySQL 是一个关系型数据库,由瑞典MySQL AB 公司开发,目前属于Oracle旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一.MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MyS

【中级篇】Linux下部署LNMP架构及应用

部署LNMP架构及应用 1.          实验需求: 1)     搭建Nginx 2) 构建PHP运行环境 3) 搭建MySQL 数据库 2.          实验环境: Linux服务器系统版本:Red Hat Enterprise Linux 6.5  IP:192.168.10.30 WIN7系统客户机: IP: 192.168.10.1 3.      实验步骤: 基本安装操作: 1.搭建Nginx 配置: 这里要把光盘挂载到yum源里 再次执行配置的参数: 这时可能还会有报错

Lnmp架构部署动态网络环境

下面将接着上篇,继续介绍Lnmp架构部署动态网络环境 Lnmp 架构大致通过以下可以部署动态网站环境:Lnmp=linux/windows/unix +apache/nginx+mysql/pgsql/oracle+php/jsp/xml本章节将从 Linux 系统的软件安装方式讲起,带领读者分辨 RPM 软件包与源码安装的区别.并能够理解它们的优缺点.Nginx 是一款相当优秀的用于部署动态网站的服务程序,Nginx 具有不错的稳定性.丰富的功能以及占用较少的系统资源等独特特性.通过部署 Li

[转]专访企业QQ SaaS团队,谈企业级LNMP架构设计

FROM : http://www.csdn.net/article/2014-08-20/2821302-interview-tencent-b-qq-shuai-wang 对比IaaS和PaaS,SaaS得到的关注显然要少一些.究其根本,不仅因为SaaS关注的是功能方面的探索,更偏向于某个领域或层面的实际应用,还归结于相较前两者,软件的云化已基本趋于成熟,些许突破并不能带来产业上的变革.然而,较少的关注并不意味着缺乏明星产品:放眼国外,企业级SaaS服务已成为许多公司的一项重要收益来源,比如