Linux学习(第十一周)

第十一周学习内容:LAMP和文件存储共享服务

第十一周作业:

1、搭建php-fpm工作方式的LAMP环境,实现wordpress正常访问。

      LAMP环境:l是操作系统linux;a是web服务程序httpd(apache)或nginx;m是关系型数据库mysql或mariadb;p是开发语言php,perl,python等,由这四个部件组合起来搭建动态网站的架构就叫lamp。所谓的动态网站不是网页上有flash在播放动态的图片就是动态网站,而是要在服务器端开启一个进程作为解释器,运行用户要的脚本或程序,把运行完成后的结果发送给用户。早期是使用的CGI规范,后来提出了Fast CGI机制,在httpd接收到动态请求时将其转交给身后的某一程序或服务器,有该程序去创建子进程,调用硬盘并运行,将结果发送给httpd,最终转发给用户。这个程序基于各种不同的开发语言也各不相同,php是fpm,jsp是tomcat,python是django,ruby是ror。而最终要调用的数据是存放在硬盘上的,有的是存放在数据库中,有的是存放在本地硬盘中。存放在数据库中的数据有可能还在另外一台设备上,这样就形成了三级架构:第一层设备运行httpd;第二层设备运行php-fpm;第三层设备运行mysql。

      搭建php-fpm环境,首先在一台服务器上部署好httpd,一台服务器上部署好php-fpm和php-mysql,一台服务器上部署好mariadb-server。

      image.png

      image.png

      image.png

      mariadb服务器对数据库配置文件添加两条优化配置,即可启动服务,再登录mariadb创建个测试账户。

      image.png

      image.png

      php-fpm服务器上对fpm配置文件修改一下监听地址和端口,因为是跨主机的,所以不能使用默认的127.0.0.1,修改完成后还需要创建个php session会话保存目录,随后即可启动服务。

      image.png

      image.png

      httpd服务器上除了一些基础配置外,还要加上fcgi配置,表示要将动态资源请求转交给后台fpm服务器,在/etc/httpd/conf.d目录下新建一个fcgi.conf单独做配置,比较好管理。

      image.png

      启动服务后可以在fpm服务器上创建个php测试页并且用测试用户名密码登录mariadb数据库,保证3台服务器正常工作。

      image.png

      image.png

      image.png

      至此准备工作都已完毕,可以开始安装wordpress了。

      在fpm服务器上下载wordpress,解压后拷贝到指定目录。

      image.png

      在httpd服务器上创建wordpress目录。

      image.png

      现在就能访问wordpress了,根据提示完成后续配置。包括提供数据库,用户名,编辑配置文件等,基本都是在网页中进行的,配置过程中可能会遇到配置文件无法写入的问题,这是由于wordpress目录中的文件属主属组有问题,可以修改属主,也可以自己新建。当一切就绪就能看到wordpress的登录界面了。

      image.png

      但这里依然有个问题,由于只把动态资源送往fpm服务器,而静态资源根本就无法访问,导致图片、标题等信息无法获取,解决办法就是在httpd服务器上也安装一份wordpress。最终效果如下:

      image.png

      image.png

2、什么是DML?常用SQL举例,每个命令至少1个例子,最多不超过3个例子。

      数据库管理指令有很多,一般可分为客户端命令和服务器端命令,虽然命令不区分大小写,但约定俗成的把客户端命令用小写表示,服务器端命令用大写表示。而服务器端命令又可以分为DDL和DML,DDL是数据库模式定义语言用于描述数据库中要存储的现实世界实体的语言;DML是负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。要使数据库工作一般先使用DDL创建库、表,并为其设定选项,然后通过DML将数据插入、更新以及删除。

      首先创建数据库

      image.png

      然后创建表,创建表时别忘了设置选项

      image.png

      使用DML命令INSERT,插入内容

      image.png

      使用DML命令SELECT,查询表中的具体内容,需要与多种子句配合使用。如:FROM,从哪张表中选出查看;WHERE,指明挑选行的条件,在有大量数据时这个子句是很有必要的;ORDER BY,排序,默认为升序,想改为降序的话可在命令行最后加上DESC;GROUP BY,分组,通常用于统计配合上自带函数count()、sum()等;HAVING,对分组的结果进行过滤。

      image.png

      image.png

      image.png

      使用DML命令DELETE,删除内容

      image.png 

