LNMP架构(一)

一 LNMP架构介绍

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

二 Mysql安装

    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能开机启动

二 PHP安装

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

相关文章
相关标签/搜索