在LNMP中,Nginx会将用户的动态请求交给php-fpm这个服务去处理,在处理静态文件方面Nginx比Apache性能快不少,缘由是他们的底层设计的架构不同,Nginx用户并发支持很大,能够上好几万,但Apache作不到php
LNMP中mysql安装跟LAMPmysql安装是同样的,php安装会有一点区别,Nginx安装比Apache更简单一点java
在这里,由于以前LAMP安装了MySQL,所以须要先将MySQL删除掉,再从新安装mysql
一、关闭MySQL服务linux
首先查询mysql服务是否开启nginx
# ps aux |grep mysqlgit
查询到mysql服务还没有开启,能够直接进入下一步sql
二、删除MySQLapache
首先删除MySQL的安装后的文件夹vim
# rm -rf /usr/local/mysqlapi
而后删除MySQL的启动脚本
# rm -rf /etc/init.d/mysqld
另外/etc/my.cnf能够暂时保留,由于系统原本自带就有这个文件
三、切换到下载目录下
# cd /usr/local/src/
四、下载
# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
五、解压
# tar xzvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
六、移动解压后的文件夹并修改文件名
# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
操做前应确保/usr/local/目录下没有mysql的文件夹,不然执行此命令后就不是修改文件名而是将解压后的文件放到/usr/local/mysql/目录下了,执行此命令后能够查看到/usr/local/mysql/目录下的子目录和子文件以下:
七、切换到mysql文件夹下
# cd /usr/local/mysql
八、建立mysql用户和数据存放目录
由于以前安装过一次,因此须要先将旧的目录文件删除
# rm -rf /data/mysql
# useradd mysql //已有,能够不用建立
# mkdir /data/ //已有,能够不用建立
九、mysql 初始化
目的是将mysql启动所须要的一些目录给生成
# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/
出现两个OK就成功了,
十、拷贝并编辑配置文件
# cp support-files/my-default.cnf /etc/my.cnf
# vim /etc/my.cnf //下图框中内容为修改后的路径
十一、拷贝并编辑启动脚本
# cp support-files/mysql.server /etc/init.d/mysqld
# vim /etc/init.d/mysql //下图为启动脚本中修改过的地方
十二、启动MySQL服务
# /etc/init.d/mysqld start
1三、查看MySQL服务是否启动成功
# ps aux |grep mysql //下图代表mysql成功启动
1四、将mysqld加入服务列表,并开机启动
# chkconfig add mysqld //将mysqld加入服务列表,加入后可使用# service mysqld start 启动服务
# chkconfig mysqld on //使mysqld能开机启动
在LNMP中,php做为一个独立的模块,不须要像LAMP同样依赖Nginx,但php安装须要依赖mysql,下面的操做基础是创建在已经在LAMP时安装过php的基础上的,切换目录、下载、解压步骤省略
一、切换到解压后的php源码包下
# cd /usr/local/src/php-5.6.30
二、清除编译
# make clean //因与LAMP有区别,所以先清除之前的编译后生成的文件删除
三、编译
# ./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
以上编译参数跟LAMP编译参数大部分同样,其中
--prefix=/usr/local/php-fpm 指定路径
--with-config-file-path=/usr/local/php-fpm/etc 指定配置文件所在路径
--enable-fpm 这个参数必须加上,不然就不能启动php-fpm服务
--with-fpm-user=php-fpm 指定用户
--with-fpm-group=php-fpm 指定组
--with-mysql=/usr/local/mysql 指定mysql路径
--with-mysqli=/usr/local/mysql/bin/mysql_config 指定mysqli路径
--with-pdo-mysql=/usr/local/mysql 指定pdo路径
下图是出现的错误及解决方法:
四、 make && make install
# make && make install
安装完成后能够看到相比原来LAMP安装的php,这里多了两个子目录sbin 和var
而 /usr/local/php-fpm/sbin/目录下的php-fpm文件就是启动php-fpm服务的文件
/usr/local/php-fpm/var/目录下的log子目录是存放日志文件的,run子目录是存放进程的pid的
同时/usr/local/php-fpm/sbin/php-fpm 的选项-m -i -t均有效
也能够用/usr/local/php-fpm/bin/php 查看相关东西
五、编辑配置文件
咱们来运行如下命令
# /usr/local/php-fpm/sbin/php-fpm -t //用于测试php配置文件语法
提示没有/usr/local/php-fpm/etc/php-fpm.conf这个文件,这是由于咱们尚未拷贝编辑这个文件
咱们先来拷贝php.ini到编译时指定的路径中去
# cp /usr/local/src/php-5.6.30/php.ini-production /usr/local/php-fpm/etc/php.ini
php.ini分为production和development两个版本,development用于开发环境, production用于生产环境,他们区别在于错误日志这一块
再来编辑php-fpm的配置文件php-fpm.conf
# vim /usr/local/php-fpm/etc/php-fpm.conf
在此文件中加入如下内容(参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/php-fpm.conf)
[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=127.0.0.1:9000,通常都写这个IP,由于php-fpm通常是针对服务器内部使用的,也就是说Nginx和php一般都在一台机器上,他们之间通讯使用内部网络就能够了,port默认是9000;此处写法不一样,后续配置Nginx时,也就是告诉nginx去哪里找php时也是不一样的
listen.mode = 666 //当上面一条语句监听的是socket时,这条语句才会生效,用于定义socket文件的权限是666
user = php-fpm //用于定义php服务是由谁启动的
group = php-fpm
pm = dynamic //本行及后面以pm开头的行是关于进程的信息
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
六、拷贝启动脚本
# cp /usr/local/src/php-5.6.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
七、修改启动脚本权限
# chmod 755 /etc/init.d/php-fpm
八、增长php-fpm用户
# useradd php-fpm
九、加入服务列表
# chkconfig --add php-fpm
加入后就可使用# service php-fpm start 命令来启动php-fpm服务了
咱们再来查看下php-fpm服务是否启动成功
# ps aux |grep php-fpm
再查看下socket文件的权限
nginx是俄国人开发的,官网是nginx.org,最开始apache特别流行,后来发现Nginx处理静态文件的能力特别快,所以Nginx开始逐渐流行起来,市场占有率虽然尚未apache高,但apache已经在走下坡路了,包括如今国内不少企业去建网站,通常都会选择使用Nginx,好比java开发的网站,可能会选择tomcat,用了tomcat后发现tomcat处理静态文件的能力很差,所以还须要加一层,这时就会选择Nginx;这块软件很是小巧,但功能很是强大,主要是扩展第三方模块的功能,在选择版本时尽可能选择Nginx的稳定版,即stable版