Linux应用基础教程(基于CentOS 7)课件 梁如军 第13、14章 Samba服务、Apache基础_第1页
Linux应用基础教程(基于CentOS 7)课件 梁如军 第13、14章 Samba服务、Apache基础_第2页
Linux应用基础教程(基于CentOS 7)课件 梁如军 第13、14章 Samba服务、Apache基础_第3页
Linux应用基础教程(基于CentOS 7)课件 梁如军 第13、14章 Samba服务、Apache基础_第4页
Linux应用基础教程(基于CentOS 7)课件 梁如军 第13、14章 Samba服务、Apache基础_第5页
已阅读5页,还剩146页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第13章

Samba服务本章内容要点SMB/CIFS协议和Samba简介安装和启动Samba配置Samba文件共享在Linux环境下访问Samba共享2024年5月30日2CreativeCommonsLicense(BY-NC-SA)本章学习目标熟悉SMB/CIFS协议了解Samba的功能熟悉Samba的工具使用学会安装和启动Samba服务器掌握Samba文件共享的配置学会在Linux环境下访问Samba共享2024年5月30日3CreativeCommonsLicense(BY-NC-SA)SMB/CIFS协议和Samba简介2024年5月30日4CreativeCommonsLicense(BY-NC-SA)SMB协议SMB(ServerMessageBlock,服务信息块)协议是一个高层协议,它提供了在网络上的不同计算机之间共享文件、打印机和不同通信资料的手段。SMB使用NetBIOSAPI实现面向连接的协议,该协议为Windows客户程序和服务提供了一个通过虚电路按照请求-响应方式进行通信的机制。SMB的工作原理就是让NetBIOS与SMB协议运行在TCP/IP上,并且使用NetBIOS的名字解释器让Linux机器可以在Windows的网上邻居中被看到,从而和Windows9X/NT/200X进行相互沟通,共享文件和打印机。2024年5月30日CreativeCommonsLicense(BY-NC-SA)5SMB与网络模型的关系2024年5月30日CreativeCommonsLicense(BY-NC-SA)6CIFS协议通用网际文件系统(CIFS)是微软服务器消息块协议(SMB)的增强版本提供计算机用户在企业内部网和因特网上共享文件的标准方法CIFS在TCP/IP上运行,利用因特网上的全球域名服务系统(DNS)增强其可扩展性,同时为因特网上普遍存在的慢速拨号连接优化2024年5月30日CreativeCommonsLicense(BY-NC-SA)7CIFS的特点文件访问的完整性为慢速链接优化为文件或目录的访问提供安全性高性能和可扩展性使用统一码(Unicode)文件名使用全局文件名2024年5月30日CreativeCommonsLicense(BY-NC-SA)8微软的SMB协议及其版本[MS-CIFS]——/en-us/library/ee442092.aspx[MS-SMB]——/en-us/library/cc246231.aspx[MS-SMB2]——/en-us/library/cc246482.aspx2024年5月30日CreativeCommonsLicense(BY-NC-SA)9Windows版本支持的SMB协议版本Windows95/98/XP、WindowsServerNT4.0/2000/2003SMB/CIFSWindowsVistaSP1、WindowsServer2008SMB2.0.2Windows7、WindowsServer2008R2SMB2.1,SMB2.0.2Windows8、WindowsServer2012SMB3.0,SMB2.1,SMB2.0.2Windows8.1、WindowsServer2012R2SMB3.0.2,SMB3.0,SMB2.1,SMB2.0.2Windows10、WindowsServer2016SMB3.1.1,SMB3.0.2,SMB3.0,SMB2.1,SMB2.0.2Samba简介Samba是一组软件包,使Linux支持SMB/CIFS协议Samba可以在几乎所有的类UNIX平台上运行Samba最初于1991年由澳大利亚人AndrewTridgell研发Samba基于GPL发行,如今由Samba小组()维护Samba更新速度很快,当前的最新版本是3.3.8版2024年5月30日CreativeCommonsLicense(BY-NC-SA)10Samba的版本版本发布时间说明3.02003/09/23提供文件和打印共享服务,并整合WindowsNT4.0的域,既可是主域控制器(PDC)也可是域成员。3.62011/08/09支持SMB2协议4.12013/10/10支持SMB3协议,可以作为活动目录域控制器(ActiveDirectorydomaincontroller)或其成员。4.32015/09/08支持SMB3.1.1协议2024年5月30日CreativeCommonsLicense(BY-NC-SA)11Samba的主要功能使Linux主机成为Windows网络中的一份子,与Windows系统相互分享资源。使Linux主机可以使用Windows系统共享的文件和打印机。使Linux主机成为文件服务器或打印服务器,为Linux/Windows客户端提供文件共享服务和远程打印服务。使Linux主机担任Windows域控制器和Windows成员服务器,管理NT/200X网络。使Linux主机担任WINS名字服务器,提供NetBIOS名字解析服务。提供用户身份认证功能。支持SSL安全套接层协议。2024年5月30日CreativeCommonsLicense(BY-NC-SA)12Samba提供的服务Samba提供了四种主要服务文件和打印机共享用户验证和授权名子解析浏览(服务通告)Samba的守护进程Smbd:实现共享和验证授权服务Nmbd:实现名字解析和浏览服务2024年5月30日CreativeCommonsLicense(BY-NC-SA)13Samba的应用运行在Windows工作组网络并提供文件和打印共享服务。2024年5月30日CreativeCommonsLicense(BY-NC-SA)14Samba的应用(续)2024年5月30日CreativeCommonsLicense(BY-NC-SA)15加入Windows活动目录并成为其成员。作为活动目录域控制器(ADS),需配合Kerberos服务和LDAP服务。CentOS7中的SambaCentOS7中提供了Samba的RPM包samba-common:包括Samba服务器和客户均需要的文件。samba:Samba服务端软件。samba-winbind:可选的winbind服务。samba-client:Samba客户端软件。samba-swat:Samba的Web配置工具。安装#yuminstallsamba2024年5月30日CreativeCommonsLicense(BY-NC-SA)16SMB服务概览软件包:samba,samba-common服务类型:由Systemd启动的守护进程配置单元:

