LNMP架构
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 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; } } #说明:利用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服务 |
以上是关于LNMP架构的主要内容,如果未能解决你的问题,请参考以下文章