3、简述ftp的主动和被动模式,并实现基于pam认证的vsftpd。

      ftp(文件传输协议)是一款非常古老的协议,主要为了完成各主机之间文件传送的。工作原理是分两步走,由客户端发起命令连接,目标是服务期端的TCP21号端口,服务器响应后连接建立完成,客户端可由此连接发送诸如get、put、ls等指令,然后再由服务器端通过TCP20号端口重新发起一个数据连接指向客户端,等客户端响应后连接建立完成,服务器端可由此连接发送真正的数据给客户端,这就是主动模式。在现今网络环境中,由于防火墙的存在客户端的端口不是随意开放的,会导致命令连接可以建立,但服务器端主动发送来的数据连接会被防火墙阻拦,主动模式就不可行了,所以开发出了被动模式。依然还是建立命令连接,建立完成后,还是由客户端发起数据连接建立的请求,服务器端只做响应,数据连接建立完成后就通过此连接发送真正的数据。

      ftp在Linux上的具体实现有一款程序叫vsftpd,借助了pam进行认证,在服务器端下载安装。

      image.png

      直接启动服务,其他主机就可以登录访问了。

      image.png

      不过这是启用的匿名访问,访问的路径为/var/ftp目录,默认是不具备上传功能的。除了匿名用户,还可以使用系统用户访问ftp。

      image.png

      系统用户默认访问的是其用户名的家目录,使用的是shadow文件中存放的密码,并且在报文交互中是明文的,这是一件非常危险的事情。所以在pam配置中定义了许多控制功能,诸如白名单、黑名单、锁用户等,总结下来就是要限制系统用户的登录用户名和访问目录,两者结合起来才能使ftp安全管理比较完善。

      除了系统用户和匿名用户,vsftpd还支持虚拟用户登录,即非系统用户,完全是有另外个文件或数据库提供的用户名和密码作为登录账号,要借助到其他程序进行部署。

 4、简述NFS服务原理及配置。

      NFS(网络文件系统)最早是由SUN公司研发的,现已开源。在各种文件系统和开发人员之间有一层虚拟文件系统叫VFS,开发人员不用管底层文件系统是哪一个,只需直接调用VFS系统提供的接口就行了。而NFS也是底层的文件系统之一,所以也需要挂载,用户访问挂载的路径,NFS通过套接字访问远程服务器,服务器接收后通过VFS访问一个本地的文件系统,可能是xfs或ext等,再向外输出时通过内核中的NFS模块找到对端,通过网络将数据传输过去,这整个过程就涉及了重要的概念RPC,它使一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。特别要注意的是对于NFS服务器上的文件的属主属组需要和客户端统一,否则在权限上会出现问题。

      NFS在Linux上的具体实现叫nfsd,先在服务器端,使用lsmod命令查看内核是否加载了nfs模块,默认都已安装了,然后安装nfs-utils程序。

      image.png

      编辑/etc/exports文件知名共享出去的是本地哪个路径,哪个文件系统。该文件每一行定义一个共享位置,格式为路径 用户1(选项) 用户2(选项)......,其中路径指的是本地路径;用户可以是主机的IP地址,也可以是FQDN,甚至可以用“*”表示全部;选项有ro(只读)、rw(读写)、sync(同步)、async(异步)等

      image.png

      启动服务后服务器端就算配置完成了。

      来到客户端,可以先使用showmount命令查看是否有共享NFS系统

      image.png

      然后使用mount.nfs将其挂载即可使用啦

      image.png

5、简述samba服务,并实现samba配置。

      samba:NFS只能实现Linux或Unix系统之间的文件系统共享,而Windows系统一直有其自身的一套共享,利用NETBIOS做广播主机名解析,利用SMB作为文件系统共享协议,除此之外,还有工作组、域等概念。后来由澳大利亚的研究者在Linux系统上研发出了samba,其能实现Linux与Windows系统之间的文件系统共享,打印机共享和NETBIOS协议。

      服务器端安装samba程序包,而客户端需要安装samba_client程序包,默认已安装

      image.png

      配置文件是/etc/samba/smb.conf,分成全局配置和共享定义两部分,前者用来配置samba自身运行的参数,后者用来具体指明共享的参数。可以参考smb.conf.example文件进行配置。全局配置中有这些比较重要的参数:workgroup=表示windows系统中的工作组概念;server string=表示windows系统点击共享文件时显示的×××标签信息;netbios name=表示windows系统上网上邻居显示的主机名;interface=表示监听的网卡接口或接口IP地址,不写的话默认为本机所有接口;hosts allow=表示白名单地址,默认为所有;hosts deny=表示黑名单地址;logfile=表示日志存放位置;max log size=表示日志滚动,最大保存多少kb;security=user表示安全模式,现在只有这一种模式可用了,表示认证方式为利用samba服务器本地的系统用户,而密码用的是专门设置的samba密码,设置密码的方式是在服务器端使用smbpasswd -a+用户名的方式。而共享定义配置短是以“[]”为开头定义一个子段,默认已有的子段是homes和printers,主要关注homes子段的配置命令:comment=表示用户登录后的默认路径,默认是home也就是该用户的家目录;browseable=表示是否能被其他用户浏览到各自的共享信息;writeable=表示是否拥有写权限。

      在共享定义配置段中定义一个子段

      image.png

      为系统用户创建个samba专用登录密码

      image.png

      启动服务以后就可以同时使用Linux系统和Windows系统访问此共享文件系统了,而且Linux系统也同样支持挂载使用

      image.png

      image.png

      image.png

      

      

      

猜你喜欢

转载自blog.51cto.com/13762416/2331262