[toc]

LNMP基础架构

12.1 LNMP架构介绍

架构原理:

LAMP=linux+apache+mysql+php

LNMP=linux+nginx+mysql+php

1.初识LNMP

当我们讲LAMP的时候PHP是作为一个模块在Apache中,但是在LNMP中,PHP是一个服务,当用户请求的时候nginx会把它交给php 然后对mysql进行交互!像这种静态的,例如图片或者html,nginx会直接处理,从而加快访问速度! 谈到速度,其实如果一个普通的站点你是看不到什么效果的,但是如果要是访问一个纯静态站点,nginx就能体现出它的优势!nginx的另外一个优势得益于它的高并发支持!

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

2.MYSQL 安装过程

2.1 获取安装包,并解压

[root@xavi ~] ps aux |grep mysql //安装前先确定mysql是否开启
root       1082  0.0  0.0 115392  1672 ?        S    21:09   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/xavi.pid
mysql      1375  3.8 24.2 1302876 452908 ?      Sl   21:09   0:03 /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/xavi.err --pid-file=/data/mysql/xavi.pid
root       2645  0.0  0.0 112680   976 pts/0    R+   21:10   0:00 grep --color=auto mysql[root@xavilinux01 ~]# cd /usr/local/src
[root@xavi src]# rm -rf /usr/local/mysql //把之前的删除
[root@xavi src]# rm -rf /etc/init.d/mysqld
[root@xavilinux01 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
[root@xavilinux01 src]# tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
[root@xavilinux01 src]# mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql[root@xavi src]# ls /usr/local/mysql/
bin      data  include  man         README   share      support-files
COPYING  docs  lib      mysql-test  scripts  sql-bench

2.2 进入mysql目录下,删除之前/data/mysql/下的文件

[root@xavi ~]# cd /usr/local/mysql[root@xavi mysql]# ls /data/
mariadb  mysql  wwwroot
[root@xavi mysql]# id mysql
uid=1004(mysql) gid=1005(mysql) 组=1005(mysql)
[root@xavi mysql]# rm -rf /data/mysql/*

2.3 配置文件./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

出现两个OK

2.4 拷贝编辑cp support-files/my-default.cnf /etc/my.cnf

2.5 拷贝启动脚本并编辑 cp support-files/mysql.server /etc/init.d/mysqld

  • 编辑 vim /etc/init.d/mysqld

vim编辑下面两行basedir和datadir配置
basedir=/usr/local/mysql
datadir=/data/mysql

2.6 启动mysqld,/etc/init.d/mysqld start

报错:

root@xavi mysql]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/xavi.err'.
.. ERROR! The server quit without updating PID file (/data/mysql/xavi.pid).

sql启动报错参考:https://blog.51cto.com/732233048/1636409

2.7 kill -9 PID 杀死占用mysql的进程,然后开启

查找出之前报错的原因,mysql进程没有关闭

[root@xavi mysql]# ps -ef|grep mysqld
root       1082      1  0 21:09 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/xavi.pid
mysql      1375   1082  0 21:09 ?        00:00:13 /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/xavi.err --pid-file=/data/mysql/xavi.pid
root       4433   2598  0 22:23 pts/0    00:00:00 grep --color=auto mysqld
[root@xavi mysql]# kill -9 1082
[root@xavi mysql]# ps -ef|grep mysqld
mysql      1375      1  0 21:09 ?        00:00:13 /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/xavi.err --pid-file=/data/mysql/xavi.pid
root       4444   2598  0 22:23 pts/0    00:00:00 grep --color=auto mysqld
[root@xavi mysql]# kill -9 1375
[root@xavi mysql]# ps -ef|grep mysqld
root       4447   2598  0 22:24 pts/0    00:00:00 grep --color=auto mysqld
[root@xavi mysql]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS! 

将mysql添加到开机启动项

[root@xavi mysql]# chkconfig --add mysqld
[root@xavi mysql]# chkconfig mysqld on
[root@xavi mysql]# service mysqld stop
Shutting down MySQL.. SUCCESS!
[root@xavi mysql]# service mysqld start
Starting MySQL. SUCCESS! 

12.3 PHP安装

和LAMP安装PHP方法有差别,需要开启php-fpm服务

1. 配置并编译:

