LNMP架构介绍MySQL安装PHP安装 Nginx介绍

12.1 LNMP架构介绍
12.2 MySQL安装
12.3/12.4 PHP安装
12.5 Nginx介绍

扩展
Nginx为何比Apache Httpd高效:原理篇 http://www.toxingwang.com/linux-unix/linux-basic/1712.html
apache和nginx工做原理比较 http://www.server110.com/nginx/201402/6543.html
mod_php 和 mod_fastcgi以及php-fpm的比较 http://dwz.cn/1lwMSd
概念了解:CGI,FastCGI,PHP-CGI与PHP-FPMhttp://www.nowamagic.net/librarys/veda/detail/1319/https://www.awaimai.com/371.htmlphp

LNMP架构介绍目录概要

  • 和LAMP不一样的是,提供web服务的是Nginx
  • 而且php是做为一个独立服务存在的,这个服务叫作php-fpm
  • Nginx直接处理静态请求,动态请求会转发给php-fpm

输入图片说明

LNMP架构

  • LAMP和LNMP两个架构相似
    • 在LAMP架构中,PHP和Apache是一个总体,php解析是交给Apache来执行的,只不过须要加一个php的模块libphp.so
    • 在LNMP架构中,提供web服务的是Nginx,PHP会启动一个php-fpm服务,Nginx会把用户请求的php交给php-fpm服务去进行处理(用户数据与mysql的交互就是由php-fpm来作的,处理好的结果在高速Nginx,而后经过Nginx告诉用户的浏览器),用户的静态请求将由Nginx直接进行处理(Nginx在处理静态数据的性能上要比Apache快),
      • Nginx对静态为主的网站,处理用户并发会很大,速度也会快不少

输入图片说明

MySQL安装目录概要

  • cd /usr/local/src
  • wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
  • tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
  • mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
  • cd /usr/local/mysql
  • useradd mysql
  • mkdir /data/
  • ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
  • cp support-files/my-default.cnf /etc/my.cnf
  • cp support-files/mysql.server /etc/init.d/mysqld
  • vi /etc/init.d/mysqld
    • 定义basedir和datadir
  • /etc/init.d/mysqld start

搭建LNMP环境

LAMP架构下,而后搭建LNMP架构
1.首先查看mysql是否启动
ps aux |grep mysql
2.删除目录
rm -rf /usr/local/mysql/
3.删除启动的脚本
rm -rf /etc/init.d/mysqld
4.而后其余步骤相同css

  • 这里新建一个虚拟环境(这里不是在lamp架构上搭建的,而是新建的一个环境)
  • 而后进入到/usr/local/src目录下
