31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现

1.LNMP架构简介:

(1)LNMP的组成部分

LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第1张图片

(2)LNMP的工作原理

首先,浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。


client -> nginx -> php(php-fpm) -> mysql_connect()/mysql_select() -> mysql(redis)

nginx:有缓存功能
php:动态资源交给php
mysql_connect():数据库连接
mysql_select():数据库查询是否存在
mysql:关系型数据库


2.实验环境

使用rhel6.5版本虚拟机,虚拟机配置cpu-2个,内存大小-2048,硬盘大小-20G

3.Php的配置安装

PHP简单介绍:

一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快

(1)代理机server1:下载软件php-5.6.35.tar.bz2,并解压安装

tar jxf php-5.6.35.tar.bz2
cd php-5.6.35切换目录,进行编译
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第2张图片

解决编译时需要的依赖软件,并开始安装(需要libmcrypt两个安装包)
yum install -y gcc pcre-devel zlib-devel libxml2-devel openssl-devel libcurl-devel libjpeg-turbo-devel.x86_64 0:1.2.1-1.el6 libpng-devel-1.2.49-1.el6_2.x86_64 freetype-devel.x86_64 gmp-devel-4.3.1-7.el6_2.2.x86_64 openldap-devel-2.4.23-32.el6_4.1.x86_64 libmcrypt.x86_64 libmcrypt-devel.x86_64 net-snmp-devel
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第3张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第4张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第5张图片

编译
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第6张图片

安装
make && make install
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第7张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第8张图片

(2)代理机server1:安装完成后的Php设置:

创建用户

useradd nginx
mkdir /usr/local/lnmp		#之前以建立过的则不需要再次建立

配置文件的复制

cd /usr/local/lnmp/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf	#查看用户和用户组是否是nginx
	pid = run/php-fpm.pid	#取消注释

31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第9张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第10张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第11张图片

主配置文件的复制
cd php-5.6.35
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
vim /usr/local/lnmp/php/etc/php.ini #修改时区,主配置文件
date.timezone = Asia/Shanghai
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第12张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第13张图片
启动脚本的复制
cd /root/php-5.6.35
cd php-5.6.35/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第14张图片
开启php
/etc/init.d/php-fpm start
netstat -tnlp #查看127.0.0.1:9000端口是否打开(回环接口:nginx通过内部接口访问php)< FastCGI = Fast Common Gateway Interface 接口>
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第15张图片
为使开启php方便,添加php环境变量

vim ~/.bash_profile	
	PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin
source ~/.bash_profile

31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第16张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第17张图片

4.Mysql的配置安装

(1)代理机server1:下载安装mysql和cmake
yum install -y cmake-2.8.12.2-4.el6.x86_64.rpm		#安装cmake
tar zxf mysql-boost-5.7.27.tar.gz	#解压mysql安装包
ls
cd mysql-5.7.27/		#进入解压目录
ls

31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第18张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第19张图片在编译过程中需要解决依赖性,并且在每次重新编译前都需要删除解压包目录下的CMakeCache.txt文件

yum install -y gcc-c++ ncurses-devel bison	#安装软件解决依赖性

#编译方法1:
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
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DEXTRA_CHARSETS=all
-DWITH_BOOST=boost/boost_1_59_0/
#编译方法2:
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 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0

make && make install	#安装

31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第20张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第21张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第22张图片

(2)代理机server1:配置mysql

启动脚本的复制

cd support-files/
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第23张图片

修改配置文件

cp /etc/my.cnf /etc/my.cnf.bak
cp my-default.cnf /etc/my.cnf
vim /etc/my.cnf
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第24张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第25张图片

修改用户和用户组,生成data目录

groupadd -g 27 mysql #当不进行编译,使用yum直接安装mysql时,生成的用户组id就为27
useradd -u 27 -g 27 mysql
chown mysql.mysql /usr/local/lnmp/mysql -R
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第26张图片

修改环境配置

vim ~/.bash_profile
	PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
source ~/.bash_profile	#使修改生效 

31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第27张图片
在这里插入图片描述

数据库初始化
mysqld --user=mysql --initialize (会生成一个密码)
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第28张图片

将安装目录的所有人改回为root(安全),将data目录的所有人改为mysql

chown root /usr/local/lnmp/mysql -R
chown mysql /usr/local/lnmp/mysql/data -R
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第29张图片

开启mysql,进行安全初始化

/etc/init.d/mysqld start
netstat -tnlp #3306端口开启
mysql_secure_installation #两次n,四次y(初始化时,data目录下必须为空)

5.Nginx的配置安装(nginx-1.16.0版本)

(1)下载编译安装nginx
tar zxf nginx-1.16.0.tar.gz
cd nginx-1.16.0
vim src/core/nginx.h
	#define NGINX_VER          "nginx"	#取消版本显示	
vim auto/cc/gcc	
	#CFLAGS="$CFLAGS -g"	#编译安装后的nginx内存占有量较小
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx	#编译(提前应安装pcre-devel---yum install -y pcre-devel)
make && make install	#安装

31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第30张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第31张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第32张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第33张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第34张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第35张图片

(2)安装nginx完成后的配置

修改配置文件

cd /usr/local/lnmp/nginx/
vim conf/nginx.conf
写入:
user  nginx nginx;

	location / {
            	root   html;
            	index index.php index.html index.htm;	#添加php默认发布页面	
        	}

        location ~ \.php$ {	#打开php配置
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }

31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第36张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第37张图片
31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第38张图片

建立软连接

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin
echo $PATH	#查看是否软链接添加成功

31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第39张图片

编辑php默认发布文件

cd html/
vim index.php	#写入php页面
	

31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第40张图片

开启nginx

/etc/init.d/mysqld start	#开启mysq

netstat -tnlp	#80端口,3306端口开启

31.企业级LNMP(Linux+Nginx+Mysql+Php)架构的部署实现_第41张图片

测试
浏览器输入:172.25.18.1 出现php页面

你可能感兴趣的:(企业项目实战,企业项目实战#-LNMP,markdown)