如何建个人网站,新手创建个人网站详细流程步骤

如何建个人网站,新手创建个人网站详细流程步骤,第1张

如何建个人网站,新手创建个人网站详细流程步骤 在Internet网络环境中,Web服务无疑是最为流行的应用系统。


有了Web站点,企业可以充分展示自己的产品、宣传自己的企业形象等等。


Web站点还可以提供与客户交流、电子商务交易平台等丰富的网络应用。


接下来让我们一起来了解著名的Web网站服务——”Apache HTTP Server”的安装及httpd服务的基本配置。



一、关于ApacheApache是广泛应用的Web应用系统之一,是开源软件项目的杰出代表,基于标准的HTTP网络协议提供网页浏览服务,在Web服务器领域中长期保持着超过半数的份额。


Apache服务器可以运行在Linux、UNIX、Windows等多种 *** 作系统平台。


1.Apache的起源源于”A Patchy Server”,著名的开源Web服务软件1995年时,发布Apache服务程序的1.0版本其正式名称是”httpd”,一般Apache或httpd,均指Apache HTTP Server由Apache软件基金会(ASF,Apache Software Foundation)负责管理和维护AFS的官方站点:http://httpd.apache.org/2.Apache的主要特点开放源代码、跨平台应用支持多种网页编程语言模块化设计 、运行稳定、良好的安全性3.Apache的主要版本Apache服务器目前包括1.X和2.X两个版本,并且对其分别进行维护。


两个版本具有一定的差异,也具有各自的特性。


1.X目前最高版本是1.3,运行稳定向下兼容性较好,但缺乏一些较新的功能2.X目前最高版本是2.4具有更多的功能特性与1.X相比,配置管理风格存在较大差异

二、安装Apache(httpd)服务器Httpd服务器的安装可以选用RPM包安装、源码编译安装两种方式,RPM包安装相对比较简单、快速,但是在功能上存在一定的局限性,在实际的生产环境中,使用源码编译安装的方式要更加普遍。


编译安装的优点:具有较大的自由度,功能可定制可及时获得最新的软件版本普遍适用于大多数Linux版本,便于移植使用获得Apache服务器的源码包参考地址:http://httpd.apache.org/download.cgi(官网自己下载)我的云盘链接:https://pan.baidu.com/s/1ICTiuzWXqo-qbX2ipRXIdw提取码:a4cz复制链接并打开,输入提取码就可下载编译安装httpd服务器 *** 作步骤:(如下图)1.准备工作为避免发生端口冲突、程序冲突等现象,建议先卸载使用RPM方式安装的httpd查看是否安装:rpm -q httpd卸载:rpm -e httpd –nodepsApache的配置及运行需要apr、pcre等软件包的支持,因此需要先安装这些软件包,以便提供相应的库和头文件,确保Apache的安装顺利,我们称这些包为前提包,这些前提包在系统光盘中都有,所以我们可以采用yum或RPM安装。


Yum安装:如果有网络直接安装,如果没有网络可以先挂载系统光盘,然后搭建一个本地yum仓库安装。


如下图:RPM安装:挂载系统光盘,进入系统光盘挂载目录下的Packages目录,然后分别进行安装。


如下图:2.源码编译安装(前面有文章分享过源码安装的详细过程的,如果想了解的话可以在我的主页查找)源码编译安装httpd服务的过程主要包含解包、配置、编译及安装。


1)解包(如下图)将httpd源码包解压并释放到/usr/src目录下,然后切换到解压后的源码目录(/usr/src/httpd-2.4.25)中。


2)配置(如下图)根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启用字符集支持等。


上图所示配置中,各选项的含义如下:–prefix:指定安装目录–enable-so:启用动态加载模块支持,使httpd具备进一步扩展功能的能力–enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护–enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页–enable-cgi:启用CGI(Common Gateway Interface,公用网络接口)脚本程序支持,便于扩展网站的应用访问能力3)编译并安装(如下图)3.确认安装结果由于指定的安装目录为/usr/local/httpd,因此httpd服务的各种程序、模块、文件等都将复制到此目录下。


(如下图)如上图所示,主要目录的用途如下:/usr/local/httpd/bin:存放httpd服务的各种执行程序文件,包括主程序httpd、服务控制工具apachectl等工具/usr/local/httpd/cgi-bin:存放各种CGI程序文件/usr/local/httpd/logs:存放httpd服务的日志文件/usr/local/httpd/conf:存放httpd服务的各种配置文件,包括主配置文件httpd.conf、增强配置子目录extra等/usr/local/httpd/htdocs:存放网页文档,包括默认首页文件index.html等/usr/local/httpd/modules:存放httpd服务的各种模块文件4.优化执行路径通过源码编译安装的httpd服务,程序路径并不在默认的搜索路径中,为了使该服务在使用时更方便,可以为相关程序添加符号链接。


