12.1 LNMP架构介绍
12.2 MySQL安装
12.3/12.4 PHP安装
12.5 Nginx介绍
12.1 LNMP架构
LNMP其实是Linux
,Nginx
,MySQL
和PHP
的简写。他和LAMP不同的是,提供web服务的是Nginx,其中PHP独立作为一个服务存在于服务器中和数据库打交道,并取名为php-fpm
。Nginx处理静态文件时候比Apache更加出色,并且支持用户高并发。因此现在越来越多企业使用LNMP架构来组建。
工作流程:当用户使用浏览器来访问服务器 ,Nginx就会判断用户需要什么数据,假如用户要访问的是静态数据( 图片,js,css等)Nginx就会去存放静态文件的目录下把相应的数据反馈给用户,那用户要访问动态的数据 Nginx就是数据交给php-fpm服务来访问MySQL数据库,并让php-fpm服务把取出来的数据交给Nginx再返回给用户。
12.2 MySQL安装
假如之前安装过MySQL,直接把对应的路径的目录删除即可,我这里在另一台机器上安装。
步骤
1.进入/src/目录下并下载和解压MySQL的免编译的安装包
1 | [root@localhost ~]# cd /usr/local/src/ |
2.解压后的目录改名为mysql并放在/usr/local/下
1 | [root@localhost src]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql/ |
3.新建用户mysql和目录/data 并进入该目录下
1 | [root@localhost local]# cd mysql/ |
4.初始化
1 | [root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data |
5.从模版中复制配置文件并定义配置文件
1 | [root@localhost mysql]# cp support-files/my-default.cnf /etc/my.cnf |
support-files/my-default.cnf
是mysql的模版配置文件/etc/my.cnf
是mysql的配置文件 系统默认存在
也可以直接使用系统自带的my.cnf并把log-error
和pid-file
注释掉1
2
3[root@localhost mysql]# vim /etc/my.cnf
datadir=/data/
socket=/tmp/lmysql.sock
6.从模版中复制服务并定义配置文件
1 | [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld |
7.启动服务并添加开机启动
1 | [root@localhost mysql]# /etc/init.d/mysqld start |
12.3/12.4 PHP安装
由于在LNMP架构中,PHP作为一个独立的服务存在,并改名为php-fpm,他和Nginx没关系因此可以在安装玩MySQL后直接安装PHP,这里我安装的是PHP7
步骤
1.进入/src/目录下并下载和解压PHP7的安装包
1 | [root@localhost ~]# cd /usr/local/src/ |
2.进入PHP目录建立php-fpm用户并初始化
1 | [root@localhost src]# cd php-7.1.6 |
1 | [root@localhost php-7.1.6]# ./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl |
--enable-fpm
指定php-fpm服务的
错误
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
原因:缺少libmcrypt模块 需要重新安装 使用yum安装 可能是版本高的问题 因此手动安装编译此包
[root@localhost src]# wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
[root@localhost src]# tar -zxvf libmcrypt-2.5.7.tar.gz
[root@localhost src]# cd libmcrypt-2.5.7
[root@localhost libmcrypt-2.5.7]# ./configure
[root@localhost libmcrypt-2.5.7]# make
[root@localhost libmcrypt-2.5.7]# make install
3.编译和安装
1 | [root@localhost php-7.1.6]# make |
安装完成后可以进入php-fpm比较Apache的php目录多了个sbin和var目录1
2[root@localhost php-fpm]# ls
bin etc include lib php sbin var
sbin目录中php-fpm用来启动php-fpm服务1
2[root@localhost php-fpm]# ls sbin/
php-fpm
存放日志和PID的1
2[root@localhost php-fpm]# ls var/
log run
/usr/local/php-fpm/sbin/php-fpm -m
查看php-fpm模块情况/usr/local/php-fpm/sbin/php-fpm -i
查看php-fpm详细情况/usr/local/php-fpm/sbin/php-fpm -t
查看php-fpm语法是否正确
1 | [root@localhost php-fpm]# /usr/local/php-fpm/sbin/php-fpm -t ##没找到php-fpm.conf配置文件 |
4.复制配置文件php.ini到etc目录下
1 | [root@localhost php-fpm]# cd /usr/local/src/php-7.1.6 ##回去php包里 |
php.ini-development
是开发环境模版 php.ini-production
是生产环境模版 二者区别在于日志的地方不同
5.etc目录下配置php-fpm.conf配置文件
1 | [root@localhost php-7.1.6]# vim /usr/local/php-fpm/etc/php-fpm.conf |
etc目录下有个模版文件叫php-fpm.conf.default
这里我是直接新建php-fpm.conf
复制以下代码,也可以去下面网址下载 https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/php-fpm.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www]
listen = /tmp/php-fcgi.sock
listen.mode = 666
;listen = 127.0.0.1:9000
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
输入以上代码并保存。[www]
表示池名 pid
指定pid路径 error_log
指定错误日志路径 listen
监听的方式使用sock 可以使用tcp方式(127.0.0.1:9000)两者二选一 listen.mode
定义sock的权限为666 pm
指定进程的数量
6.添加php-fpm服务并设开机启动
1 | [root@localhost php-7.1.6]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm |
php-7.1.6/sapi/fpm/init.d.php-fpm
是php-fpm服务的模版
7.启动php-fpm服务
1 | [root@localhost php-7.1.6]# service php-fpm start |
12.5 Nginx介绍
Nginx近几年越来越受到企业的欢迎,许多企业使用Tomcat解析Java时都会使用Nginx来处理静态文件,主要原因是他处理静态文件的速度快。Nginx不尽小巧还可具有web服务、反向代理、负载均衡的功能。
Nginx著名分支,淘宝基于Nginx开发的Tengine,使用上和Nginx一致,服务名,配置文件名都一样,和Nginx的最大区别在于Tenging增加了一些定制化模块,在安全限速方面表现突出,另外它支持对js,css合并。
Nginx核心+lua相关的组件和模块组成了一个支持lua的高性能web容器openresty