LNMP架构(架构介绍,mysql安装,php安装,nginx介绍)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

一、LNMP建构介绍

和LAMP不同的是,提供web服务的是Nginx

并且php是作为一个独立服务存在的,这个服务叫做php-fpm

Nginx直接处理静态文件请求,动态请求会转发给php-fpm

1.png

apache和nginx的区别;https://www.cnblogs.com/huangye-dream/p/3550328.html

nginx相对于apache的优点:

轻量级,同样起web 服务,比apache 占用更少的内存及资源 
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 
高度模块化的设计,编写模块相对简单 
社区活跃,各种高性能模块出品迅速啊 

apache 相对于nginx 的优点: 
rewrite ,比nginx 的rewrite 强大 
模块超多,基本想到的都可以找到 
少bug ,nginx 的bug 相对较多


异步和同步:

同步:你打电话问书店老板有没有《分布式系统》这本书,如果是同步通信机制,书店老板会说,你稍等,”我查一下",然后开始查啊查,等查好了(可能是5秒,也可能是一天)告诉你结果(返回结果)。
异步:书店老板直接告诉你我查一下啊,查好了打电话给你,然后直接挂电话了(不返回结果)。然后查好了,他会主动打电话给你。在这里老板通过“回电”这种方式来回调。


阻塞和非阻塞:

你打电话问书店老板有没有《分布式系统》这本书,你如果是阻塞式调用,你会一直把自己“挂起”,直到得到这本书有没有的结果,如果是非阻塞式调用,你不管老板有没有告诉你,你自己先一边去玩了, 当然你也要偶尔过几分钟check一下老板有没有返回结果。
在这里阻塞与非阻塞与是否同步异步无关。跟老板通过什么方式回答你结果无关。


二、mysql的安装

[root@lnmp mysql]# cd /usr/local/src/

[root@lnmp mysql]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

[root@lnmp mysql]# tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz             (解压mysql tar包)

[root@lnmp mysql]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql           (移动解压包并改名)

[root@lnmp mysql]# mkdir /data                                       (创建储存的/data目录)

[root@lnmp mysql]# useradd mysql                                       (创建mysql用户)

[root@lnmp mysql]# vim /etc/my.cnf                                     (修改/etc/my.cnf文件)

datadir=/data/mysql

socket=/tmp/mysql.sock

[root@lnmp mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql        

(初始化MySQL,并且指定用户和数据库目录,第一次安装时会报错,安装下面2个包就好)

[root@lnmp mysql]# yum install autoconf -y

[root@lnmp mysql]# yum install -y libaio

[root@lnmp mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql


[root@lnmp mysql]# cp support-files/mysql.server /etc/init.d/mysqld   (复制启动脚本)

[root@lnmp mysql]# vim /etc/init.d/mysqld                     (修改启动脚本里的basedir和datadir)

46                    basedir=/usr/local/mysql

47                    datadir=/data/mysql

[root@lnmp mysql]# /etc/init.d/mysqld start                  (启动mysql)



[root@lnmp mysql]# chkconfig --add mysqld           (添加mysql到服务列表)

[root@lnmp mysql]# chkconfig mysqld on             (设置MySQL开机启动)

添加到服务列表后,就可以使用以下命令:

[root@lnmp mysql]# service mysqld stop               (启动MySQL)

Shutting down MySQL.. SUCCESS! 

[root@lnmp mysql]# service mysqld start               (关闭MySQL)

Starting MySQL. SUCCESS! 


三、PHP安装

[root@lnmp ~]# cd /usr/local/src       (把源码包下载到指定目录)

[root@lnmp ~]# wget http://cn2.php.net/distributions/php-5.6.30.tar.gz

[root@lnmp ~]# tar zxf php-5.6.30.tar.gz

[root@lnmp ~]# useradd -s /sbin/nologin php-fpm (添加php-fpm用户,-s指定不能登录)

[root@lnmp ~]# cd php-5.6.30

[root@lnmp ~]# ./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  

(编译php包,过程中可能有需要安装的包,导致的错误)

[root@lnmp ~]# make && make install 

[root@lnmp ~]# cp php.ini-production /usr/local/php-fpm/etc/php.ini  (复制目录并改名字)

[root@lnmp ~]# vi /usr/local/php/etc/php-fpm.conf    (修改php配置文件,以下内容)

[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.mode = 666                 定义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


[root@lnmp ~]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm  (复制启动脚本到以下位置)


[root@lnmp ~]# chmod 755 /etc/init.d/php-fpm

[root@lnmp ~]# chkconfig --add php-fpm      (添加php到服务)

[root@lnmp ~]# chkconfig php-fpm on         (设置开机启动php服务)

[root@lnmp ~]# service php-fpm start          (启动php服务)

四、nginx的介绍


• Nginx官网 nginx.org,最新版1.13,最新稳定版1.12

• Nginx应用场景:web服务、反向代理、负载均衡 

• Nginx著名分支,淘宝基于Nginx开发的Tengine,使用上和Nginx一致,服务名,配置文件名都一样,和Nginx的最大区别在于Tenging增加了一些定制化模块,在安全限速方面表现突出,另外它支持对js,css合并 

• Nginx核心+lua相关的组件和模块组成了一个支持lua的高性能web容器openresty

参考http://jinnianshilongnian.iteye.com/blog/2280928










本文转自 小新锐 51CTO博客,原文链接:http://blog.51cto.com/13407306/2056617,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
177 90
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
186 42
docker安装nginx,前端项目运行
通过上述步骤,你可以轻松地在Docker中部署Nginx并运行前端项目。这种方法不仅简化了部署流程,还确保了环境的一致性,提高了开发和运维的效率。确保按步骤操作,并根据项目的具体需求进行相应的配置调整。
217 25
CentOS7仅安装部署MySQL80客户端
通过上述步骤,你可以在CentOS 7上成功安装并配置MySQL 8.0客户端。这个过程确保你能够使用MySQL客户端工具连接和管理远程的MySQL数据库,而不需要在本地安装MySQL服务器。定期更新MySQL客户端可以确保你使用的是最新的功能和安全修复。
295 16
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
147 14
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
162 7
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
95 82
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)