文档章节

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

蛋黄_Yolks
 蛋黄_Yolks
发布于 08/11 01:47
字数 2197
阅读 19
收藏 0

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

© 著作权归作者所有

蛋黄_Yolks
粉丝 8
博文 100
码字总数 112269
作品 0
通州
民工哥公众号linux系统学习线路图大全

民工哥公众号linux系统学习线路图大全 <-----------点击链接进入 友侃有笑公众号Linux学习路线图 1、基础篇 Linux 基础优化配置 Linux系统根目录结构介绍 linux系统重要子目录介绍 Linux文件...

民工哥
2017/08/30
0
0
LNMP平台部署及应用

LAMP平台应该是目前应用最为广泛的网站服务器架构,但随着Nginx在企业中的使用越来越多,LNMP(或LEMP)架构也受到越来越多Linux系统工程师的青睐,其中"E"来自于Nginx的发音[engine x] 构建...

杨书凡
01/13
0
0
12.1 LNMP架构介绍

LNMP架构介绍目录概要 和LAMP不同的是,提供web服务的是Nginx 并且php是作为一个独立服务存在的,这个服务叫做php-fpm Nginx直接处理静态请求,动态请求会转发给php-fpm LNMP架构 LAMP和LNM...

运维小白
2017/12/28
1
0
centos6.2 64位LNMP(linux+nginx+mysql+php)实现

现在nginx运用越来越广泛。这是因为NGINX在某些方面优于apache。并且NGINX在web服务当中占有一定的比例,我们有必要了解和学习。下面步入正题,看LNMP架构怎么搭建。 首先,分析下LAMP架构的...

duyunlong
2013/03/01
0
0
企业网站架构之Nginx详解原理以及工作模块;源码Lnmp架构

Nginx详解及lnmp环境架构 一、Nginx详解以及优点 在当前互联网环境下,一般高端的服务前端都采用nginx作为web前端,而更多的都是采用lnmp架构,真正的后端服务器才会采用apache. 为什么这么做,...

Andy-xu
2014/08/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

what f,,

anlve
40分钟前
0
0
初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
9
0
现场看路演了!

HiBlock
昨天
19
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
13
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部