这样当执行”httpd -v”命令(产看程序版本)是,就相当于执行”/usr/local/httpd/bin/httpd -v”。


如下图:5.启动服务由于是源码包编译安装,所以我们暂时不能用systemctl工具管理httpd服务(怎么添加httpd为系统服务,下个文档我们再一起了解),但现在我们可以使用apachectl工具来控制httpd服务。


如下图:注:当启动或者关闭httpd服务时,提示的内容并不是报错,是因为我们还没有改配置文件中Web站点的完整主机名,它可以说是一个警告或者提示内容,可以忽略。


6.测试在浏览器中,通过IP地址访问httpd服务器,将可以看到Web站点的页面内容。


若使用的是httpd服务默认的首页,则页面会提示”It works”。


如下图:可以看到,httpd服务器已经正常启动了。



三、添加httpd为系统服务CentOS7系统下,将编译安装的程序添加为系统服务有以下两种方式:通过chkconfig命令添加为系统服务,然后由systemctl进行管理。


在/lib/systemd/system/目录下,手动编写以.service结尾的单元(unit)配置文件。


1.使用chkconfig添加系统服务若希望将httpd添加为系统服务,以便通过chkconfig进行管理,需要建立可控的服务脚本。


其实原理很简单,例如,可将apachectl脚本复制为/etc/init.d/httpd,然后编辑”/etc/rc.d/init.d/httpd”文件,在 #!/bin/sh 下增加两行文字如下:# chkconfig: 35 70 30 (添加chkconfig识别配置)# description: Apache然后将其添加为标准的linux系统服务。


(如下图所示)注:cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd ,如果有其他的版本的Apache存在,也可以直接覆盖掉2.建立[service].service配置文件在/lib/systemd/system/目录下,建立一个以.service结尾的单元(unit)配置文件,用于控制由systemd控制或监控的httpd服务。


配置文件主要分为三个部分,控制单元[unit]的定义、服务[Service]的定义以及安装部分[Install],具体内容如下所示:上图所示配置文件的各配置项的作用如下所示:Description:设置服务单元描述字符串。


After:设置服务单元的启动先后顺序。


例如,http.ervice单元文件中出现”After=network.target”表示启动时先启动network.target,后启动httpd.service,关闭时顺序相反。


与After字段相应的还有一个Before字段,如httpd.service单元文件中出现”Before=network.target”表示启动时httpd.service,后启动network.target。


Type:设置服务进程的启动类型。


需要注意的是,当启动类型为forKing时需要同时设置PIDFile配置项,以帮助systemd准确定位到服务的主进程。


PIDFile:设置服务的守护进程的PID文件ExecStart:设置服务启动时执行的命令ExecReload:设置服务重新加载时执行的命令KillMode:设置在单元停止时,杀死进程的方法。


Process表示仅杀死主进程。


Restart:设置服务进程正常退出、异常退出、被杀死、超时的时候,是否重启该服务。


On-failure表示仅在进程异常退出时重启。


RestartSec:设置在重启服务前暂停多长时间,默认值是100毫秒(ms)WantedBy:设置该服务所在的Target(运行目标)。


WantedBy=graphical.target(图形界面多用户系统)是指,httpd所在的Target是graphical.target运行目标时,该目录下的所有服务均开机启动。


该配置项常用的Target除了graphical.target之外,还有multi-user.target(非图形界面多用户系统)httpd.service文件编辑完之后,就可以使用systemctl工具控制httpd服务了。


如下图:在日常维护的过程中,既可以使用apachectl工具来控制httpd服务,也可以使用systemctl命令控制httpd服务。


其实,执行”systemctl start httpd”命令,等同于执行”/usr/local/httpd/bin/apachectl start”命令。



四、web站点的简单部署1.确定网站名称、IP地址若要向Internet中发布一个Web站点,需要申请一个合法的互联网IP地址,并向DNS服务提供商注册一个完整的网站名称。


在实验环境中,我们可以自行设置。


如:Web主机的IP地址设为:192.168.1.1,网站名称改为:www.test.com。


如果我们实验环境中最后想通过域名访问到网站,可以在客户机的hosts文件中添加一行主机记录。


