gpt4 book ai didi

linux - 在 Linux 上使用 Apache 设置子域

转载 作者:IT王子 更新时间:2023-10-29 00:21:40 25 4
gpt4 key购买 nike

我不敢相信我以前没有这样做过,但我想要一个明确的答案,所以我已经准备好继续前进了。

我在 /etc/apache2/sites-available/mysite 中有一个 apache 配置文件,如下所示:

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /home/sam/public_html
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/sam/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

所以这提供了 ~/public_html 中的 html 和 php 文件,一切正常。但我在那里有多个项目,所以想开始使用子域。我想要做的是将 ~/public_html/myproject/ 中的文件作为 myproject.localhost 的根目录。

我尝试将以下内容添加到我的 apache 文件的底部:

<VirtualHost myproject.localhost>
DocumentRoot ~/public_html/myproject/
ServerName myproject.localhost
ServerAdmin admin@myproject.localhost
<Directory ~/public_html/myproject>
Options Indexes FollowSymLinks
AllowOverride FileInfo
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

但是 apache 提示:

Restarting web server: apache2[Tue Aug 20 11:06:19 2013] [error] (EAI 2)Name or service not known: Could not resolve host name myproject.localhost -- ignoring!
... waiting [Tue Aug 20 11:06:20 2013] [error] (EAI 2)Name or service not known: Could not resolve host name myproject.localhost -- ignoring!

我知道我犯了一个根本错误,但我不确定是什么错误。

编辑

现在这是我的完整文件:

<VirtualHost *:80>
DocumentRoot /home/sam/public_html/ryua1226-magento/
ServerName mydomain.localhost
ServerAdmin admin@mydomain.localhost
<Directory /home/sam/public_html/ryua1226-magento>
Options Indexes FollowSymLinks
AllowOverride FileInfo
Order allow,deny
Allow from all
</Directory>
</VirtualHost>


<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /home/sam/public_html
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/sam/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

最佳答案

你告诉 Apache 你想在 <VirtualHost> 里面回答什么 IP 和端口tag so here * 表示任何 IP,但接受端口 80 上的此站点的请求。接下来您需要告诉 Apache 文档根目录在哪里。 ~/表示您的默认主目录,因此如果您的 DocumentRoot恰好是默认值 home变量然后它将与您现有的符号一起使用(取决于您运行服务器的用户)。然后您将声明服务器名称。

除非您使用别名,否则您为其创建主机的每个域名都需要其自己的虚拟主机指令。

<VirtualHost *:80>
DocumentRoot /home/sam/public_html
ServerName myproject.localhost

# Other directives here

</VirtualHost>

<VirtualHost *:80>
DocumentRoot /home/sam/public_html/myproject
ServerName myotherproject.localhost

# Other directives here

</VirtualHost>

关于主机除此之外,您为主机创建的任何特殊名称都需要进入主机文件或 DNS 服务器。这样,任何正在寻找您的服务器的网络浏览器都可以找到它,而无需输入 IP。由于如果您尝试仅使用 IP 访问服务器,您的设置可能会在同一 IP 上有多个主机,因此您只会让第一台主机响应 IP(通常在 vhosts 列表的顶部) .

关于linux - 在 Linux 上使用 Apache 设置子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18342208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com