LNMP架构(LNMP架构介绍、mysql安装、PHP安装、Nginx介绍)

LNMP架构介绍

L(Linux) N(Nginx) M(Mysql) P(PHP)

与LAMP架构大致原理类似,有一点不同的是在LNMP结构里php会启动一个服务:php-fpm,而LAMP中php只是作为Apache的一个模块存在。Nginx会把用户的动态请求交给php服务去处理,这个php服务就会去和数据库进行交互。用户的静态请求Nginx会直接处理,Nginx处理静态请求的速度要比apache快很多性能上要好,所以apache和Nginx在动态请求处理上区别不大,但如果是静态请求处理的话就会明显发现Nginx要快于apache,而且Nginx能承受的并发量要比apache大,可以承受好几万的并发量,所以大一些的网站都会使用Nginx作为web服务器。

原理图如下所示:

MySql安装

以二进制免编译包示例

1.下载mysql包到本地目录

先进入/usr/local/src/目录

cd  /usr/local/src

安装wget命令

yum install -y  wget

获取资源下载到本地

wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

2.解压

tar xzvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

3.改名并移动到 /usr/local/mysql目录下

mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql

4.创建用户

# 进入目录
cd /usr/local/mysql
# 新增用户
useradd  mysql

5.创建mysql目录

mkdir /data/

6.指定配置信息进行安装

# 配置指定客户为mysql,数据目录为/data/mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

提示dumper没有安装,先yum搜索再进行安装

# yum搜索:秘诀按照提示未安装的包去搜索
yum list |grep perl |grep -i dumper
# 依次安装下面两个包
yum install -y perl-XML-Dumper
yum install -y perl-Data-Dumper

如果提示/usr/bin/perl: 坏的解释器: 没有那个文件或目录

yum install perl gcc kernel-devel

报错:Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

yum install -y libaio

检查配置参数是否成功的两种方法:

  1. 配置执行完成检查两个ok

  2. 查看执行结果,为0时说明执行无误

echo $?

7.拷贝配置文件

模板配置文件 : support-files/my-default.cnf

下面这两种方式任意选择一种即可

# 复制配置模板文件为 /etc/my.cnf
cp support-files/my-default.cnf /etc/my.cnf
# 查看/etc/my.cnf来自哪个rpm包
[root@yolks1 mysql]# rpm -qf /etc/my.cnf
mariadb-libs-5.5.56-2.el7.x86_64

此处示例我们修改默认的 /etc/my.cnf

8.拷贝启动脚本

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

9.修改启动脚本配置文件

10.检查启动脚本权限

[root@yolks1 mysql]# ls -lh !$
ls -lh /etc/init.d/mysqld
-rwxr-xr-x. 1 root root 11K 7月  28 00:18 /etc/init.d/mysqld

检查是否为755(rwxr-xr-x)权限,若不是则修改(默认就是755)

11.添加启动脚本至系统启动服务

chkconfig --add mysqld

12.添加启动脚本至系统启动服务

查看系统启动服务

chkconfig --list

添加到系统启动服务

chkconfig --add mysqld

启动服务的两种方式:

  • 命令行启动 (/etc/init.d/mysqld start)

  • 服务启动 (service mysqld start)

    	[root@yolks1 mysql]# service mysqld start
    	Starting MySQL.. SUCCESS!
    

判断服务是否启动的方式:

  • 检查进程是否启动

    	ps aux |grep  mysqld
    

  • 通过查看监控端口号 3306

    	netstat  -lntp
    

PHP安装

LNMP和LAMP中因为php作用有差异,所以此处我们需要开启php-fpm服务

1.进入资源目录,下载php

cd /usr/local/src/
wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2
  1. 解压

提示:无法 exec: 没有那个文件或目录

原因是缺少bzip2包

yum install -y bzip2

解压

tar -jxvf  php-5.6.32.tar.bz2
  1. 配置