如下图:2.配置并启动httpd服务编辑httpd服务的主配置文件httpd.conf,查找配置项”ServerName”,修改web站点的完整主机名为自己定义的主机名(如:www.test.com),用于设置网站名称。


这里我们先就简单的修改这一个地方就行,关于其他的更多配置项后面有详细的介绍。


修改完配置文件之后,可以使用”apachectl -t或httpd -t”命令对配置文件进行语法检查,如果没有语法错误,会返回ok的信息。


然后启动httpd服务。


(如下图)3.部署网页文档对于新编译安装的httpd服务,网站根目录位于/usr/local/httpd/htdocs下,需要将Web站点的网页文档复制或上传到此目录下。


这里我们自己编辑一个简单的网页内容,用来测试。


如下图:4.访问web站点在客户机的网页浏览器上,通过域名或IP地址访问httpd服务器,将可以看到web站点的页面内容中是我们刚刚编辑的那个简单网页,表示httpd符已经在正常运行。


如下图:5.查看web站点的访问情况httpd服务有两种类型的日志:访问日志和错误日志,这两种日志的文件名分别为access_log和error_log,均位于/usr/local/httpd/logs目录下。


可以通过查看日志文件access_log,及时了解web站点的访问情况,访问日志中的每行对应一条访问记录,记录了客户机的IP地址、访问时间、请求的网页对象信息。


如下图:当然也可以通过查看错误日志文件error_log,可以为排查服务器运行故障提供参考依据。



五、关于httpd.conf配置文件要对web站点进行更加具体、更加强大的配置、仅仅学会添加”ServerName”配置项显然是不够的,还需要进一步熟悉httpd.conf配置文件,了解其他各种常见的配置项。


主配置文件httpd.conf由注释行、设置行两部分组成,与大多数linux配置文件一样,注释行以”#”开始,包含了对相关配置内容进行的说明和解释。


除了注释行和空行以外的内容为配置行,构成了web服务的有效配置。


根据配置所作用的范围不同,设置行又可分为全局配置、区域配置。


1.全局配置项(如下图)全局配置决定了httpd服务器的全局运行参数,使用”关键字 值”的配置格式。


如:”ServerName www.test.com”,其中”ServerName”为配置关键字,”www.test.com”为对应的值。


在全局配置中常见的配置项的含义如下:ServerRoot:设置httpd服务器的根目录,该目录下包括了运行web站点必需的子目录和文件。


默认情况下,httpd服务器的根目录为httpd的安装目录。


在httpd.conf配置文件中,如果指定目录或文件位置时不使用绝对路径,则该目录或文件位置都认为是在服务器的根目录下。


Listen:监听的IP地址、端口号,默认为80User:运行服务的用户身份,默认为daemonGroup:运行服务的组身份,默认为daemonServerAdmin:管理员邮箱ServerName:网站服务器的域名DocumentRoot:网页文档的根目录,网页文档在系统中的实际存放路径。


比较容易和ServerRoot混淆,需格外注意DirectoryIndex:默认的索引(首页)页文件,可以设置多个首页文件,以空格分开,默认的首页文件为index.htmlErrorLog:设置错误日志文件的路径,默认路径为logs/error_logLogLevel:记录日志的级别,默认为warn(警告)CustomLog:访问日志文件的位置、日志类型,默认路径为logs/access_log,使用的类型为common(通用格式)PidFile:保存httpd进程PID号的文件,默认保存路径为log/httpd.pid,logs目录位于Apache的服务器根目录下AddDefaultCharset:设置站点中的网页默认使用的字符集编码Timeout:网络连接超时,默认为300秒KeepAlive:是否保持连接,可选On或OffMaxKeepAliveRequests:每次连接最多请求文件数KeepAliveTimeout:保持连接状态时的超时时间Include:包含另一个配置文件的内容,可以实现将一些特殊功能的配置放到一个单独的文件中,再使用Include配置项将其包含到httpd.conf文件中,这样便于独立进行配置功能的维护而不影响主配置文件2.区域配置项除了全局配置以外,httpd.conf文件中的大多数配置是包括在区域中的。


区域配置使用一对组合标记,限定了配置的作用范围。


最常见的目录区域配置形式如下图所示:在以上区域定义中,设置了一个根目录的区域配置,其中添加的访问控制相关配置只对根目录有效,而不会作用于全局或其他目录区域。


注:这里所说的根目录是指设置httpd服务器的根目录(ServerRoot所设置的值),而不是CentOS系统的根目录。



