一.LNMP架构介绍
LNMP:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
- Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
- Nginx是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP代理服务器。
- Mysql是一个小型关系型数据库管理系统。
- PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统
二.实验环境(rhel6.5版本)
主机环境:rhel6.5 selinux 和iptables 都必须是disabled状态
各主机信息
主机名 | IP | 服务 |
---|---|---|
server1 | 172.25.8.1 | nginx,mysql,php |
为了快速安装软件部署服务,建议server1 内存在4G 以上
三.LNMP架构的搭建
1.Nginx的源码编译安装及配置
(1)nginx 的源码编译安装
官网下载nginx 安装包并进行解压
编辑文件去掉nginx版本号(防止黑客攻击)和注释掉debug(日至内容太多)
安装编译过程需要的依赖包
配置编译环境
创建/usr/local/lnmp,便于管理lnmp
编译安装
(2)nginx 的相关配置
编辑配置文件
做软连接(方便直接以命令方式启动nginx)
添加nginx用户和组:因为在前面编译nginx时指定了nginx用户和nginx组。否则在下一步的检查语法环节会报错。
检查语法是否有错误
启动nginx,并查看80端口是否存在
2.Mysql数据库的源码编译安装及配置
安装之前先查看系统是否已经安装过mysql,如果安装过就应删除,避免对后续实验有所影响
(1)Mysql的源码编译安装
官网下载mysql数据包(mysql-boost-5.7.17.tar.gz)并解压
官网下载Mysql预编译工具包,并进行安装(cmake:它支持编译c++语言)
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)
安装预编译过程中的诸多依赖包
#bison可以安装,也可以不安装,不安装的话会有警告
进行预编译(创建预编译环境时需指定一些之后用得到的参数)
如果在cmake时报错,缺什么,补什么,但是在重新cmaek之前要删掉缓存(# rm -rf CMakeCache.txt)
各个参数意思:
[root@server1 mysql-5.7.17]# 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 \ #Unix socket文件路径
> -DWITH_MYISAM_STORAGE_ENGINE=1 \ #安装myisam存储引擎
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装innobase存储引擎
> -DDEFAULT_CHARSET=utf8 \ #utf8字符
> -DDEFAULT_COLLATION=utf8_general_ci \ #检验字符
> -DEXTRA_CHARSETS=all \ #安装所有扩展字符集
> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #安装archive存储引擎
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #安装blackhole存储引擎
> -DWITH_PARTITION_STORAGE_ENGINE=1 \ #安装数据库分区
> -DENABLED_LOCAL_INFILE=1 \ #允许从本地导入数据
> -DWITH_READLINE=1 \ #快捷键功能
> -DWITH_SSL=yes \ #支持 SSL
> -DMYSQL_TCP_PORT=3306 \ #MySQL监听端口
预编译
[root@server1 mysql-5.7.17]# 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 \ #Unix socket文件路径
> -DWITH_MYISAM_STORAGE_ENGINE=1 \ #安装myisam存储引擎
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装innobase存储引擎
> -DDEFAULT_CHARSET=utf8 \ #utf8字符
> -DDEFAULT_COLLATION=utf8_general_ci \ #检验字符
> -DEXTRA_CHARSETS=all \ #安装所有扩展字符集
> -DWITH_BOOST=boost/boost_1_59_0
编译与安装:make && make install
编译成功后在/usr/local/lnmp目录下生成mysql目录
(2)Mysql的相关配置
拷贝没有mysql服务启动脚本到/etc/init.d下,并给与可执行权限
拷贝mysql配置文件到/etc下并进行修改
#备份/etc/my.cnf文件
#用my-default.cnf文件覆盖/etc/my.cnf文件
#编辑mysql的配置文件
更改环境变量并刷新
#按两次tab键补全,来验证mysql环境变量配置成功
创建mysql用户和组
修改权限,创建/usr/local/lnmp/mysql/data,并更改该目录用户和所有组为mysql
获取数据库登陆密码
#执行命令后,密码在最后一行,一定要记住这个密码
开启数据库,安全初始化,更改登陆密码(不进行安全初始化,不能在数据库进行操作)
#更改密码时,就是刚刚生成的密码,其他默认回车就可以
查看mysql的端口(3306)
登陆测试
3.Php的源码编译安装及配置
(1)Php的源码编译安装
官网下载php安装包并解压
安装编译需要的依赖包
[root@server1 ~]# yum install libxml2-devel -y
[root@server1 ~]# yum install openssl-devel -y
[root@server1 ~]# yum install libcurl-devel -y
[root@server1 ~]# yum whatprovides */jpeglib.h
[root@server1 ~]# yum install libjpeg-turbo-devel-1.2.1-1.el6.x86_64 -y
[root@server1 ~]# yum whatprovides */png.h
[root@server1 ~]# yum install libpng-devel-1.2.49-1.el6_2.x86_64 -y
[root@server1 ~]# yum install freetype-devel -y
[root@server1 ~]# yum whatprovides */gmp.h
[root@server1 ~]# yum install gmp-devel-4.3.1-7.el6_2.2.x86_64 -y
libmcrypt-2.5.8-9.el6.x86_64.rpm #这两个包需要从官网上下
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
[root@server1 ~]# yum install libmcrypt-* -y
[root@server1 ~]# yum install net-snmp-devel -y
配置编译环境
缺什么补什么
yum provides */不知道的包
再进行安装
参数意思:
[root@server1 ~]# cd php-5.6.35
[root@server1 php-5.6.35]# ./configure --prefix=/usr/local/lnmp/php \ #php安装的位置
> --with-config-file-path=/usr/local/lnmp/php/etc \ #php配置文件所在的位置
> --with-openssl \ #支持openssl加密
> --with-snmp \ #支持与mysql所数据库之间建立联系
> --with-gd \
> --with-zlib \
> --with-curl \
> --with-libxml-dir \ #支持libxml函数
> --with-png-dir \ #支持php处理图片的格式(png格式)
> --with-jpeg-dir \ #支持php处理图片的格式(jpeg格式)
> --with-freetype-dir \ #支持php处理图片的格式(freetype格式)
> --with-gmp \
> --with-gettext \
> --with-pear \
> --enable-mysqlnd \
> --with-mysql=mysqlnd \
> --with-mysqli=mysqlnd \
> --with-pdo-mysqlnd \
> -enable-inline-optimization \
> --enable-soap \
> --enable-ftp \
> --enable-sockets \
> --enable-mbstring \
> --enable-fpm \ #开启fpm模式(nginx等服务用的)
> --with-fpm-user=nginx \ #对php服务的限制通过nginx用户来实现
> --with-fpm-group=nginx \ #php以nginx用户组身份运行
> --with-mcrypt \ #提供了对多种算法的支持,主要用来实现加密等算法
> --with-mhash #加密算法
编译安装
#该过程需要的时间比较久,请耐心等待
(2)Php的相关配置
拷贝php启动脚本到/etc/init.d目录下,并给与执行权限
#给启动脚本加可执行的权限
添加nginx用户和组:因为在前面编译php时指定了nginx用户和nginx组。不过这一步在编译nginx时已经做了这步,所以这里不用再做这步
修改时区和pid
修改pid:因为上述的编译安装没有生成php-ftp.pid文件以供使用。所以要用下面的方案来生成php-fpm.pid文件
#拷贝文件。注意:这步是必须的,因为之后要在nginx服务的配置文件中进行相应的配置,使得nginx支持.conf结尾的文件
#值的注意的是必须将拷贝过来的文件的名字该为php.ini
#将时区改为亚洲上海
开启php.并查看9000(php)端口是否存在
测试:
1.网页输入172.25.8.1(搭建lnmp服务器ip),即可访问到nginx默认页面
2.检测是否支持php语言