进入php目录

cd /usr/local/src/php-5.6.32

输入代码及参数进行配置

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

报错1 :configure: error: xml2-config not found. Please check your libxml2 installation

yum install -y libxml2-devel

报错2:configure: error: Cannot find OpenSSL's <evp.h>

yum install -y openssl-devel

报错3:configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/

yum install curl curl-devel

报错4:configure: error: jpeglib.h not found.

yum install -y libjpeg-turbo-devel

报错5:configure: error: png.h not found.

yum -y install libpng
yum -y install libpng-devel

报错6:configure: error: freetype-config not found.

yum -y install freetype-devel

报错7:configure: error: mcrypt.h not found. Please reinstall libmcrypt.

yum install -y  epel-release
yum install -y libmcrypt-devel
  1. 安装
make && make install

5.查看主目录

[root@yolks2 php-5.6.32]# ls /usr/local/php-fpm/
bin  etc  include  lib  php  sbin  var

查看sbin和var目录下

6.测试配置文件语法

[root@yolks2 php-5.6.32]# /usr/local/php-fpm/sbin/php-fpm -t
[11-Aug-2018 01:20:21] ERROR: failed to open configuration file '/usr/local/php-fpm/etc/php-fpm.conf': No such file or directory (2)
[11-Aug-2018 01:20:21] ERROR: failed to load configuration file '/usr/local/php-fpm/etc/php-fpm.conf'
[11-Aug-2018 01:20:21] ERROR: FPM initialization failed
  1. 复制配置文件到
  • 配置文件解释
    • php.ini-production 生产环境文件
    • php.ini-development开发测试环境
cp  php.ini-production  /usr/local/php-fpm/etc/php.ini

编辑/usr/local/php-fpm/etc/php-fpm.conf文件,写入以下代码内容,具体可参考: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及端口号
listen.mode = 666 //权限
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

复制文件到启动脚本

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

修改权限为755

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

添加到开机启动中去

chkconfig --add php-fpm

开启开机启动

chkconfig php-fpm on

服务启动

service php-fpm start

查看进程

ps aux |grep php-fpm
[root@yolks2 php-5.6.32]# ps aux |grep php-fpm
root      34678  0.0  0.2 123644  4992 ?        Ss   01:37   0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm   34679  0.0  0.2 123644  4704 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34680  0.0  0.2 123644  4704 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34681  0.0  0.2 123644  4704 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34682  0.0  0.2 123644  4704 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34683  0.0  0.2 123644  4708 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34684  0.0  0.2 123644  4708 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34685  0.0  0.2 123644  4708 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34686  0.0  0.2 123644  4708 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34687  0.0  0.2 123644  4708 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34688  0.0  0.2 123644  4712 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34689  0.0  0.2 123644  4712 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34690  0.0  0.2 123644  4712 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34691  0.0  0.2 123644  4712 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34692  0.0  0.2 123644  4712 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34693  0.0  0.2 123644  4712 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34694  0.0  0.2 123644  4712 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34695  0.0  0.2 123644  4712 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34696  0.0  0.2 123644  4712 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34697  0.0  0.2 123644  4712 ?        S    01:37   0:00 php-fpm: pool www
php-fpm   34698  0.0  0.2 123644  4712 ?        S    01:37   0:00 php-fpm: pool www
root      34701  0.0  0.0 112720   980 pts/1    R+   01:38   0:00 grep --color=auto php-fpm

nginx介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。 其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
  Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
  Nginx 可以在大多数 UnixLinux OS 上编译运行,并有 Windows 移植版。 Nginx 的1.4.0稳定版已经于2013年4月24日发布,一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高。Nginx 的源代码使用 2-clause BSD-like license。

拓展

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-FPM http://www.nowamagic.net/librarys/veda/detail/1319/ https://www.awaimai.com/371.html

转载于:https://my.oschina.net/yolks/blog/1926066

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值