六、httpd服务的访问控制(以下是以httpd-2.4为例,版本不同配置内容也有所差异)作用:控制对网站资源的访问为特定的网站目录添加访问授权常用访问控制方式:客户机地址限制用户授权限制1.客户机地址限制使用Require配置项实现访问控制,按先后顺序限制,可以根据主机名或IP地址来决定是否允许客户端访问。


在httpd服务器的主配置文件(/usr/local/httpd/conf/httpd.conf)的<Location>、<Directory>、<Files>、<Limit>配置段中均可以使用Require配置项来控制客户端的访问。


使用Require配置项时,需要设置客户机地址以构成完整的限制策略,地址的形式可以是IP地址、网络地址、主机名或域名,使用”all”时表示任意地址。


Require配置项的常见语法Require all granted:表示允许所有主机访问Require all denied:表示拒绝所有主机访问Require local:表示仅允许本地主机访问Require [not] host <主机名或域名列表>:表示允许或拒绝指定主机或域访问Require [not] ip <ip地址或网段列表>:表示允许或拒绝指定IP地址或网段访问例如:只希望IP地址为192.168.1.100的主机能够访问/usr/local/httpd/htdocs网页目录下的内容。


如下图:(修改完配置文件记得重启服务)说一个比较绕的东西,就是在定义限制策略时,多个不带not的Require配置语句之间是或的关系,即任意一条Require配置语句满足条件均可以访问。


若既出现了不带not的Require配置语句,又出现了带not的Require配置语句,则语句之间是与的关系,即同时满足所有Require配置语句才可以访问。


再举一个拒绝的例子,例如,只希望禁止来自192.168.0.0/24和192.168.1.0/24两个网段的主机访问,但允许其他任何主机访问。


如下图:(修改完配置文件记得重启服务)注意:在使用not禁止访问时要将其置于<RequireAll></RequireAll>容器中,并在容器中指定相应的限制策略。


当未被授权的客户机访问网站目录时,将会被拒绝访问,不同的浏览器中,拒绝的消息可以略有差异,通常都是提示为403错误。


如下图:2.用户授权限制包含认证(Authentication)和授权(Authorization)两个过程,认证是指识别用户身份的过程,授权是指允许特定用户访问特定目录区域的过程。


Httpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。


使用摘要认证需要在编译httpd之前添加”–enable-auth-digest”选项,但并不是所有的浏览器都支持摘要认证,而基本认证是httpd服务的基本功能,不需要预先配置特别的选项。


(以下都是以基本认证为例,对/usr/local/httpd/htdocs网页内容添加用户授权限制)1)创建用户认证数据文件Httpd的基本认证通过校验用户名、密码组合来判断是否允许用户访问。


授权访问的用户账号需要事先建立,并保存在固定的数据文件中。


使用专门的htpasswd工具程序,可以创建授权用户数据文件,并维护其中的用户账号。


使用htpasswd工具时,必须指定用户数据文件的位置,添加”-c”选项表示新建立此文件。


示例:执行以下 *** 作可以新建数据文件/usr/local/httpd/conf/.awspwd,其中包含一个名为webadmin的用户信息。


若省略”-c”选项,则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码。


2)添加用户授权配置有了授权用户账号以后,还需要修改httpd.conf配置文件,在特定的目录区域中添加授权配置,以启用基本认证并设置哪些用户访问。


示例:只允许”.awspwd”数据文件中的用户访问网页。


如下图:上图所示配置项的含义如下:AuthName:定义受保护的领域名称,该内容将在浏览器d出的认证对话框中显示AuthType:设置认证类型,Basic表示基本认证AuthUserFile:设置用于保存用户账号、密码的认证文件路径Require valid-user:要求只有认证文件中的合法用户才能访问。


其中,valid-user表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如webadmin)。


注意:用户访问授权与主机访问控制同时设置时,设置的主机访问控制优先生效。


3)验证用户访问授权当再次访问网站的默认首页时,浏览器会首先d出认证对话框。


如下图所示,只有输入正确的用户名和密码才能查看网页,否则拒绝访问。



七、构建虚拟Web主机什么是虚拟Web主机在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用整个服务器。


其目的是为了充分利用服务器的硬件资源,提高资源的利用率。


httpd支持的虚拟主机类型基于域名的虚拟主机:为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的。


这是使用最为普遍的虚拟Web主机类型基于IP地址的虚拟主机:为每个虚拟主机使用不同的域名,且各自对应不同的IP地址。


这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。


基于端口的虚拟主机:这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用了不同的TCP端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问,非常不方便用户的访问。