[root@yong-01 ~]# cd /usr/local/src/
[root@yong-01 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
  • 而后解压安装包
[root@yong-01 src]# tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
  • 移动目录并修更名称——>这里移动目录到/usr/local/下时,必定不能有mysql目录,(若已经有mysql目录时,再去移动则会放到mysql目录下面去,而不是去移动并修更名称了)
  • 移动完后,检查目录
[root@yong-01 src]# mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
[root@yong-01 src]# ls /usr/local/mysql/
bin      data  include  man         README   share      support-files
COPYING  docs  lib      mysql-test  scripts  sql-bench
  • 进入到/usr/local/mysql目录下
[root@yong-01 src]# cd /usr/local/mysql/
  • 新建mysql用户和/data/目录——>这里如果在lamp以前的基础上作的话,须要rm -rf /data/mysql/*清空内容,(直接删除mysql目录也能够。它会自动建立)
[root@yong-01 mysql]# id mysql
uid=1002(mysql) gid=1002(mysql) 组=1002(mysql)
[root@yong-01 mysql]# rm -rf /data/mysql/*
[root@yong-01 mysql]# ls /data/
mariadb  mysql
  • 初始化./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
  • 初始化的过程目的,就是把mysql启动所须要的目录生成
[root@hanfeng mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
  • 而后能够echo $?检查,或者看初始化的过程当中是否有两个OK
[root@yong-01 mysql]# echo $?
0
  • 拷贝配置文件以前已经存在 查看

  datadir=/data/mysql    socket=/tmp/mysql.sock  这两个文件html

[root@yong-01 mysql]# cp support-files/my-default.cnf /etc/my.cnf
  • 拷贝启动文件cp support-files/mysql.server /etc/init.d/mysqld
[root@yong-01 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
  • 编辑文件 /etc/init.d/mysqld,并配置
[root@yong-01 mysql]# vim /etc/init.d/mysqld

在文件中配置
basedir=/usr/local/mysql
datadir=/data/mysql
  • 启动mysql服务
[root@yong-01 mysql]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/yong-01.err'.
 SUCCESS!
  • 查看服务是否启动成功
[root@yong-01 mysql]# ps aux |grep mysql
root      1846  0.0  0.0 113264  1612 pts/0    S    20:29   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/yong-01.pid
mysql     1981  2.6 24.0 973056 450520 pts/0   Sl   20:29   0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/yong-01.err --pid-file=/data/mysql/yong-01.pid --socket=/tmp/mysql.sock
root      2005  0.0  0.0 112676   984 pts/0    R+   20:29   0:00 grep --color=auto mysql
  • 将mysql服务加入到服务列表中去,并设置开机启动
[root@yong-01 mysql]# chkconfig --add mysqld
[root@yong-01 mysql]# chkconfig mysqld on
  • 下次就能够直接使用service关闭或启动服务 service mysqld (start stop restart)
[root@yong-01 mysql]# service mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS!

 

PHP安装目录概要

  • 和LAMP安装PHP方法有差异,须要开启php-fpm服务
  • cd /usr/local/src/
  • wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
  • tar zxf php-5.6.30.tar.gz
  • useradd -s /sbin/nologin php-fpm
  • cd php-5.6.30
  • ./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
  • make && make install
  • cp php.ini-production /usr/local/php-fpm/etc/php.ini
  • vi /usr/local/php/etc/php-fpm.conf //写入以下内容
  • cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  • chmod 755 /etc/init.d/php-fpm
  • chkconfig --add php-fpm
  • chkconfig php-fpm on
  • service php-fpm start
  • ps aux |grep php-fpm

PHP安装

  • LAMP架构和LNMP架构中安装PHP方法是不一样的
    • 在LAMP中,php是做为Apache的一个模块存在的,须要用apxs2 指定Apache的路径,使用apxs的工具进行自动配置模块的加载
    • 在LNMP里,须要指定mysql的路径,可是不须要制动Nginx的路径,由于是LNMP中,PHP是做为一个独立的服务在运行的,和Nginx没有直接的关系,因此它也不须要依赖Nginx
  • 如果在以前LAMP架构中,编译过PHP,因此只须要进入PHP的目录下执行make clean 把以前编译过的那些文件,所有删掉
  • 首先进入到/usr/local/src/ 已经有了php解压的安装文件
[root@yong-01 mysql]# cd /usr/local/src
[root@yong-01 src]# ls
apr-1.6.3               httpd-2.4.33                                  php-5.6.30
apr-1.6.3.tar.gz        httpd-2.4.33.tar.gz                           php-5.6.30.tar.gz
apr-util-1.6.1          mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz  php-5.6.32.tar.bz2
apr-util-1.6.1.tar.bz2  mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
  •  进入php-5.6.30 make clean 清理  把以前编译的文件所有删掉
[root@yong-01 src]# cd php-5.6.30/
[root@yong-01 php-5.6.30]# make clean
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
find . -name \*.lo -o -name \*.o | xargs rm -f
find . -name \*.la -o -name \*.a | xargs rm -f 
find . -name \*.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp5.la sapi/cli/php sapi/cgi/php-cgi    libphp5.la modules/* libs/*
  • 增长用户并指定shell  useradd -s 指定用户的shell
[root@yong-01 php-5.6.30]# useradd -s /sbin/nologin php-fpm

安装php

  • 初始化./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
  • ./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 //指定 mysql 的路径
  • --with-mysqli=/usr/local/mysql/bin/mysql_config //指定 mysqli 的路径
  • --with-pdo-mysql=/usr/local/mysql //指定 pdo-mysql 的路径
[root@yong-01 php-5.6.30]# ./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
  • 错误
configure: error: Please reinstall the libcurl distribution -
  easy.h should be in <curl-dir>/include/curl/
  • 解决方法
[root@yong-01 php-5.6.30]# yum install -y libcurl-devel
  • 装完这个继续初始化 能够用echo $?检查是否初始化成功
[root@yong-01 php-5.6.30]# echo $?
0
  • 而后make && make install
[root@yong-01 php-5.6.30]# make && make install
  • 用echo $?检查是否成功
[root@yong-01 php-5.6.30]# echo $?
0
  • 查看/usr/local/php-fpm/目录——>与/usr/local/php/目录项比较多了 sbin 和 var 目录
[root@yong-01 php-5.6.30]# ls /usr/local/php-fpm/
bin  etc  include  lib  php  sbin  var
[root@yong-01 php-5.6.30]# ls /usr/local/php/
bin  etc  include  lib  php
[root@yong-01 php-5.6.30]# ls /usr/local/php-fpm/sbin/    //在sbin目录下有一个php-fpm文件,就是用来启动php-fpm的
php-fpm
[root@yong-01 php-5.6.30]# ls /usr/local/php-fpm/var/    //在var目录下有 log 和 run 文件,log文件存放日志的,run存放pid的,日志和pid路径都是能够指定的
log  run
  • /usr/local/php-fpm/sbin/php-fpm 和 /usr/local/php-fpm/bin/php 的用法是基本一致的
/usr/local/php-fpm/sbin/php-fpm -m       查看模块
/usr/local/php-fpm/sbin/php-fpm -i
/usr/local/php-fpm/sbin/php-fpm -t       测试配置文件文件语法
  • 用/usr/local/php-fpm/sbin/php-fpm -t 测试配置文件文件语法是否错误
[root@yong-01 php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -t
[06-Jun-2018 21:17:00] ERROR: failed to open configuration file '/usr/local/php-fpm/etc/php-fpm.conf': No such file or directory (2)
[06-Jun-2018 21:17:00] ERROR: failed to load configuration file '/usr/local/php-fpm/etc/php-fpm.conf'
[06-Jun-2018 21:17:00] ERROR: FPM initialization failed
  • 这里会提示配置文件并不存在,若想要启动php-fpm服务,首先须要去配置配置文件
  • 拷贝cp php.ini-production /usr/local/php-fpm/etc/php.ini文件
  • 查看目录发现/usr/local/src/php-5.6.30 有2个配置文件
    • php.ini-development 适合开发环境使用
    • php.ini-production 适合生产环境使用
  • 二者区别在于,错误日志不一样
[root@yong-01 php-5.6.30]# cp php.ini-production /usr/local/php-fpm/etc/php.ini
  • 进入到/usr/local/php-fpm/etc/目录下
[root@yong-01 php-5.6.30]# cd /usr/local/php-fpm/etc/
[root@yong-01 etc]# ls
pear.conf  php-fpm.conf.default  php.ini
  • 编辑配置文件vim php-fpm.conf,或者直接把php-fpm.conf.default文件更名字为php-fpm.conf——>这里直接新建写入的
[root@yong-01 etc]# vim 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                //定义PID
error_log = /usr/local/php-fpm/var/log/php-fpm.log        //错误日志
[www]                    //模块名字,启动服务的时候就能看到
listen = /tmp/php-fcgi.sock        //监听的地址
listen.mode = 666        //当监听的是sock的时候,这个语句才会生效,这个语句用来定义sock文件权限的
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

而后保存退出

linsten 能够监听sock、tcp 能够写成 linsten = 127.0.0.1:9000(默认端口就是9000,可自定义),通常监听的到是“127.0.0.1 ”IP,由于php-fpm这个服务是针对内部使用的、在本机上用的,也就是说Nginx和php一般是在一台机器上,二者之间通讯直接使用内部网络就能够了;在这块选择的linsten配置不一样,到以后的配置Nginx配置,也就是告诉Nginx到哪里找php的配置语句也是不一样mysql

  • 进入到/usr/local/src/php-5.6.30/下,拷贝启动的脚本
[root@yong-01 etc]# cd /usr/local/src/php-5.6.30/
[root@yong-01 php-5.6.30]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  • 加入到服务列表中,先更改权限,而后在chkconfig,最后在开机启动
[root@yong-01 php-5.6.30]# chmod 755 /etc/init.d/php-fpm
[root@yong-01 php-5.6.30]# chkconfig --add php-fpm
[root@yong-01 php-5.6.30]# chkconfig php-fpm on
[root@yong-01 php-5.6.30]# service php-fpm start
Starting php-fpm  done
[root@yong-01 php-5.6.30]# chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

mysqld         	0:关	1:关	2:开	3:开	4:开	5:开	6:关
netconsole     	0:关	1:关	2:关	3:关	4:关	5:关	6:关
network        	0:关	1:关	2:开	3:开	4:开	5:开	6:关
php-fpm        	0:关	1:关	2:开	3:开	4:开	5:开	6:关
  • 查看php-fpm服务是否启动
[root@yong-01 php-5.6.30]# ps aux |grep php-fpm
root     53083  0.0  0.2 123612  4948 ?        Ss   21:30   0:00 php-fpm: master process (/usr/localphp-fpm/etc/php-fpm.conf)
php-fpm  53084  0.0  0.2 123612  4708 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53085  0.0  0.2 123612  4708 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53086  0.0  0.2 123612  4708 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53087  0.0  0.2 123612  4708 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53088  0.0  0.2 123612  4712 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53089  0.0  0.2 123612  4712 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53090  0.0  0.2 123612  4712 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53091  0.0  0.2 123612  4712 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53092  0.0  0.2 123612  4712 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53093  0.0  0.2 123612  4716 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53094  0.0  0.2 123612  4716 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53095  0.0  0.2 123612  4716 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53096  0.0  0.2 123612  4716 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53097  0.0  0.2 123612  4716 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53098  0.0  0.2 123612  4716 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53099  0.0  0.2 123612  4716 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53100  0.0  0.2 123612  4716 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53101  0.0  0.2 123612  4716 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53102  0.0  0.2 123612  4716 ?        S    21:30   0:00 php-fpm: pool www
php-fpm  53103  0.0  0.2 123612  4716 ?        S    21:30   0:00 php-fpm: pool www
root     53111  0.0  0.0 112676   980 pts/0    R+   21:32   0:00 grep --color=auto php-fpm

 

Nginx介绍

  • Nginx官网 nginx.org,最新版1.13,最新稳定版1.12 (stable版本) //这个软件是有俄国人开发的,由于对静态文件的处理性能上比Apache强不少,因此在慢慢的取代Apache
  • Nginx应用场景:web服务、反向代理、负载均衡
  • Nginx著名分支,淘宝基于Nginx开发的Tengine,使用上和Nginx一致,服务名,配置文件名都同样,和Nginx的最大区别在于Tenging增长了一些定制化模块,在安全限速方面表现突出,另外它支持对js,css合并
  • Nginx核心+lua相关的组件和模块组成了一个支持lua的高性能web容器openresty,参考文章
  • Nginx虽然功能很少,但能够去扩展一些第三方的模块进来
相关文章
相关标签/搜索