LNMP架构(一)

一 LNMP架构介绍

在LNMP中,Nginx会将用户的动态请求交给php-fpm这个服务去处理,在处理静态文件方面Nginx比Apache性能快很多,原因是他们的底层设计的架构不一样,Nginx用户并发支持很大,可以上好几万,但Apache做不到

二 Mysql安装

    LNMP中mysql安装跟LAMPmysql安装是一样的,php安装会有一点区别,Nginx安装比Apache更简单一点

    在这里,因为之前LAMP安装了MySQL,因此需要先将MySQL删除掉,再重新安装

1、关闭MySQL服务

    首先查询mysql服务是否开启

    # ps aux |grep mysql

    查询到mysql服务尚未开启,可以直接进入下一步

2、删除MySQL

        首先删除MySQL的安装后的文件夹

        # rm -rf /usr/local/mysql

        然后删除MySQL的启动脚本

        # rm -rf /etc/init.d/mysqld

    

    另外/etc/my.cnf可以暂时保留,因为系统本来自带就有这个文件

3、切换到下载目录下

    # cd /usr/local/src/

4、下载

    # wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

5、解压

    #  tar xzvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

6、移动解压后的文件夹并修改文件名

    # mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql

    操作前应确保/usr/local/目录下没有mysql的文件夹,否则执行此命令后就不是修改文件名而是将解压后的文件放到/usr/local/mysql/目录下了,执行此命令后可以查看到/usr/local/mysql/目录下的子目录和子文件如下:

7、切换到mysql文件夹下

    # cd /usr/local/mysql

8、创建mysql用户和数据存放目录

    因为之前安装过一次,所以需要先将旧的目录文件删除

    # rm -rf /data/mysql

    # useradd mysql  //已有,可以不用创建

    # mkdir /data/    //已有,可以不用创建

9、mysql 初始化

    目的是将mysql启动所需要的一些目录给生成

    # ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/

    出现两个OK就成功了,

10、拷贝并编辑配置文件

    # cp support-files/my-default.cnf /etc/my.cnf
    # vim /etc/my.cnf   //下图框中内容为修改后的路径

11、拷贝并编辑启动脚本

    # cp support-files/mysql.server /etc/init.d/mysqld

    # vim /etc/init.d/mysql   //下图为启动脚本中修改过的地方

12、启动MySQL服务

    # /etc/init.d/mysqld start

13、查看MySQL服务是否启动成功

   # ps aux |grep mysql    //下图表明mysql成功启动

14、将mysqld加入服务列表,并开机启动

    # chkconfig add mysqld   //将mysqld加入服务列表,加入后可以使用# service mysqld start 启动服务

    # chkconfig mysqld on  //使mysqld能开机启动

二 PHP安装

在LNMP中,php作为一个独立的模块,不需要像LAMP一样依赖Nginx,但php安装需要依赖mysql,下面的操作基础是建立在已经在LAMP时安装过php的基础上的,切换目录、下载、解压步骤省略

1、切换到解压后的php源码包下

    # cd /usr/local/src/php-5.6.30

2、清除编译

    # make clean     //因与LAMP有区别,因此先清除以前的编译后生成的文件删除

3、编译

    # ./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路径

下图是出现的错误及解决方法:

4、 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 查看相关东西

5、编辑配置文件

    我们来运行以下命令

    # /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

6、拷贝启动脚本

    # cp /usr/local/src/php-5.6.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

7、修改启动脚本权限

    # chmod 755 /etc/init.d/php-fpm

8、增加php-fpm用户

    # useradd  php-fpm

9、加入服务列表

    # chkconfig --add php-fpm

    加入后就可以使用# service php-fpm start 命令来启动php-fpm服务了

    我们再来查看下php-fpm服务是否启动成功

    # ps aux |grep php-fpm

    再查看下socket文件的权限

四 Nginx介绍

    nginx是俄国人开发的,官网是nginx.org,最开始apache特别流行,后来发现Nginx处理静态文件的能力特别快,因此Nginx开始逐渐流行起来,市场占有率虽然还没有apache高,但apache已经在走下坡路了,包括现在国内很多企业去建网站,一般都会选择使用Nginx,比如java开发的网站,可能会选择tomcat,用了tomcat后发现tomcat处理静态文件的能力不好,因此还需要加一层,这时就会选择Nginx;这块软件非常小巧,但功能非常强大,主要是扩展第三方模块的功能,在选择版本时尽量选择Nginx的稳定版,即stable版

猜你喜欢

转载自my.oschina.net/u/3746774/blog/1632458