设为首页 收藏本站
查看: 782|回复: 0

[经验分享] 企业级LAMP环境应用----mysql

[复制链接]

尚未签到

发表于 2018-10-8 10:47:56 | 显示全部楼层 |阅读模式
第1章 企业级LAMP环境应用
1.1 LNMP应用环境
  大约在2010年以前,互联网公司最常用的经典web服务环境组合就是LAMP(即Linux,apache,mysql,PHP),近几年随着Nginx web 服务的逐渐流行,又出现了新的web服务环境组合----LNMP或LEMP,其中LNMP为Linux,nginx,Mysql,PHP等首字母的缩写,而LEMP中E表示Nginx,,LNMP已经逐渐成为国内大中型互联网公司网站的主流组合环境。
1.1.1 LNMP介绍
  LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Mysql是一个小型关系型数据库管理系统。PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
1.1.2 LNMP的优点:
  1.作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。
  2.作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。
  3.作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。
  4.Nginx 安装非常的简单:配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。
1.1.3 LNMP组合工作流程
  当LNMP组合工作时,首先是用户通过浏览器输入域名请求Nginx web服务,如果请求时静态资源,则有Nginx解析返回给用户;如果是动态请求(.php结尾),那么就会把它通过fastCGI接口(生产常用方法)发送给PHP引擎服务(fastCGI进程php-fpm)进行解析,如果这个动态请求要读取数据库数据,那么PHP就会继续向后请求MYSQL数据库,读取需要的数据,并最终通过Nginx服务把获得额数据返回给用户,这就是LNMP环境的基本请求顺序流程
1.1.4 CGI介绍
  最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不 断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,asp这样的文件,自己不能做,外包给别人吧,但是要与第三做个约定,我给你什么,然后你给我什么,就是握把请求参数发送给你,然后我接收你的处理结果给客户端。那这个约定就是 common gateway interface,简称cgi。这个协议可以用vb,c,php,python 来实现。cgi只是接口协议,根本不是什么语言。
  WEB服务器将根据CGI程序的类型决定数据向CGI程序的传送方式,一般来讲是通过标准输入/输出流和环境变量来与CGI程序间传递数据。
  CGI工作原理:每当客户请求CGI的时候,WEB服务器就请求操作系统生成一个新的CGI解释器进程(如php-cgi.exe),CGI 的一个进程则处理完一个请求后退出,下一个请求来时再创建新进程。当然,这样在访问量很少没有并发的情况也行。可是当访问量增大,并发存在,这种方式就不适合了。于是就有了fastcgi。
1.1.5 FASTCGI介绍
  FASTCGI:WEB服务器与处理程序之间通信的一种协议,是CGI的改进方案。CGI程序反复加载是CGI性能低下的主要原因,如果CGI程序保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等。
  FASTCGI是常驻型的CGI,它可以一直运行,在请求到达时,不会花费时间去fork一个进程来处理。FastCGI是语言无关的、可伸缩架构的CGI开放扩展,将CGI解释器进程保持在内存中,以此获得较高的性能
1.2 原理解析
1.2.1 FastCGI的整个工作流程
  一般情况下,FastCGI的整个工作流程是这样的:
  1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)
  2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待WebServer的连接。
  3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
  4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。在CGI模式中,php-cgi在此便退出了。
第2章 LNMP之数据库MYSQL
2.1 MYSQL数据库介绍
  mysql是互联网领域里非常重要的,深受广大用户欢迎的一款开源关系型数据库软件,由瑞典mysql AB公司开发与维护。2006年,mysql AB公司被SUN公司收购,2008年,SUN公司又被传统数据库领域老大甲骨文(oracle)公司收购,因此,mysql数据库目前属于oracle公司,但仍然是开源的。
  mysql是一种关系型数据库管理软件,关系数据型数据库的特点是将数据保存在不同的二位表中,并且将这些表放入不同的数据库中,而不是把所有的数据统一放到一个大仓库中,这样的设计增加了MYSQL的读取速度,灵活性和可管理性。
2.2 LNMP MySQL数据库安装(二进制包的安装)
  mysql软件下载地址信息: www.mysql.com   mirrors.sohu.com
  mysql软件下载完毕后,查看mysql解压后目录文件大小
  序号
  mysql安装方式
  特点说明
  1
  yum/rpm包安装
  特点是简单,速度快,但是没法定制安装,入门新手常用这种方式
  2
  二进制安装
  解压软件,简单配置后就可以使用,不用安装,速度较快,专业的DBA喜欢这种方式。
  3
  源码编译安装
  特点是可以定制安装,但是安装时间长,列如:字符集安装路径
  4
  源码软件结合yum/rpm安装
  把源码软件制作成符合要求的rpm,放到yum仓库里,然后通过yum安装,优点是安装快捷,可任意制定参数,但是安装者需要具备更深能力。