在上述几种虚拟Web主机中,基于域名的虚拟主机是使用最为广泛的,所以我们接下来重点了解一下基于域名的虚拟主机。


1.基于域名的虚拟主机下面以实现两个虚拟Web主机”www.test1.com”和”www.test2.com”为例,使用一台httpd服务器搭建,IP地址为192.168.1.1。


具体构建过程如下。


1)为虚拟机提供域名解析这里可以采用编辑/etc/hosts文件或者安装DNS服务器两种方式来实现。


编辑hosts文件很简单,就写两行对应的解析记录。


如下图:使用DNS服务器解析域名需要搭建DNS服务器,搭建DNS服务器的步骤前面有文章已经详细介绍过了,在这里就不赘述了(想了解的可以在作者的主页查找《Linux如何搭建DNS服务器》这篇文档),这里我们只说一下配置文件的主要编辑内容。


在主配置文件named.conf中添加test1.com和test2.com两个区域;然后在各区域数据文件中均设置”www–>192.168.1.1″的A记录。


确认客户机能够正确解析www.test1.com和www.test2.com对应的IP地址。


如下图:2)为虚拟主机准备网页文档为每个虚拟Web主机准备网站目录及网页文档。


为了测试方便,分别为每个虚拟Web主机提供包含不同内容的首页文件。


如下图:3)添加虚拟主机配置启用基于域名的虚拟Web主机,需要配置以下几个方面的内容:虚拟主机区域:使用<VritualHost 监听地址>……</VritualHost>区域配置文件,为每个虚拟Web主机建立独立的配置内容。


其中至少应该包括虚拟主机的网站名称、网页根目录的配置项,其他(如管理邮箱、访问日志等)配置项可根据实际需要添加。


目录权限:使用<Directory 目录位置>……</Directory>区域配置,为每个虚拟Web主机的网站目录设置访问权限,如允许任何人访问。


目录访问可以继承其父目录的授权许可,因此可以采取直接为父目录授权访问权限的方法来简化配置。


当虚拟Web主机的数量较多时,建议使用独立的虚拟主机配置文件,然后在httpd.conf文件中通过Include加载这些配置。


这样可以将对httpd.conf文件的改动减少至最少,更方便配置内容的维护。


如下图:4)测试——在客户机浏览器分别访问虚拟Web主机确认能够看到不同的网页内容,如下图。


2.基于IP地址、基于端口的虚拟主机基于IP地址或基于端口的虚拟主机的过程与基于域名的虚拟主机类似,也需要先提前提供域名解析、准备网页文档,再调整httpd配置、重启httpd服务,然后在客户机中访问虚拟主机进行测试。


其中最主要的区别是,不同类型的虚拟主机在httpd.conf文件中的配置内容略有不同。


1)基于IP地址的虚拟主机对于基于IP地址的虚拟主机,每个虚拟Web主机各自使用不同的IP地址,但都是通过同一台httpd服务器对外提供Web服务。


所以,用来支撑这些虚拟web主机的服务器也就需要有大量的网络接口及IP地址,在实际应用中往往不太方便,因此应用不是太广泛。


配置基于IP地址的虚拟web主机时,需要在每个虚拟web主机的virtualHost配置项中指定各自域名所对应的IP地址。


这里我们还是以test1.com和test2.com为例,配置区别如下图所示。


注意:需要事先添加网卡(网络接口),然后分别配置不同的IP,其他配置与基于域名的虚拟主机基本相同。


2)基于端口的虚拟主机基于端口的虚拟主机通常指用于同一个Web站点,其针对的网站名称、IP地址往往是相同的,但通过不同的TCP端口来提供访问不同网页内容的服务入口。


在浏览器中访问非80端口的Web服务时,需要指出服务器的端口号。


如:httpd://网站名称:端口号配置基于端口的虚拟web主机时,需要通过多个Listen配置项来指定要监听的TCP端口号,每个虚拟web主机的VirtualHost配置中需同时指定IP地址和端口号。


如下图所示:然后在/usr/local/httpd/conf/httpd.conf配置文件中指定端口,也可以在/usr/local/httpd/conf/extra/httpd-vhosts.conf文件中添加下面两行内容来指定端口(就是随便找个地方添加一下就行,别太随便)。


到这里,Apache网站服务器的搭建基本就完成了,完了就是各种关于服务器的优化问题了。


关于优化,主页也有文章分享过。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/596279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-13
下一篇 2022-04-13

发表评论

登录后才能评论

评论列表(0条)

保存