目录
一:LNMP架构的部署(理论)1.1:LNMP架构概述1.2:MySQL安装配置1.3:PHP解析环境的安装1.4:配置Ngnx支持PHP环境
二、Nginx服务搭建三、搭建mysql数据库3.1 安装mysql环境依赖包3.2 cmake配置和编译安装3.3 设置/usr/local/mysql目录的权限3.4 编辑配置文件3.5 设置环境变量3.6 初始化数据库3.7 开启数据库并检查状态3.8 设置mysql密码并登录数据库
四、PHP编译安装4.1 安装PHP的环境包4.2 编译安装4.3 配置PHP的三个配置文件4.4 配置及优化FPM模块4.5 创建软链接4.6 编辑,让nginx支持PHP功能4.7 测试数据库工作是否正常
■
LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python
■LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构
■Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等
■Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器
■MySQL是一个小型关系型数据库管理系统
■PHP是一种在服务器端执行的嵌入HTML文档的脚本语言
■这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统
一:LNMP架构的部署(理论)
1.1:LNMP架构概述
■LNMP平台就是 Linux、 Ngnix、 MySQL、PHP的组合架构,需要 Linux服务器、MySQL数据库、PHP解析环境 ■Ngnix特长:高并发,低资源,处理静态网络访问请求非常强 ■Apache:静态处理和动态处理都可以做,更适合做动态处理 ■Nginx将动态资源请求交给PHP当中的fpm处理动态请求 ■PHP主配置文件:php.ini ■Nginx将动态资源分配给FPM或Apache
1.2:MySQL安装配置
■为了与 Nginx、PHP环境保持一致,此处选择采用源代码编译的方式安装 My SQL组件 ■MySQL部署的方法 ■编译安装 MySQL ■优化调整初始化数据库 ■启动mysq服务并设置root数据库账号的密码
1.3:PHP解析环境的安装
■配置网页动静分离,解析PHP,有两种方法可以选择 ●使用PHP的FPM模块 ●将访问PHP页面的Web请求转交给 Apache服务器去处理 ■较新版本的PHP已经自带FPM模块,用来对PHP解析实例进行管理、优化解析效率 ●FastCG将 Http Server和动态脚本语言分离开 ●Nginx专门处理静态请求,转发动态请求 ●PHP FPM专门解析PHP动态请求 ●单服务器的LNMP架构通常使用FPM的方式来解析PHP
■PHP编译安装步骤
**●编译安装PHP ●编译选项时添加"- enable-fpm”以启用此模块 ●安装后的调整,主要是配置文件的建立与相应命令工具的路径优化
1.4:配置Ngnx支持PHP环境
■调用本机的php-fpm进程配置方法 ●建立FPM配置文件php- fpm. conf,修改配置选项,如:PD文件运行用户、服务进程数等 ●启动php-pm进程 ●在Ngnx的配置文件中的 serve}配置段配置将PHP的网页请求转给FPM模块处理 ●在Ngnx的配置文件中的 Server{}配置段配置将PHP的网页请求转给FPM模块处理
二、Nginx服务搭建
注:详细过程在上一篇文章中已经详细描述,在这里就不做详细流程啦,请参考上篇博文,里面还包含了Nginx的访问状态统计部署过程以及Nginx的访问控制(基于授权的访问控制、基于客户端的访问控制、基于域名的虚拟Web主机、基于端口的虚拟web主机、基于IP的虚拟web主机)
三、搭建mysql数据库
3.1 安装mysql环境依赖包
[root@localhost ~
]
> ncurses \
'//字符终端的包,方便终端操作'
> ncurses-devel \
> bison \
'//函数库'
> cmake
'//没有configure,使用cmake'
[root@localhost ~
]
'//创建用户'
3.2 cmake配置和编译安装
'//将所需压缩包传入/opt目录下'
[root@localhost ~
]
[root@localhost opt
]
[root@localhost opt
]
[root@localhost mysql-5.7.20
]
> -DCMAKE_INSTALL_PREFIX
=/usr/local/mysql \
'//pid文件位置'
> -DMYSQL_UNIX_ADDR
=/usr/local/mysql/mysql.sock \
'//sock;通讯文件,连接数据库,通讯协议的载体'
> -DSYSCONFDIR
=/etc \
'//配置目录指向etc'
> -DSYSTEMD_PID_DIR
=/usr/local/mysql \
> -DDEFAULT_CHARSET
=utf8 \
'//此行和下一行为字符集相关'
> -DDEFAULT_COLLATION
=utf8_general_ci \
> -DWITH_INNOBASE_STORAGE_ENGINE
=1 \
'//此行和下三行为存储引擎'
> -DWITH_ARCHIVE_STORAGE_ENGINE
=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE
=1 \
> -DWITH_PERFSCHEMA_STORAGE_ENGINE
=1 \
> -DMYSQL_DATADIR
=/usr/local/mysql/data \
'//指定存放位置'
> -DWITH_BOOST
=boost \
'//指定boost位置'
> -DWITH_SYSTEMD
=1
'//守护进程'
[root@localhost mysql-5.7.20
]
'//-j6指定处理的核心数,最大不能超过本身核心数'
[root@localhost mysql-5.7.20
]
3.3 设置/usr/local/mysql目录的权限
[root@localhost mysql-5.7.20
]
3.4 编辑配置文件
'//设置/usr/local/mysql目录的权限'
[root@localhost mysql-5.7.20
]
[root@localhost etc
]
'//将原文删除,添加以下内容'
[client
]
port
= 3306
default-character-set
=utf8
socket
= /usr/local/mysql/mysql.sock
[mysql
]
port
= 3306
default-character-set
=utf8
socket
= /usr/local/mysql/mysql.sock
[mysqld
]
user
= mysql
basedir
= /usr/local/mysql
datadir
= /usr/local/mysql/data
port
= 3306
character_set_server
=utf8
pid-file
= /usr/local/mysql/mysqld.pid
socket
= /usr/local/mysql/mysql.sock
server-id
= 1
sql_mode
=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
3.5 设置环境变量
[root@localhost etc
]
[root@localhost ~
]
[root@localhost ~
]
[root@localhost ~
]
3.6 初始化数据库
[root@localhost ~
]
bin/mysqld \
--initialize-insecure \
'//证书检验'
--user
=mysql \
'//用户mysql'
--basedir
=/usr/local/mysql \
'//基本目录'
--datadir
=/usr/local/mysql/data
'//数据存放目录'
[root@localhost mysql
]
3.7 开启数据库并检查状态
[root@localhost mysql
]
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
[root@localhost mysql
]
[root@localhost mysql
]
[root@localhost mysql
]
tcp6 0 0 :::3306 :::* LISTEN 92257/mysqld
3.8 设置mysql密码并登录数据库
[root@localhost mysql
]
'//刚开始没密码是空的直接回车,然后输入密码Abc123,再次确认密码'
Enter password:
New password:
Confirm new password:
Warning: Since password will be sent to server
in plain text, use ssl connection to ensure password safety.
'//密码设置成功'
[root@localhost mysql
]
'//输入密码,即可登录到数据库'
. . . . . . . . . . . . . .
mysql
>
四、PHP编译安装
4.1 安装PHP的环境包
[root@localhost ~
]
libjpeg \
'//支持截图格式的图片'
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
'//支持字体'
libxml2 \
'//支持xml格式,2代表第二个版本'
libxml2-devel \
zlib zlib-devel \
'//支持压缩功能'
curl curl-devel \
'//资源定位'
openssl openssl-devel
'//安全,证书身份验证'
4.2 编译安装
'//将安装包传入/opt目录下'
[root@localhost opt
]
[root@localhost opt
]
[root@localhost opt
]
[root@localhost php-7.1.10/
]
--prefix
=/usr/local/php \
'//安装路径'
--with-mysql-sock
=/usr/local/mysql/mysql.sock \
'//通讯机制,连接数据库'
--with-mysqli \
'//关联mysql'
--with-zlib \
'//支持php函数库'
--with-curl \
--with-gd \
'//gd库,处理图片、图像,php处理图形扩展库'
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
'//字体'
--with-openssl \
'//身份验证'
--enable-fpm \
--enable-mbstring \
'//身份验证'
--enable-xml \
--enable-session \
'//会话'
--enable-ftp \
--enable-pdo \
'//连接数据库驱动'
--enable-tokenizer \
'//身份验证令牌'
--enable-zip
'//支持zip压缩'
[root@localhost php-7.1.10/
]
[root@localhost php-7.1.10/
]
4.3 配置PHP的三个配置文件
'//php有三个配置文件 php.ini核心配置文件 php-fpm.conf进程服务配置文件www.conf 扩展配置文件'
[root@localhost php-7.1.10/
]
[root@localhost php-7.1.10/
]
'//找到以下两行的位置,修改这两行'
mysqli.default_socket
= /usr/local/mysql/mysql.sock
date.timezone
= Asia/Shanghai
'//找到后,前方的;注释要去掉'
[root@localhost php-7.1.10
]
'//验证安装的模块'
4.4 配置及优化FPM模块
[root@localhost php-7.1.10
]
[root@localhost etc
]
[root@localhost etc
]
[root@localhost php-fpm.d
]
[root@localhost php-fpm.d
]
[root@localhost etc
]
pid
= run/php-fpm.pid
'//将;去掉'
;user
= nginx
;group
= nginx
4.5 创建软链接
[root@localhost etc
]
[root@localhost etc
]
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 99975/php-fpm: mast
[root@localhost etc
]
[root@localhost etc
]
4.6 编辑,让nginx支持PHP功能
[root@localhost etc
]
location ~ \.php$
{
root html
;
fastcgi_pass 127.0.0.1:9000
;
fastcgi_index index.php
;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html
$fastcgi_script_name;
include fastcgi_params
;
} '//将;去掉,用/usr/local/nginx/html替换原来的路径'
[root@localhost etc
]
<?php
phpinfo
();
?
>
[root@localhost etc
]
'//重启nginx'
'//在windows的浏览器中输入http://20.0.0.11/index.php,也可以输入http://www.51xit.top/index.php测试'
4.7 测试数据库工作是否正常
[root@localhost ~
]
'//输入密码Abc123'
CREATE DATABASE bbs
;
GRANT all ON bbs.* TO
'bbsadm'@
'%' IDENTIFIED BY
'admin123';
GRANT all ON bbs.* TO
'bbsadm'@
'localhost' IDENTIFIED BY
'admin123';
flush privileges
;
'//最后exit退出'
[root@localhost ~
]
'//将之前的内容删除'
<?php
$link=mysqli_connect
('20.0.0.11',
'bbsadm',
'admin123');
if
($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?
>
[root@localhost ~
]
'//重启'
'//如果输入的是以下内容,在网页测试结果如下图'
[root@localhost ~
]
<?php
$link=mysqli_connect
('20.0.0.21',
'bbsadm',
'admin123'); '//网址不对'
if
($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?
>
[root@localhost ~
]
'//重启'