apache的网站配置目录_如何使用Apache Web服务器来安装和配置网站?_weixin_39683241的博客-程序员宅基地

技术标签: apache的网站配置目录  ubuntu lsof命令安装  

c38c385cc158587d2993fc18287655c4.png

【快译】我时常发现,冷静下来捊一捊基础知识是好事。这不仅有助于使我成为一名技术撰稿人,还可以帮助在摸索学习我所介绍的任何技术的许多读者。

这次介绍的是Apache Web服务器,这款软件存在已有数十年,可以轻松地为大小网站提供服务,运行顺畅。Apache可与MySQL、PHP及另外大量软件包无缝协作,以便您架设简单的静态或动态网站。

如何安装和配置服务器?您将文件放置在哪里?

不妨介绍这方面,每次一个步骤。我将在Ubuntu Server 20.04上进行演示。

不过先介绍一点基础知识。

基于Ubuntu的发行版和基于Red Hat的发行版之间的区别

之所以要指定我使用哪个Linux发行版,是因为对于Apache而言,基于Ubuntu的发行版和基于Red Hat的发行版从安装到配置都不一样。比如说,在基于Red Hat的发行版上,Apache​​通过httpd软件包安装,而在基于Ubuntu的发行版上,apache2软件包就能完成这项任务。另一个区别是在何处以及如何配置Apache。在基于Red Hat的发行版中,许多Apache配置将在/etc/httpd/conf/中进行。而在基于Ubuntu的发行版中,配置位于/etc/apache2/和/etc/apache2/sites-available/中。还有更多的差异,不过您应大致明白了。

如何在Ubuntu服务器上安装Apache?

可以通过多种方式在Ubuntu上安装Apache。如果您只需要基本的服务器软件,可以打开终端、执行以下命令:

sudo apt-get install apache2 -y 

然而,如果您想要一套成熟的Linux Apache MySQL PHP(LAMP)堆栈,可以执行以下命令:

sudo apt-get install lamp-server^ 

一旦运行上述任何一个命令,可启动并运行Apache。您还需要确保启用Apache,以便服务器重启(或引导)后开始运行。为此,执行以下命令:

sudo systemctl enable apache2 

可以通过打开Web浏览器并将其指向http://SERVER_IP(其中SERVER_IP是托管Apache的服务器的IP地址),验证安装。您会看到Apache欢迎页面(图A)。

1c8b6b6e069bb64f45ad14f4f03a45a5.png

图A. 在Ubuntu服务器上运行的官方Apache欢迎页面

Apache提供的是什么页面?如果您查看/var/www/html,会找到文件,对其进行更改。

返回终端窗口,使用以下命令重命名该文件:

sudo mv /var/www/html/index.html /var/www/html/index.html.bak 

现在,不妨创建一个新的欢迎文件。执行以下命令:

sudo nano /var/www/html/index.html 

在该文件中,粘贴以下内容:

<!DOCTYPE html> <html> <body> <h1>Hello, TechRepublic!</h1> <p>How are you doing?</p> </body> </html> 

保存并关闭文件。在浏览器中重新加载该网页,您应该会看到变化(图B)。

b263fb3e43cbc01f4233f090095a27c3.png

图B. 我们新的页面由Apache提供

如何为Apache创建网站?

我们现在要做的是创建一个虚拟主机供Apache服务。虚拟主机是Apache所服务的网站的俗称。可以在单单一台Apache服务器上提供众多虚拟主机。实际上,您只受限于托管服务器的功能和网络的带宽。

因此,不妨创建一个名为test的虚拟主机。

我们要做的第一件事是使用以下命令创建一个容纳测试的目录:

sudo mkdir -p /var/www/html/test 

接下来,我们将使用以下命令为新目录赋予适当的所有权:

sudo chown -R $USER:$USER /var/www/html/test 

最后,我们将使用以下命令授予适当的权限:

sudo chmod -R 755 /var/www/html/test 

使用以下命令将新的文件拷贝到测试目录中:

sudo cp /var/www/html/index.html /var/www/html/test/ 

现在我们要创建虚拟主机配置,以便Apache知道测试在哪里。测试将位于/etc/apache/sites-available中。为此,我们将使用以下命令创建文件:

sudo nano /etc/apache2/sites-available/ 

在该文件中粘贴以下内容:

<VirtualHost *:80>     ServerAdmin [email protected]     ServerName      ServerAlias www.     DocumentRoot /var/www/html/test     ErrorLog ${APACHE_LOG_DIR}/     CustomLog ${APACHE_LOG_DIR}/ combined </VirtualHost> 

上面最重要的一行以DocumentRoot开头,这指示Apache在何处可以找到虚拟主机的文件。保存并关闭该文件。

至此,我们已创建了容纳文件的目录,赋予了适当的所有权和权限,并为虚拟主机创建了配置。然而,Apache仍然不知道新网站。为什么?因为配置文件位于sites-available中。我们要做的是从该配置创建一个链接到/etc/apache2/sites-enabled目录。仅在sites-available中找到的那些配置才在Apache服务器上处于活动状态。

在非Ubuntu服务器上,您要使用ln(代表link)命令来执行此操作。然而,Ubuntu上有一个方便的实用程序,它将为您创建该网站。这个实用程序就是a2ensite。如果我们运行命令:

sudo a2ensite  

我们的测试虚拟主机随后将被启用。

该命令成功执行后,您要使用以下命令重新加载Apache(它将仅重新加载配置文件,而不重新启动Web服务器):

sudo systemctl reload apache2 

现在,如果您将浏览器指向http://SERVER_IP/test(其中SERVER_IP是服务器的IP地址),应该会看到与使用基本的文件相同的Hello,TechRepublic欢迎信息,只是它是从新创建的虚拟主机提供的。

您刚安装了Apache Web服务器,编辑了文件,然后创建了自己的虚拟主机。您可以进而创建启用所需的Apache服务的所有网站。

原文标题:How to use the Apache web server to install and configure a website,作者:Jack Wallen

【51CTO译稿,合作站点转载请注明原文译者和出处为】

【编辑推荐】

【责任编辑:

武晓燕

TEL:(010)68476606】


点赞 0
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39683241/article/details/110107122

智能推荐

GAN综述及其在图像生成领域的应用(含原理、代码详解)_蓝鲸鱼BlueWhale的博客-程序员宅基地_gan在图像生成上的应用

首先我们用一句话来概括下原始GAN。原始GAN由两个有机中整体构成——生成器 [公式] 和判别器 [公式] ,生成器的目的就是将随机输入的高斯噪声映射成图像(“假图”),判别器则是判断输入图像是否来自生成器的概率,即判断输入图像是否为假图的概率。GAN的训练也与CNN大不相同,CNN是定义好特定的损失函数,然后利用梯度下降及其改进算法进行优化参数,尽可能用局部最优解去逼近全局最优解。但是GAN的训练是个动态的过程,是生成器 [公式] 与判别器 [公式] 两者之间的相互博弈过程。通俗点讲,GAN的目的就..

Maven系列——超简单入门级教程_程序员的时光的博客-程序员宅基地

写在前面:小伙伴儿们,大家好!上一篇我们讲了Spring中的依赖注入相关知识-Spring系列-依赖注入的几种方式,你都了解吗?我们这次开始Maven的学习之旅!思维导图:一,Maven简介;maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的整合,报告和文档的软件项目管理工具。简单点:替换旧的本地JAR包更新方式,方便团队协作依赖管理...

iOS Class结构分析_imherer的博客-程序员宅基地_ios 类的结构