2.2.1 下载解压mysql二进制软件包
  [root@web02 tools]# rz -E
  rz waiting to receive.
  [root@web02 tools]# ls
  mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
  nginx-1.10.2
  nginx-1.10.2.tar.gz
  [root@web02 tools]# tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
  [root@web02 tools]# ls
  mysql-5.6.34-linux-glibc2.5-x86_64         nginx-1.10.2
  mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz  nginx-1.10.2.tar.gz
  [root@web02tools]#cdmysql-5.6.34-linux-glibc2.5-x86_64
  [root@web02mysql-5.6.34-linux-glibc2.5-x86_64]# ll -hi
  total 68K
  663049 drwxr-xr-x 2 root root  4.0K May 22 09:56 bin
  663186 -rw-r--r-- 1 7161 31415  18K Sep 30  2016 COPYING
  800440 drwxr-xr-x 3 root root  4.0K May 22 09:57data
  800443 drwxr-xr-x 2 root root  4.0K May 22 09:57docs
  800533 drwxr-xr-x 3 root root  4.0K May 22 09:57include
  663139 drwxr-xr-x 3 root root  4.0K May 22 09:57 lib
  790581 drwxr-xr-x 4 root root  4.0K May 22 09:56 man
  790632 drwxr-xr-x 10 root root  4.0K May 22 09:57 mysql-test
  663138 -rw-r--r-- 1 7161 31415 2.5K Sep 30  2016README
  800431 drwxr-xr-x 2 root root  4.0K May 22 09:57scripts
  663095 drwxr-xr-x 28 root root  4.0K May 22 09:56 share
  800447 drwxr-xr-x 4 root root  4.0K May 22 09:57sql-bench
  800433 drwxr-xr-x 2 root root  4.0K May 22 09:57support-files
  [root@web02 mysql-5.6.34-linux-glibc2.5-x86_64]# cd..
  [root@web02 tools]# ls
  mysql-5.6.34-linux-glibc2.5-x86_64         nginx-1.10.2
  mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz  nginx-1.10.2.tar.gz
  [root@web02 tools]# du -sh mysql-5.6.34-linux-glibc2.5-x86_64
  1.1G   mysql-5.6.34-linux-glibc2.5-x86_64
2.2.2 将mysql解压后的程序包搬家到程序目录下,并进行重命名
  [root@web02 tools]# mv mysql-5.6.34-linux-glibc2.5-x86_64/application/mysql-5.6.34
2.2.3 为mysql创建软链接
  [root@web02 tools]# ln -s /application/mysql-5.6.34//application/mysql
  [root@web02 tools]# cd /application/
  [root@web02 application]# ls
  mysql mysql-5.6.34  nginx  nginx-1.10.2
  [root@web02 application]# ll
  total 8
  lrwxrwxrwx  1root root   26 May 22 10:01 mysql ->/application/mysql-5.6.34/
  drwxr-xr-x 13 root root 4096 May 22 09:57mysql-5.6.34
  lrwxrwxrwx  1root root   25 May 19 08:52 nginx ->/application/nginx-1.10.2
  drwxr-xr-x 11 root root 4096 May 19 12:59nginx-1.10.2
2.2.4 添加mysql程序运行时的管理用户并授权
  useradd -s /sbin/nologin  -M mysql
  chown -R mysql.mysql /application/mysql
2.2.5 初始化数据库
  /application/mysql/scripts/mysql_install_db--basedir=/application/mysql --datadir=/application/mysql/data/ --user=mysql
2.2.6 复制启动脚本授权
  [root@web02 application]# cp /application/mysql/support-files/mysql.server/etc/init.d/mysqld          ###把守护进程文件放到启动文件中,守护进程方式
  [root@web02 application]#
  [root@web02 application]# ll /etc/init.d/mysqld
  -rwxr-xr-x 1 root root 10875 May 22 10:13/etc/init.d/mysqld
  [root@web02 application]# chmod +x /etc/init.d/mysqld
2.2.7 修改启动脚本和 mysql命令中的路径
  [root@web02 application]# ll /etc/init.d/mysqld
  -rwxr-xr-x 1 root root 10875 May 22 10:13/etc/init.d/mysqld
  [root@web02 application]# sed -i 's#/usr/local/mysql#/application/mysql#g'/application/mysql/bin/mysqld_safe /etc/init.d/mysqld
  注:替换后的application为安装路径,如果安装路径不在application中,那么就要替换为安装的路径名。
  [root@web02 application]#
2.2.8 复制默认的配置文件启动mysql
  [root@web02 application]#cp /application/mysql/support-files/my-default.cnf/etc/my.cnf
  cp: overwrite `/etc/my.cnf'? y
  [root@web02 application]#
  [root@web02application]#/etc/init.d/mysqld start
  Starting MySQL... SUCCESS!
2.3 管理mysql数据库
2.3.1 登录与退出mysql
  [root@web02 application]#/application/mysql/bin/mysql -uroot
  mysql> exit
  Bye
  或者ctrl+d
  优化登录过程
  echo 'export PATH=/application/mysql/bin:$PATH'>>/etc/profile
  source /etc/profile
  which mysql
2.3.2 设置登录密码并登录
  [root@web02 application]# mysqladmin -u root password "oldboy123"
  Warning: Using a password on the command lineinterface can be insecure.
  [root@web02 application]#
  [root@web02 application]# mysql -uroot -poldboy123     ###注意-p后面不能有空格。
2.3.3 设置mysql服务开机自启动   
  ####11.加入开机自启动
  chkconfig --add mysqld
  chkconfig mysqld on
2.3.4 数据库基本命令
  show databases;               
  mysql> select database();
  +------------+
  | database() |
  +------------+
  | mysql     |
  +------------+
  1 row in set (0.00 sec)
  mysql>
  2.5.4 查看哪个用户登录数据库
  mysql> select user();
  +----------------+
  | user()        |
  +----------------+
  | root@localhost |
  +----------------+
  1 row in set (0.00 sec)
  mysql>
  mysql> select user,host from mysql.user;
  +------+-----------+
  | user | host     |
  +------+-----------+
  | root | 127.0.0.1 |
  | root | ::1      |
  |      |localhost |
  | root | localhost |
  |      |web02     |
  | root | web02    |
  +------+-----------+
  6 rows in set (0.00 sec)
  mysql>


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-616350-1-1.html 上篇帖子: centos7下如何安装mysql 亲测 下篇帖子: mysql主从 主主
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表