客服微信
本文为云贝教育 刘老师 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。
Apache的主要配置文件位于/etc/httpd/conf/httpd.conf。这个文件包含了全局设置,定义了Apache的行为。除了主配置文件外,Apache还可能引用其他配置文件或目录下的配置片段,如/etc/httpd/conf.d/和/etc/httpd/conf.modules.d/。
配置文件:
ServerRoot "/etc/httpd" Listen 80 Include conf.modules.d/*.conf User apache Group apache ServerAdmin root@localhostAllowOverride none Require all denied DocumentRoot "/var/www/html"AllowOverride None Require all granted Options Indexes FollowSymLinks AllowOverride None Require all granted DirectoryIndex index.html Require all denied ErrorLog "logs/error_log" LogLevel warnLogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio CustomLog "logs/access_log" combinedScriptAlias /cgi-bin/ "/var/www/cgi-bin/" AllowOverride None Options None Require all granted TypesConfig /etc/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType text/html .shtml AddOutputFilter INCLUDES .shtml AddDefaultCharset UTF-8MIMEMagicFile conf/magic EnableSendfile on IncludeOptional conf.d/*.conf ServerTokens Prod ServerSignature off TraceEnable off
以下是一些关键配置项的解释:
ServerRoot:指定Apache服务器的根目录,默认是/etc/httpd。为了安装Apache服务程序,在Kylin麒麟操作系统中,您可以使用dnf命令:
[root@localhost ~]# dnf install httpd
这将安装Apache及其依赖项,并准备好开始配置您的Web服务器。
假设您想要创建一个简单的网站,可以在服务器上的网站数据目录中新建一个子目录,并在这个子目录中创建一个包含“Successful”单词的首页文件。
[root@localhost ~]# mkdir /var/www/html/server [root@localhost ~]# echo "Successful" > /var/www/html/server/index.html
然后,在浏览器中访问127.0.0.1此页面,您应该会看到文本“Successful”。
如果您想为每位用户建立一个独立的网站,可以通过启用httpd服务程序提供的个人用户主页功能来实现。该功能允许系统内所有的用户在自己的家目录中管理个人的网站,而且访问起来也非常容易。
第一步:启用个人用户主页功能
编辑/etc/httpd/conf.d/userdir.conf文件,取消注释或添加以下行以启用用户目录功能:
UserDir public_html
并且确保在/etc/httpd/conf/httpd.conf或其他适当位置启用了mod_userdir模块:
LoadModule userdir_module modules/mod_userdir.so
第二步:设置用户主页
在用户家目录中建立用于保存网站数据的目录及首页面文件。另外,还需要把家目录的权限修改为755,保证其他人也有权限读取里面的内容。
[root@localhost home]# su - postgres [postgres@localhost ~]$ mkdir public_html [postgres@localhost ~]$ echo "This is postgres's website" > public_html/index.html [postgres@localhost ~]$ chmod -R 755 /home/postgres
第三步:重启服务并访问
重新启动Apache服务程序,在浏览器的地址栏中输入网址,其格式为“网址/~用户名”(其中的波浪号是必需的,而且网址、波浪号、用户名之间没有空格)。例如127.0.0.1/~postgres/。
[postgres@localhost ~]$ exit logout [root@localhost ~]# systemctl restart httpd
Apache允许基于不同的资源来创建虚拟主机网站,包括但不限于IP地址、域名和端口号。这里我们将着重讨论基于域名配置虚拟主机的方法。
6.1 基于主机域名配置虚拟主机
当服务器无法为每个网站都分配一个独立IP地址时,可以让Apache自动识别用户请求的域名,从而根据不同的域名请求传输不同的内容。为了实现这一点,首先需要手动定义IP地址与域名之间的对应关系。这可以通过编辑/etc/hosts文件完成,以强制解析特定域名为指定IP地址。
[root@localhost ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 www.postgres.com www.oracle.com www.mysql.com
接下来,分别创建用于保存不同网站数据的目录,并向其中写入明确区分不同网站内容的首页文件。
[root@localhost ~]# mkdir -p /home/wwwroot/postgres [root@localhost ~]# mkdir -p /home/wwwroot/oracle [root@localhost ~]# mkdir -p /home/wwwroot/mysql [root@localhost ~]# echo "www.postgres.com" > /home/wwwroot/postgres/index.html [root@localhost ~]# echo "www.oracle.com" > /home/wwwroot/oracle/index.html [root@localhost ~]# echo "www.mysql.com" > /home/wwwroot/mysql/index.html
最后,在Apache的配置文件中追加写入基于主机名的虚拟主机网站参数,并重启Apache服务使配置生效。
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
# 在适当位置添加如下内容:ServerName www.postgres.com DocumentRoot "/home/wwwroot/postgres" ServerName www.oracle.com DocumentRoot "/home/wwwroot/oracle" ServerName www.mysql.com DocumentRoot "/home/wwwroot/mysql" [root@localhost ~]# systemctl restart httpd
现在,当用户访问www.postgres.com、www.oracle.com或www.mysql.com时,他们将被导向到相应的网站内容。
Apache提供了灵活的访问控制机制,可以根据源主机名、源IP地址或源主机上的浏览器特征等信息对网站上的资源进行访问限制。下面是一个例子,展示了如何只允许使用Firefox浏览器的主机访问特定的目录:
[root@localhost ~]# vim /etc/httpd/conf/httpd.confSetEnvIf User-Agent "Firefox" ff=1 Order allow,deny Allow from env=ff [root@localhost ~]# systemctl restart httpd
这段规则意味着只有使用Firefox浏览器的请求才能成功访问位于/var/www/html/server下的资源;其他请求则会被拒绝
有时,网站的拥有者并不希望直接将网页内容显示出来,而是只想让通过身份验证的用户看到里面的内容。这时可以为网站添加密码保护功能。
第一步:生成密码数据库
使用htpasswd命令生成密码数据库。-c参数表示第一次生成;后面再分别添加密码数据库的存放文件,以及验证要用到的用户名称(该用户不必是系统中已有的本地账户)。
[root@localhost ~]# htpasswd -c /etc/httpd/passwd postgres New password: 输入用于网页验证的密码 Re-type new password: 再次输入确认密码 Adding password for user postgres
第二步:编辑配置文件
继续编辑个人用户主页功能的配置文件。把相关部分的参数信息修改成下列内容,随后保存并退出配置文件,重启Apache服务程序即可生效。
[root@localhost ~]# vim /etc/httpd/conf.d/userdir.confAllowOverride all AuthUserFile "/etc/httpd/passwd" AuthName "My privately website" AuthType Basic Require user postgres [root@localhost ~]# systemctl restart httpd
此后,当用户再想访问某个用户的个人网站时,就必须输入账户和密码才能正常访问了。
通过以上步骤,我们可以看到Apache的强大之处在于它的灵活性和可扩展性。无论是简单静态网站还是复杂的动态应用,Apache都能够提供稳定可靠的支持。
想了解更多相关的学习资料(技术文章和视频),可以微信公众号或B站搜索《云贝教育》,免费获取。
需要课程资料的同学可以私聊课程顾问:19906733890(微信同号)