objc_class结构体类在OC中是objc_class的结构体指针typedef struct objc_class *Class;在objc/runtime.h中objc_class结构体的定义如下:struct objc_class { Class isa OBJC_ISA_AVAILABILITY; #if !__OBJC2__ Class super_class OBJC...

Linux Suid提权_YouthBelief的博客-程序员宅基地

Suid提权原理SUID(设置用户ID)是一种权限类型,它被赋予一个文件,允许用户以其所有者的权限执行该文件。Linux二进制文件可以拥有这种类型的权限集有很多原因。例如,ping实用程序需要root权限才能打开网络套接字,但它也需要由标准用户执行,以验证与其他主机的连通性。但是,如果某些现有的二进制文件和实用程序具有 SUID 权限,则它们可用于将权限提升为 root。suid权限 表示 chmod u+s如下 二进制文件以 root 权限执行,因为它们的权限中包含“ s ”,并且它们归 roo

Androider学C/C++—(6)面向对象_C++ 多态与virtual虚函数_Red_Dragon_的博客-程序员宅基地

C++ 多态与virtual虚函数形成多态必须具备三个条件:1.必须存在继承关系; 2.继承关系必须有同名虚函数(其中虚函数是在基类中使用关键字Virtual声明的函数,在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数); 3.存在基类类型的指针或者引用,通过该指针或引用调用虚函数;多态的基本实现看一段java的多态。 List list...

终于有人把云计算、大数据和人工智能讲明白了!_weixin_34259232的博客-程序员宅基地

今天跟大家讲讲云计算、大数据和人工智能。这三个词现在非常火,并且它们之间好像互相有关系。一般谈云计算的时候会提到大数据、谈人工智能的时候会提大数据、谈人工智能的时候会提云计算……感觉三者之间相辅相成又不可分割。但如果是非技术的人员,就可能比较难理解这三者之间的相互关系,所以有必要解释一下。很多初学者,对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线...

随便推点

kali破解wifi密码_weixin_38169786的博客-程序员宅基地

开始1、选择合适的网卡,有些网卡kali识别不了,我用的网卡信息2、网卡开启监听模式3、查看监听模式是否开启成功(网卡名称变成wlan0mon说明已经开启成功)4、输入“airodump-ng wlan0mon”,扫描附近热点信息,找到自己想要破解的热点名称后按下ctrl+c停止扫描(NEM-AL10是我自己用手机开启的热点,破解他人无线密码是违法的,自己...

lucene学习五:各种查询条件_荒唐的程序猿的博客-程序员宅基地_lucene 不等于

在前面4章基础上,本文介绍几种查询条件public static void testQuery(Query query) throws Exception{            IndexSearcher indexSearcher=LuceneUtils.getIndexSearcher();            TopDocs topDocs=indexSearcher.sea

数字图像处理之直方图均衡化_zijingping的博客-程序员宅基地

以下例子源自《数字图像处理》第三版r表示待处理图像的灰度,取值区间[0,L-1]。r=0表示黑色,r= L-1表示白色。输出灰度值s,变换形式:s = T(r) ,0离散变换形式sk = T(rk) = (L-1)(pr0+pr1+...+prk) ,pr为像素值的概率密度。=  (L-1)(n0+n1+...+nk)/MN,n为每个像素值对于的个数,M、N为图像行和列

GDI处理图片透明(使用区域类CRgn实现)_xwenkai的博客-程序员宅基地

GDI全称图形设备接口,没什么好介绍的,自己去百度,下面我要做的是如何使用GDI去将一张图片的部分处理成透明。待处理的图片:将该图片下载下来或者你自己有其他的bitmap也行,首先用vs(本例用的是vs2017)创建一个win32的默认工程。删除其他代码,只保留包含的头文件和入口函数wWinMain,结果如下图:然后工程切换至资源视图,鼠标右键-》添加资源-》选择Dialog-...

ubuntu 必備_b10l07的博客-程序员宅基地

1.切换到Ubuntu gnome 经典桌面注销unity桌面环境,然后选择登录环境为“经典桌面”即可进入。若是你喜欢Unity,可是你的显卡不给力3D不支持,怎么办呢?安装Unity-2D:sudo apt-add-ppa repository: unity-2d-team/unity-2d-dailysudo apt-get updatesudo apt-get install qt-u...

python ndarray合并_Python干货-Numpy的ndarray的合并与分割_weixin_39679718的博客-程序员宅基地

# 导入numpyimport numpy as npndarray的合并定义要使用的数据源a = np.array([1, 1, 1])b = np.array([2, 2, 2])print('a', a)print('b', b)a [1 1 1]b [2 2 2]numpy.vstack()函数语法:vstack(tup),参数是一个元组,它可将元组中指定的数组进行合并# 将a与b合并c ...

推荐文章

热门文章

相关标签