进入src目录下,查看之前已经下载了哪些安装包

[root@xavi src]cd /usr/local/src/
[root@xavi src]# ls
apr-1.6.3
apr-1.6.3.tar.gz
apr-util-1.6.1
apr-util-1.6.1.tar.gz
httpd-2.4.29
httpd-2.4.29.tar.gz
mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
mysql-5.5.55
mysql-5.5.55.tar.gz
mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
php-5.6.30
php-5.6.30.tar.bz2
php-5.6.30.tar.gz
php-5.6.30.tar.gz.1
php-7.1.6
php-7.1.6.tar.bz2
phpredis-develop
phpredis-develop.zip

打开php-5.6.50源码包(之前LAMP架构中已经下载),make clean

[root@xavi src]# cd php-5.6.30/
[root@xavi php-5.6.30]# ls
[root@xavi 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/*

将这里用的php命名为php-fpm,添加配置文件

[root@xavi php-5.6.30]# ls /usr/local/
apache2.4  apr-util  etc    include  lib64    mariadb  php   sbin   src
apr        bin       games  lib      libexec  mysql    php7  share[root@xavi php-5.6.30]#useradd -s /sbin/nologin php-fpm[root@xavi 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--prefix=指定安装位置
--with-config-file-path=指定配置文件目录
--enable-fpm=启动fpm服务
--with-fpm-user=指定用户
--with-fpm-group=指定用户组
--with-mysql=指定mysql的路径

报错处理,安装devel安装包,安装完重新加载配置文件,然后make&make install

<curl-dir>

configure: error: Please reinstall the libcurl distribution -easy.h should be in <curl-dir>/include/curl/
  • 安装 :yum install libcurl-devel

3 PHP信息:

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

安装下来之后我们发现其实比之前安装PHP要多了两个目录 sbin 和 var

sbin:实际上就是启动php-fpm服务的目录

var:实际上就是存放PHP日志的,当然这个我们可以指定的

查看PHP信息:/usr/local/php-fpm/sbin/php-fpm -i

查看PHP模块:/usr/local/php-fpm/sbin/php-fpm -m

测试PHP配置语法:/usr/local/php-fpm/sbin/php-fpm -t

4. 配置PHP:

cp php.ini-production /usr/local/php-fpm/etc/php.ini//牢记此命令,后期会经常使用到

4.1 编辑:vi /usr/local/php-fpm/etc/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
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[global]=定义全局参数
[www]=自定义模块
listen = 监听的地址
或者可以使用这样的方式↓
listen = 127.0.0.1:9000 (port默认为9000,也可以更改)
listen.mode = 666 用来定义listen = /tmp/php-fcgi.sock的权限,只有这个sock打开的情况下才生效!

4.2拷贝启动脚本,先到源码包目录,脚本为sapi/fpm/init.d.php-fpm

[root@xavi php-5.6.30]# cd /usr/local/src/php-5.6.30/
[root@xavi php-5.6.30]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

赋予权限,修改开机启动项

[root@xavi php-5.6.30]# chmod 755 /etc/init.d/php-fpm
[root@xavi php-5.6.30]# chkconfig --add php-fpm
[root@xavi php-5.6.30]# chkconfig php-fpm on
[root@xavi php-5.6.30]# service php-fpm start
Starting php-fpm  done

转载于:https://blog.51cto.com/12995218/2086693

11.LNMP基础架构相关推荐

  1. 企业实战案例-- LNMP基础架构的原理及部署以及wordpress论坛的安装

    企业实战案例-- LNMP基础架构的原理及部署以及wordpress论坛的安装 LNMP架构原理 一.源码安装mysql 二.源码安装php 三.源码安装nginx 四.安装wordpress论坛 L ...

  2. LNMP基础架构介绍与安装

    1.LNMP架构介绍 LNMP==Linux+Nginx+Mysql+PHP  nginx:省资源,省cpu,所以在高并发时能够处理更多的请求,高端能达到3万到5万的并发量.  nginx和LAMP不 ...

  3. java基础巩固-宇宙第一AiYWM:为了维持生计,虽然咱没机会经历双11、美团、飞猪基础架构组这种型号的技术阅兵场,但是看看人家写的阅兵场日记,先xiao习xiao习一下嘛~整起

    PART1:李哥技术老师的参与双11年中大促作为技术负责人的一些经验复盘 将故事分为三大部分:事前.事中.事后. 事前:基本上就是相关人员聚在一起商量商量么 开会沟通:参加一个全局的,整体的KO会议( ...

  4. 从基础架构层面保障应用场景落地——11.11基础架构峰会在京举行

    11月25日,由京东IT资源服务部联合京东CTO办公室.京东商城研发基础架构部共同举办的"京东技术--11.11基础架构峰会",在国家会议中心盛大举行!本次峰会经过了近一个月紧锣密 ...

  5. 阿里无线11.11 | 手机淘宝移动端接入网关基础架构演进之路

    移动网络优化是超级App永恒的话题,对于无线电商来说更为重要,网络请求体验跟用户的购买行为息息相关,手机淘宝从过去的HTTP API网关,到2014年升级支持SPDY,2015年双十一自研高性能.全双 ...

  6. LLVM编译器基础架构与DragonEgg示例

    LLVM编译器基础架构与DragonEgg示例 LLVM 概述 LLVM 项目是模块化和可重用的编译器和工具链技术的集合.LLVM 与传统的虚拟机几乎没有关系."LLVM"这个名字 ...

  7. 大数据-平台-解决方案-基础架构一览

    1.talkingdata  (数据平台) 2.明略数据(解决方案) 3.百融金服(金融大数据) 4.国双科技(营销大数据) 5.国信优易(媒体大数据) 6.百分点(营销大数据) 7.华院集团(解决方 ...

  8. 虚拟化基础架构Windows 2008篇之1-虚拟化基础服务概述

    看完文章,请顺手投我一票(王春海),谢谢 http://edu.51cto.com/activityvote/voteRanking 京东6.18结束了,IT人自己的6.18来了!!!51CTO学院3 ...

  9. 聊聊 Kafka: Kafka 的基础架构

    一.我与快递小哥的故事 一个很正常的一个工作日,老周正在忙着啪啪啪的敲代码,办公司好像安静的只剩敲代码的声音.突然,我的电话铃声响起了,顿时打破了这种安静. 我:喂,哪位? 快递小哥:我是顺丰快递的, ...

最新文章

  1. Go 学习笔记(84)— Go 项目目录结构
  2. ThinkPHP + Ajax 实现2级联动下拉菜单
  3. flutter版本控制工具 `FVM`
  4. Predicate接口练习之筛选满足条件数据
  5. 内置函数isinstance和issubclass
  6. react周期函数介绍
  7. jquery easyui+spring mnv 样式引不进,需要加载静态资源
  8. IE浏览器不能自动显示PDF文件的解决办法
  9. 读书笔记_打开量化投资的黑箱02
  10. 智慧城市系列之智能交通系统(ITS)
  11. clonezilla使用_如何使用Clonezilla备份和恢复已死或即将死去的系统磁盘
  12. MacOS Big Sur 开启 HIDPI
  13. 联想重装系统去掉保护_联想硬盘保护系统,小编教你联想硬盘保护系统怎么用...
  14. iClone走路改为原地踏步
  15. API安全(二):API安全设计原则
  16. Navicat Premium 15 完全卸载
  17. java 开发设计 小游戏 英雄 怪物 武器 关键代码
  18. 做速卖通的优势和不足
  19. Android 开发Usb知识
  20. MySQL导入几十G数据后创建索引时提示空间不足(Errcode: 28 - No space left on device)

热门文章

  1. 有监督学习和无监督学习_比监督学习做的更好:半监督学习
  2. 游戏可以html+上运行吗,运行多个,如果在HTML游戏
  3. python分布爬虫_13天搞定Python分布爬虫(第七天)(Scrapy)
  4. linux卡片电脑源码,x4412开发板ibox卡片电脑项目实战9-搭建最简单的linux文件系统...
  5. opencv 计数后不动了 训练模型时_用OpenCV,深度学习和Python进行年龄识别
  6. vue按钮Button
  7. 无心剑中译丁尼生《乞丐少女》
  8. Django基础学习笔记:初识MTV模式
  9. POJ3163 King of Fighters 状压DP/费用流
  10. mybatis plus使用雪花算法_11.雪花算法与精度丢失