/usr/lib/systemd/system/{smb,nmb}d.service守护进程:/usr/sbin/nmbd,/usr/sbin/smbd监听端口:[NetBIOS]UDP:137(-ns),UDP:138(-dgm),TCP:139(-ssn)[SMBoverTCP]TCP:445(-ds)配置文件:/etc/samba/*相关软件包:samba-swat,samba-client,testparm,cifs-utils2024年5月30日CreativeCommonsLicense(BY-NC-SA)17Samba的相关工具服务器端工具/usr/bin/smbpasswd:用于设置Samba用户账号及口令。/usr/bin/testparm:用于检测配置文件的正确性。/usr/bin/smbstatus:用于显示Samba的连接状态。客户端工具/usr/bin/findsmb:用于查找网络中的Samba服务器。/usr/bin/smbclient:Linux下的Samba客户端。/usr/bin/smbget:基于SMB/CIFS的类似于wget的下载工具。/usr/bin/smbtar:类似于tar的归档工具,用于将SMB/CIFS的共享打包备份到Linux主机。2024年5月30日CreativeCommonsLicense(BY-NC-SA)18Samba相关的配置文件/etc/sysconfig/samba:用于设置守护进程的启动参数。/etc/samba/smb.conf:主配置文件。/etc/samba/smbusers:用于映射Linux用户和Windows用户。/etc/samba/lmhosts:用于设置NetBIOS名字与IP地址的对应关系表。/etc/pam.d/samba:Samba的PAM配置文件。/etc/rc.d/init.d/smb:Samba的INIT启动脚本。2024年5月30日CreativeCommonsLicense(BY-NC-SA)19CentOS7中Samba

—/etc/samba/smb.conf的默认配置工作组:MYGROUP安全等级:user设置用户密码加密:Yes口令数据库的后台:tdbsam(TDB数据库)口令数据库:/etc/samba/{passdb,secrets}.tdb认证用户时服从PAM的管理限制:Yes设置了每个用户的主目录的共享设置了全部打印机(/etc/cups/printers.conf中定义的)的共享2024年5月30日CreativeCommonsLicense(BY-NC-SA)20Samba服务器角色standalone:独立服务器模式。用户验证由本机负责,登录用户的口令数据库存储在本机memberserver:成员服务器模式。用户验证由Windows或Samba域控制器负责domaincontroller:域控制器模式。本机为Windows和Samba客户提供登录验证服务2024年5月30日CreativeCommonsLicense(BY-NC-SA)21Samba的安全等级User:由本地Samba服务器负责账户验证使用smbpasswd设置账号(默认的安全等级)Domain:账户验证账户及口令的工作由其他的Windows或Samba域控制器负责需要使用“passwordserver”指令指定验证服务器Ads:验证账户及口令的工作由支持Kerberos验证的Windows活动目录服务器负责。需要使用“realm”指令指定Kerberos领域2024年5月30日CreativeCommonsLicense(BY-NC-SA)22Samba账户及口令数据库2024年5月30日23CreativeCommonsLicense(BY-NC-SA)Samba账户Samba使用的账户文件/数据库是与系统账户文件分离的。当设置了user的安全等级后(此为默认设置),将由本地系统对访问Samba共享资源的用户进行认证。用户认证需要Samba的口令文件,CentOS7默认使用.tdb格式的口令数据库,初始情况下口令数据库文件并不存在。为了创建Samba的口令数据库文件,管理员可以在添加Samba账户的同时创建它。管理员可以使用

smbpasswd

命令配置Samba账号并设置其口令。2024年5月30日CreativeCommonsLicense(BY-NC-SA)24smbpasswd

命令username:为username设置Samba口令,仅超级用户可用。选项-a:添加Samba用户。选项-d:冻结Samba用户,就是这个用户不能在登录了。选项-e:解冻Samba用户,让冻结的用户可以再登录。选项-x:删除Samba用户。选项-s:非交互模式,从标准输入读取口令。选项-rMACHINE:指定远程Samba服务器的主机名或IP。选项-UUSER:指定Samba用户名,省略时默认为当前登录用户。2024年5月30日CreativeCommonsLicense(BY-NC-SA)25smbpasswd[options][username]成批添加samba账户#chmod+x/root/bin/set-users-smb-init-passwd.sh#set-users-smb-init-passwd.sh2024年5月30日CreativeCommonsLicense(BY-NC-SA)26#!/bin/bash##filename:/root/bin/set-users-smb-init-passwd.shforusernamein$(awk-F':''$3>=1000{print$1}'/etc/passwd);do(echo"centos";echo"centos")|smbpasswd-s-a$usernamedonesmbpasswd

命令举例$smbpasswd$smbpasswd-r52-Uosmond#smbpasswd-ajasonxie#smbpasswd-xnfsnobody#smbpasswd-a2024年5月30日CreativeCommonsLicense(BY-NC-SA)27smbpasswd命令注意事项使用smbpasswd命令添加Samba用户口令之前同名的系统用户账号必须已经存在。同名的本地系统用户账号不存在时应使用useradd命令添加。用户使用smbpasswd命令修改自己的口令时,smb服务必须已经启动。可以使用pdbedit-Lv命令查看Samba口令数据库的内容。2024年5月30日CreativeCommonsLicense(BY-NC-SA)28Samba的测试和启动2024年5月30日29CreativeCommonsLicense(BY-NC-SA)正确性检查和启动使用testparm检查/etc/samba/smb.conf的语法#testparm#testparm--show-all-parameters#testparm-v启动Samba服务#systemctlstartsmbnmb#systemctlenablesmbnmb查看Samba监听的端口#netstat-lunt|egrep'137|138|139|445'2024年5月30日CreativeCommonsLicense(BY-NC-SA)30在Windows环境下

访问Samba共享使用网上邻居通过映射网络驱动器使用UNC路径\\52\\centos1\osmond使用命令行(Windows的cmd窗口)C:\>netuseY:\\52\osmondC:\>netuseC:\>netuseY:/delete2024年5月30日CreativeCommonsLicense(BY-NC-SA)31在Linux下访问Samba共享检查Samba服务器所共享的资源使用匿名用户检查Samba服务器所共享的资源$smbclient-L//52使用Samba用户查看Samba服务器所共享的资源$smbclient-L//52-UOsmond列出Samba的资源使用情况查看详细的使用信息(包括进程、共享服务和锁文件等)$smbstatus查看简要的使用信息$smbstatus-b2024年5月30日CreativeCommonsLicense(BY-NC-SA)32Samba的主配置文件2024年5月30日33CreativeCommonsLicense(BY-NC-SA)Samba配置基础smb.conf文件的分节结构[Global]:用于定义全局参数和缺省值[Homes]:用于定义用户的Home目录共享[Printers]:用于定义打印机共享[Userdefined_ShareName]:用户自定义共享(可有多个)2024年5月30日CreativeCommonsLicense(BY-NC-SA)34Samba的全局参数(1)基本全局参数netbiosname:设置Samba的NetBIOS名字workgroup:设置Samba要加入的工作组serverstring:指定浏览列表里的机器描述unixcharset:指定服务器使用的字符集安全全局参数interfaces:指定Samba监听的网络端口security:定义Samba的安全级别passdbbackend:指定口令数据库的后台hostsallow:指定可以访问Samba的主机列表hostsdeny:指定不可以访问Samba的主机列表2024年5月30日CreativeCommonsLicense(BY-NC-SA)35Samba的全局参数(2)日志全局参数logfile:指定日志文件的名称loglevel:指定日志等级(0-10,数值越大越详细)maxlogsize:指定日志文件的最大尺寸(KB)效率全局参数changenotifytimeout:设置服务器周期性异常通知deadtime:客户端无操作多少分钟后服务器端中断连接maxconnections:设置同时访问Samba服务器及其共享资源的客户数量(0表示不限制)maxopenfiles:同一个客户端最多能打开的文件数目socketoptions:设置服务器和客户会话的Socket选项2024年5月30日CreativeCommonsLicense(BY-NC-SA)36Samba的共享资源参数(1)基本共享参数comment:指定对共享的描述path:指定共享服务的路径文件系统控制参数dontdescend:指定内容不可见的子目录列表hidefiles:指定含有特定关键字的文件的可见性vetofiles:指定含有特定关键字的文件的可见性和可访问性hidedotfiles:指定是否将Linux的隐藏文件对Windows也隐藏followsymlinks:是否跟随符号链接2024年5月30日CreativeCommonsLicense(BY-NC-SA)37Samba的共享资源参数(2)访问控制参数available:指定共享资源是否可用browseable:指定共享的路径是否可浏览(默认为可以)readonly:指定共享的路径是否为只读writable:指定共享的路径是否可写readlist:设置只读访问用户列表writelist:设置读写访问用户列表validusers:指定允许使用服务的用户列表invalidusers:指定不允许使用服务的用户列表2024年5月30日CreativeCommonsLicense(BY-NC-SA)38Samba的共享资源参数(3)访问控制参数public:指定是否可以允许guest账户访问guestok:指定是否可以允许guest账户访问guestonly:指定是否只允许guest账户访问guestaccount:指定一般性客户的账号adminusers:为指定的共享设置管理员forceuser:强制写入的文件具有指定的属主forcegroup:强制写入的文件具有指定的组hostsallow:指定可以访问共享资源的主机列表hostsdeny:指定不可以访问共享资源的主机列表2024年5月30日CreativeCommonsLicense(BY-NC-SA)39Samba共享配置举例2024年5月30日40CreativeCommonsLicense(BY-NC-SA)Samba共享的基本配置修改RHEL/CentOS7默认的全局配置参数使用符号链接组织本地共享资源配置ftp用户的上传共享2024年5月30日CreativeCommonsLicense(BY-NC-SA)41参见教材的配置步骤文件系统权限

和Samba共享权限Samba服务器要将本地文件系统共享给Samba用户,涉及本机文件系统和Samba两种权限本机文件系统权限使用chmod和chown命令设置使用setfacl命令设置FACL权限Samba权限在主配置文件中使用Samba的访问控制参数设置当Samba用户访问共享时,最终的权限将是这两种权限中最严格的权限(交集)。2024年5月30日CreativeCommonsLicense(BY-NC-SA)42为用户和组设置Samba共享为所有用户配置Samba的只读共享和读写共享为指定用户配置Samba读写共享为指定的单个用户配置读写共享为指定的多个用户配置读写共享为指定组配置读写共享组中的所有成员均具有读写权限组中仅一个成员具有读写权限,其他成员具有只读权限组中有部分成员具有读写权限,其他成员具有只读权限2024年5月30日CreativeCommonsLicense(BY-NC-SA)43参见教材的配置步骤Samba的其他配置配置Windows和Linux的用户映射配置Samba的隐藏共享限制文件共享类型主机访问控制用户访问控制对不同主机或用户的访问实施不同的配置2024年5月30日CreativeCommonsLicense(BY-NC-SA)44参见教材的配置步骤在Linux环境下使用Samba共享2024年5月30日45CreativeCommonsLicense(BY-NC-SA)smbclient-U用户名参数表示以指定用户的身份访问共享当访问Windows共享时,用户名是所访问的Windows计算机中的用户账户,验证口令是Windows计算机中的用户账户的口令当访问Linux提供的Samba共享时,用户名是所访问的Linux计算机中的Samba用户账户,验证口令是Samba用户账户的口令2024年5月30日CreativeCommonsLicense(BY-NC-SA)46smbclient//NetBIOS名或IP地址/共享名

-U用户名Samba提供了一个类似FTP客户程序的Samba客户程序smbclient可以使用smbclient查看并访问共享挂装Samba共享手动挂装Windows/Samba共享#mkdir–p/mnt/smb/win01/tools/mnt/smb/centos1/public#mount–tcifs//win01/tools/mnt/smb/win01/tools-ouser=osmond#mount.cifs//52/pulic/mnt/smb/centos1/public-ouser=smbuser1手动卸装Windows/Samba共享#umount/mnt/smb/win01/tools#umount/mnt/smb/centos1/public2024年5月30日CreativeCommonsLicense(BY-NC-SA)47启动挂装Samba共享/etc/fstab2024年5月30日CreativeCommonsLicense(BY-NC-SA)48//win01/tools/mnt/smb/win01/toolscifscredentials=/etc/samba/cred1.txt00//52/pulic/mnt/smb/centos1/publiccifscredentials=/etc/samba/cred2.txt00#cat<<_END_>/etc/samba/cred1.txtusername=osmondpassword=osmond-s-passwd_END_#cat<<_END_>/etc/samba/cred2.txtusername=smbuser1password=smbuser1-s-passwd_END_#chmod0600/etc/samba/cred{1,2}.txt本章思考题什么是SMB/CIFS?什么是Samba?Samba有几种认证方式?如何设置Samba用户口令?如何检验Samba配置文件参数的正确性?如何在Linux下访问Windows的共享资源?2024年5月30日49CreativeCommonsLicense(BY-NC-SA)本章实验学会设置Samba用户口令。学会配置Samba的各种文件共享。学会使用smbclient命令访问Windows/Linux共享。学会使用mount.cifs命令挂装远程CIFS文件系统。2024年5月30日50CreativeCommonsLicense(BY-NC-SA)进一步学习学习ChristopherR.Hertel所著的《ImplementingCIFS:TheCommonInternetFileSystem》(/cifs/)。学习TimothyDEvans所著的《NetBIOS,NetBEUI,NBF,NBT,NBIPX,SMB,CIFSNetworking》(http://timothydevans.me.uk/nbf2cifs/nbf2cifs.pdf)了解与SMB/CIFS相关的协议。2024年5月30日CreativeCommonsLicense(BY-NC-SA)51进一步学习学习使用SWAT或Webmin等Web工具配置Samba。学习配置Linux下的CUPS本地打印机。学习配置Samba的打印共享。学习将Samba4服务器配置为Windows活动目录成员的方法。学习将Samba4服务器配置为活动目录域控制器的方法。2024年5月30日52CreativeCommonsLicense(BY-NC-SA)进一步学习学习NAS发行版的安装和使用FreeNAS——Openfiler——Rockstor——OpenMediaVault——2024年5月30日CreativeCommonsLicense(BY-NC-SA)53第14章

Apache基础本章内容要点Web服务和HTTP协议Apache的特性、结构Apache的安装、启动和管理Apache的配置文件语法Apache的认证和授权Apache的虚拟主机Apache的日志管理Apache的SSL支持2024年5月30日55CreativeCommonsLicense(BY-NC-SA)本章学习目标掌握Web组件的组成熟悉Apache的特性、结构和运行机制掌握Apache的安装、启动与停止熟悉Apache的配置文件语法掌握别名和目录容器的配置掌握主机访问控制、认证和授权的配置掌握基于IP和域名的虚拟主机配置掌握基于SSL协议的Apache配置2024年5月30日56CreativeCommonsLicense(BY-NC-SA)WWW和Apache2024年5月30日57CreativeCommonsLicense(BY-NC-SA)Web服务器简介WWW是一种交互式图形界面的Internet服务WWW(WorldWideWeb),也称Web具有强大的信息连接功能Internet上最热门的服务之一成为人们在网上查找、浏览信息的主要手段Web服务具有如下特点Web是图形化的和易于导航的Web是与平台无关的Web是分布式的Web是动态的Web是交互的

2024年5月30日CreativeCommonsLicense(BY-NC-SA)58Web组件统一资源标识符URIWeb客户和Web服务器超文本传输协议HTTPWeb缓存和Web代理Cookie和Session机制Web内容的构建组件2024年5月30日CreativeCommonsLicense(BY-NC-SA)59Web组件——URI协议名称—所使用的访问协议。如:http、ftp等机器地址—数据所在的机器,IP地址/域名端口号—请求数据的数据源端口(可省略)路径名—数据所在的相对路径文件名—请求数据的文件名2024年5月30日CreativeCommonsLicense(BY-NC-SA)60协议名称://机器地址:端口号/路径名/文件名9191:8080/diveintopython3/whats-new.html9191:8021Web组件——客户与服务器Web服务器的职责默认监听TCP/IP的80端口接受Web客户请求检查请求的合法性,包括安全性屏蔽针对请求获取并制作和处理数据把处理后的信息发送给提出请求的客户机Web浏览器的职责生成一个Web请求(通常在单击某个链接点时启动)通过网络将Web请求发送给某个Web服务器解释服务器传来的Web文档,并把结果显示在屏幕上2024年5月30日CreativeCommonsLicense(BY-NC-SA)61Web客户与服务器通信过程每取一个网页建立一次连接,读完后马上断开;当需要另一个网页时重新连接,周而复始。2024年5月30日CreativeCommonsLicense(BY-NC-SA)62Web组件——HTTP协议(1)超文本传输协议(HyperTextTransferProtocol)是在Web上传输资源最常用的方式HTTP规定了客户机和服务器等Web组件

相互交换信息的格式和含义HTTP协议的特点URI资源识别请求-响应方式无状态性携带元数据2024年5月30日CreativeCommonsLicense(BY-NC-SA)63Web组件——HTTP协议(2)HTTP协议的版本HTTP/1.0HTTP/1.1——当前广泛使用的协议标准。RFC7230,HTTP/1.1:MessageSyntaxandRoutingRFC7231,HTTP/1.1:SemanticsandContentRFC7232,HTTP/1.1:ConditionalRequestsRFC7233,HTTP/1.1:RangeRequestsRFC7234,HTTP/1.1:CachingRFC7235,HTTP/1.1:AuthenticationHTTP/22024年5月30日CreativeCommonsLicense(BY-NC-SA)64Web组件——HTTP协议(3)HTTP的连接方式2024年5月30日CreativeCommonsLicense(BY-NC-SA)65Web组件——HTTP协议(4)HTTP的协议头(HTTPheader)是HTTP会话请求和响应的一部分,用于客户端和服务器进行HTTP协议协商。请求头(RequestHeaderFields)

(/html/rfc7231#section-5)响应头(ResponseHeaderFields)(/html/rfc7231#section-7)使用curl命令获取HTTP的协议头curl-s-I-v|egrep'^>|^<'2024年5月30日CreativeCommonsLicense(BY-NC-SA)66Web组件——HTTP协议(5)HTTP的请求方法HEADGETPOSTPUTDELETECONNECTOPTIONSTRACE2024年5月30日CreativeCommonsLicense(BY-NC-SA)67Web组件——HTTP协议(6)HTTP的响应代码信息1xx表明服务端接收了客户端请求,客户端继续发送请求成功2xx客户端发送的请求被服务端成功接收并成功进行了处理重定向3xx服务端给客户端返回用于重定向的信息客户端错误4xx客户端的请求有非法内容服务器错误5xx服务端未能正常处理客户端的请求而出现意外错误2024年5月30日CreativeCommonsLicense(BY-NC-SA)68Web组件——

Web缓存和Web代理Web缓存HTTP协议定义了客户端缓存机制。架设Web缓存服务器和内容分发网络(ContentDeliveryNetwork,CDN)可以加快客户端访问。Web代理同时扮演着客户和服务器的双重身份对于Web客户来说是服务器对于Web服务器来说是客户还可以过滤不希望的Web请求,实现高速缓存等2024年5月30日CreativeCommonsLicense(BY-NC-SA)69Web组件——

Cookie和Session机制HTTP是一个无状态协议,因此当Web服务器将Web客户请求的响应发送出去后,服务器便不必保存任何信息了。Web服务器可以指示Web客户以存储Cookie的方式在一系列请求和响应之间维持状态,而服务器端则采用Session机制保持状态。2024年5月30日CreativeCommonsLicense(BY-NC-SA)70Web组件——

Web内容的构建组件使用HTML/XHTML、CSS、Javascript构建静态Web页面使用CGI、PHP、Python、Ruby、JavaServlet、Node.js等技术构建动态Web应用使用各种数据发布格式及语言(XML、YAML、JSON、RSS/Atom)交换数据2024年5月30日CreativeCommonsLicense(BY-NC-SA)71HTML超文本标记语言(HTML)是为纯文本格式的超文本文档提供了一种标准的表述方式HTML是由标准通用标记语言(SGML)演化而来的HTML可以使用标记格式化文本、引用图片或嵌入其他文档的超链接有关HTML和XHTML的更多信息,请参见:/MarkUp/2024年5月30日CreativeCommonsLicense(BY-NC-SA)72Linux下常用的Web服务器ApacheNginx/Lighttpd/2024年5月30日CreativeCommonsLicense(BY-NC-SA)73Apache简介Apache是一个知名的开源Web服务器由NCSAhttpd1.3经过较为完整的代码重写名称Apache意为APatchyServer,即它是基于现存的代码和一系列的Patch文件Apache软件基金会(ASF,ApacheSoftwareFoundation)

维护2012.02——Apache2.4版发行在功能、效率、扩展及速度方面居于领先的地位根据Netcraft提供的最新调查资料,ApacheWeb服务器是使用比例最高的Web服务器2024年5月30日CreativeCommonsLicense(BY-NC-SA)74Apache的特性开放源代码、跨平台应用。模块化设计、运行稳定、良好的安全性。实现了动态共享对象(DSO),允许在运行时动态装载功能模块。支持最新的HTTP1.1协议。支持虚拟主机、支持HTTP认证、集成了代理服务、支持安全Socket层(SSL)。使用简单而强有力的基于文本的配置文件、具有可定制的服务器日志。支持通用网关接口CGI、FastCGI、服务器端包含命令(SSI)。支持PHP/Perl/Python/Ruby/JavaServlets等脚本编程语言。支持第三方软件开发商提供的大量功能模块。2024年5月30日CreativeCommonsLicense(BY-NC-SA)75参考

/docs/2.4/new_features_2_4.html查看Apache2.4版的新特性Apache的结构Apache由内核、标准模块和第三方提供的模块三个层次组成模块信息:2024年5月30日CreativeCommonsLicense(BY-NC-SA)76Apache的运行模式Apache2.X使用新的多处理模块(Multi-ProcessingModule,MPM)在服务器处理多个请求时控制Apache的运行方式Apache中的3种运行模式多进程模型预派生(Profork)MPM多进程多线程混合模型工作者(Worker)MPM事件(Event)MPM2024年5月30日CreativeCommonsLicense(BY-NC-SA)77CentOS下的Apache2024年5月30日78CreativeCommonsLicense(BY-NC-SA)Apache服务概览软件包:httpd,httpd-devel,httpd-manual服务类型:由Systemd启动的守护进程配置单元:/usr/lib/systemd/system/httpd.service守护进程:/usr/sbin/httpd端口:80(http),443(https)配置:/etc/httpd/Web文档:/var/www/相关软件包:mod_ssl2024年5月30日CreativeCommonsLicense(BY-NC-SA)79Apache的安装和启动安装#yuminstallhttpdhttpd-manual管理httpd服务#systemctl{start|stop|status|restart|reload}httpd#systemctl{enable|disable}httpd检查配置文件的正确性#apachectl-t

#httpd-t2024年5月30日CreativeCommonsLicense(BY-NC-SA)80Apache的相关文件管理工具/usr/sbin/apachectl:ApacheHTTP服务器控制接口/usr/bin/ab:ApacheHTTP服务器性能测试工具/usr/bin/logresolve:将Apache日志文件中的IP地址解析为主机名/usr/sbin/rotatelogs:

滚动Apache日志而无须终止服务器2024年5月30日CreativeCommonsLicense(BY-NC-SA)81查看Apache的相关信息显示Apache的编译参数#apachectl-V或httpd-V查看已经被编译的模块#apachectl-l或httpd-l列出所有模块,包括mod_so加载的DSO#apachectl-M或httpd-M2024年5月30日CreativeCommonsLicense(BY-NC-SA)82CentOS下Apache的默认配置服务器的根目录:/etc/httpd运行Apache的用户:apache运行Apache的组:apache监听端口:80模块存放路径:/usr/lib/httpd/modulespreforkMPM运行方式的参数:StartServers8MinSpareServers5MaxSpareServers20MaxClients1502024年5月30日CreativeCommonsLicense(BY-NC-SA)83CentOS下Apache的默认配置

(续)默认的Web文档/var/www/html/:根文档目录/var/www/cgi-bin/:CGI程序目录/var/www/error/:默认的错误文档目录/var/www/icons/:与icons相关的图片目录默认的日志文件/var/log/httpd/access_log:访问日志/var/log/httpd/error_log:错误日志2024年5月30日CreativeCommonsLicense(BY-NC-SA)84CentOS下Apache的默认配置

(续2)Apache的配置文件/etc/httpd/conf/httpd.conf:Apache的主配置文件/etc/httpd/conf.d/*.conf:被主配置文件包含的配置文件/etc/httpd/conf/magic:mod_mime_magic模块使用的Magic数据,无需配置/etc/logrotate.d/httpd:Apache的日志滚动配置文件/etc/sysconfig/httpd:httpd守护进程的启动配置文件2024年5月30日CreativeCommonsLicense(BY-NC-SA)85Apache配置基础2024年5月30日86CreativeCommonsLicense(BY-NC-SA)Apache配置文件种类主配置文件/etc/httpd/conf/httpd.conf被主配置文件包含的配置文件/etc/httpd/conf.d/*.conf可以用Include/IncludeOptional指令定义被包含的配置文件基于目录的配置文件使用分布在网站目录树中的特殊文件来进行分散配置这些特殊的文件默认为.htaccess也可以用

AccessFileName

指令来改变它的名字2024年5月30日CreativeCommonsLicense(BY-NC-SA)87配置文件的基本语法每一行包含一个指令,在行尾使用反斜杠”\”可以表示续行配置文件中的指令不区分大小写,但是指令的参数(argument)通常区分大小写以”#”开头的行被视为注解并在读取时被忽略。注解不能出现在指令的后边空白行和指令前的空白字符将在读取时被忽略,因此可以采用缩进以保持配置层次的清晰2024年5月30日CreativeCommonsLicense(BY-NC-SA)88Apache的两种编译方式静态编译将核心模块和所需要的模块一次性编译优点:运行速度快缺点:要增加或删除模块必须重新编译整个Apache动态编译只编译核心模块和DSO(动态共享对象)模块—mod_so优点:各模块可以独立编译,并可随时用LoadModule指令加载,用于特定模块的指令可以用<IfModule>指令包含起来,使之有条件地生效。缺点:运行速度稍慢2024年5月30日CreativeCommonsLicense(BY-NC-SA)89Apache的模块查看Apache的编译参数#httpd-lRHEL/CentOS中的Apache是动态编译的mod_so.c模块使Apache支持DynamicSharedObjects(DSO)可在不重新编译Apache的情况下使用APacheeXtenSion(apxs)编译Apache的其他模块所有动态编译的模块在使用时需要使用LoadModule指令加载LoadModulerewrite_modulemodules/mod_rewrite.so2024年5月30日CreativeCommonsLicense(BY-NC-SA)90获得Apache配置的帮助查看配置文件的MAN手册#manhttpd.conf查看本机安装的HTML手册#w3mhttp://localhost/manual/输出Apache的指令列表#httpd-L或apachectl-L2024年5月30日CreativeCommonsLicense(BY-NC-SA)91Apache的基本配置指令Apache的服务器标识指令Apache的文件定位指令ApacheMPM的相关指令Apache常用的全局配置指令2024年5月30日CreativeCommonsLicense(BY-NC-SA)92Apache的服务器标识指令ServerName:服务器用于辨识自己的主机名和端口号ServerAdmin:服务器返回给客户端的错误信息中包含的管理员邮件地址ServerSignature:配置服务器生成页面的页脚的信息ServerTokens:控制了服务器回应给客户端的”Server:“应答头是否包含关于服务器操作系统类型和编译进的模块描述信息UseCanonicalName:决定Apache如何构造URL中SERVER_NAME和SERVER_PORT的指令2024年5月30日CreativeCommonsLicense(BY-NC-SA)93Apache的文件定位指令ServerRoot:指定服务器安装的基础目录DocumentRoot:组成网络上可见的主文档树的根目录ErrorLog:存放错误日志的位置CustomLog:访问日志文件的位置LockFile:Apache使用的锁文件的位置PidFile:设置服务器用于记录父进程(监控进程)PID的文件2024年5月30日CreativeCommonsLicense(BY-NC-SA)94ApacheProforkMPM

的相关指令

StartServers:启动时服务器启动的进程数MinSpareServers:保有的备用进程的最小数目MaxSpareServers:保有的备用进程的最大数目MaxClients:服务器允许启动的最大进程数MaxRequestsPerChild:一个服务进程允许的最大请求数2024年5月30日CreativeCommonsLicense(BY-NC-SA)95Apache常用的全局配置指令Listen:指定监听的IP地址、端口号,默认为80User:指定运行Apache服务的用户名,默认为apacheGroup:指定运行Apache服务的组名,默认为apacheLogLevel:指定错误日志的记录级别Timeout:指定网络连接超时,默认为120(单位为秒)KeepAlive:指定是否保持连接,默认为OffKeepAliveTimeout:保持连接状态时的超时时间,默认为15(单位为秒)MaxKeepAliveRequests:保持连接状态时,每次连接最多请求文件数,默认为100DirectoryIndex:指定默认的索引页文件,默认为index.htmlindex.html.varIndexOptions:指定服务器所生成的列表页面的输出选项2024年5月30日CreativeCommonsLicense(BY-NC-SA)96Apache的配置容器<Directory></Directory>用于对指定的目录(可使用Shell通配符)实施额外的配置<Files></Files>用于对指定的文件(可使用Shell通配符)实施额外的配置<Location></Location>用于对指定的URL(可使用Shell通配符)实施额外的配置<Limit></Limit>用于对指定的HTTP方法实施额外的配置<LimitExcept></LimitExcept>用于对指定的HTTP方法之外的方法实施额外的配置2024年5月30日CreativeCommonsLicense(BY-NC-SA)97Apache的配置容器(续)功能与Directory、Files、Location容器相同,在描述目录、文件URL时可以使用正则表达式<DirectoryMatch></DirectoryMatch><FilesMatch></FilesMatch><LocationMatch></LocationMatch>虚拟主机容器<VirtualHost></VirtualHost>用于对虚拟主机实施额外的配置(一台计算机支持多个站点的能力)2024年5月30日CreativeCommonsLicense(BY-NC-SA)98Apache主配置文件的组成

和配置指令的作用域Apache主配置文件的组成全局环境配置主服务器配置虚拟主机配置配置指令的作用域配置指令作用范围可以是全局或只能在容器serverconfig、virtualhost、directory、.htaccess查看指令的作用域Apache手册中指令的作用域(Context)项#httpd-L或apachectl-L2024年5月30日CreativeCommonsLicense(BY-NC-SA)99Apache的基本配置2024年5月30日100CreativeCommonsLicense(BY-NC-SA)主机访问控制简介Apache可以根据访问者的IP地址或域名来决定是否为之提供资源,也称强验证访问控制的功能由

mod_authz_core和mod_authz_host

模块提供使用Require指令实现访问控制2024年5月30日CreativeCommonsLicense(BY-NC-SA)101访问控制的指令的作用范围可用在<Location>、<Directory>、<Files>和<Limit>容器中既可以用在主配置文件或其包含的配置文件中,也可以用在.htaccess配置文件中既可以放在“主配置”部分用于控制主服务器;也可以放在<VirtualHost>容器中用于控制虚拟主机2024年5月30日CreativeCommonsLicense(BY-NC-SA)102Require

指令允许所有主机访问Requireallgranted拒绝所有主机访问Requirealldenied仅允许本地主机访问Requirelocal允许或[禁止]指定的主机或域访问Require[not]host<主机名或域名列表>允许或[禁止]指定IP地址的访问Require[not]ip<IP地址或网段列表>2024年5月30日CreativeCommonsLicense(BY-NC-SA)103访问控制举例2024年5月30日CreativeCommonsLicense(BY-NC-SA)104RequireipRequireip10172.20192.168.2Requireip/Requireip/16/24RequirehostRequirehostRequirehost.net.访问控制举例续2024年5月30日CreativeCommonsLicense(BY-NC-SA)105<RequireAll>RequireallgrantedRequirenotip65</RequireAll><RequireAll>Requireip/24Requirenotip65</RequireAll>别名(Alias)别名可以将文档根目录(/var/www/html)以外的内容加入站点,也称虚拟目录Alias指令Alias/URL-path"/path/to/other/directory/“将以/URL-path开头的URL映射到/path/to/other/directory中的文件Alias举例Alias/manual"/var/www/manual“Alias/ks/kickstart2024年5月30日CreativeCommonsLicense(BY-NC-SA)106容器选项配置(Options)Options指令用于控制当前容器中可以使用哪些服务器特性可以出现在主配置文件或.htaccess配置文件中<Directory>、<Location>容器中Options指令格式Options[+|-]Option1[+|-]Option2……选项之前添加加号(+)表示添加此特性选项之前添加减号(-)表示去掉此特性2024年5月30日CreativeCommonsLicense(BY-NC-SA)107Options指令的常用选项All:除MultiViews之外的所有特性。默认设置None:将不启用任何额外特性ExecCGI:允许使用mod_cgi执行CGI脚本FollowSymLinks:服务器允许在此目录中使用符号连接Indexes:若一个映射到目录的URL被请求,而此目录中又没有DirectoryIndex指定的文件(例如index.html),则服务器会返回由mod_autoindex模块生成的一个格式化后的目录列表MultiViews:允许使用mod_negotiation提供内容协商的“多重视图”2024年5月30日CreativeCommonsLicense(BY-NC-SA)108IndexOptions指令用于配置mod_autoindex模块生成目录列表的显示特性IndexOptions指令的常用选项FancyIndexing对每种类型的文件前加上一个小图标以示区别VersionSort对同一个软件的多个版本进行排序NameWidth=*文件名子段自动适应当前目录下最长文件名FoldersFirst让目录列在前面(类似于资源管理器)2024年5月30日CreativeCommonsLicense(BY-NC-SA)109主机访问控制和别名

的配置举例使用别名配置对yum仓库和Kickstart的访问2024年5月30日CreativeCommonsLicense(BY-NC-SA)110Alias/mirrors/var/ftp/mirrors<Directory/var/ftp/mirrors>OptionsIndexesFollowSymlinksIndexOptions+DescriptionWidth=*+FoldersFirstRequirelocalRequireip/24/24/24</Directory>Alias/ks/kickstart<Directory/kickstart>OptionsIndexesFollowSymlinksIndexOptions+DescriptionWidth=*+FoldersFirstRequirelocalRequireip/24/24/24</Directory>配置每个用户的Web站点使拥有用户账号的每个用户都能够架设自己单独的Web站点使用mod_userdir模块,可以用如下的URLhttp://IPorFQDN/~username访问系统用户username的Web站点使用UserDir指令指定用户站点的文档根目录配置步骤修改配置文件(启用mod_userdir模块并配置每个用户Web站点目录的访问控制)设置$HOME对其他目录的可执行权限2024年5月30日CreativeCommonsLicense(BY-NC-SA)111基于目录的配置文件可以使用.htaccess文件改变主配置文件中的配置,但是它只能设置对目录的访问控制,这个目录就是.htaccess文件存放的目录使用.htaccess文件的场合当内容提供者需要针对目录改变服务器的配置而对服务器系统没有root权限时管理员不愿意频繁修改配置并重启服务,因为修改.htaccess文件后立即生效,无需重新启动服务2024年5月30日CreativeCommonsLicense(BY-NC-SA)112使用.htaccess文件的方法首先在主配置文件中启用并控制对.htaccess文件的使用AllowOverrideall|none然后在需要覆盖主配置文件的目录下生成.htaccess文件使用.htaccess文件举例2024年5月30日CreativeCommonsLicense(BY-NC-SA)113认证和授权2024年5月30日114CreativeCommonsLicense(BY-NC-SA)认证和授权简介Apache的认证和授权(基于用户的访问控制)认证和授权是Apache允许指定用户使用用户名和口令访问特定资源的一种方式认证(Authentication)是指任何识别用户身份的过程授权(Authorization)是允许特定用户访问特定区域或信息的过程认证和授权也称弱验证认证和授权的配置指令既可以出现在主(或其包含的)配置文件的<Directory>或<Location>容器中,也可以出现在./htaccess文件中2024年5月30日CreativeCommonsLicense(BY-NC-SA)115两种认证基本认证摘要认证Apache模块mod_auth_basicmod_auth_digest证书管理程序htpasswdhtdigest浏览器支持所有浏览器均支持绝大多数浏览器均支持特点可用于任何认证领域只用于指定的认证领域在网络中传输Base64编码的明文口令,不安全在网络中只传输质询码和摘要信息,不传输口令,更安全2024年5月30日CreativeCommonsLicense(BY-NC-SA)116认证和授权的证书存储

和相关模块通常使用纯文本文件存储认证口令证书为了加快检索可以使用DBM数据库为了与其他应用集

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论