当前位置: 首页 > 面试题库 >

在Linux上使用Apache设置子域

督翰学
2023-03-14
问题内容

我不敢相信我以前没有做过,但是我想得到一个明确的答案,所以我已经准备好了。

我有一个Apache的配置文件/etc/apache2/sites-available/mysite,看起来像这样:

<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>

问题答案:

您在<VirtualHost>标签内告诉Apache您想回答的IP和端口,所以这里*表示任何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服务器中。这样,任何正在寻找服务器的Web浏览器都可以找到它,而无需键入IP。如果您尝试仅使用IP访问服务器,则可能会在设置中将多个主机置于同一IP上,因此,您只会获得第一个响应IP的主机(通常是vhosts列表中的顶部)




 类似资料:
  • 我正在迁移React with TypeScript项目以使用钩子特性(React v16.7.0-alpha),但我不知道如何设置分解结构元素的类型。 以下是一个例子: 我想强制变量类型为。我唯一成功的试验是分两个阶段进行:打字,然后初始化: 但我相信有更好的办法。另外,应该初始化为一个函数,该函数将作为输入,并且不返回任何内容。 另外,值得注意的是,使用

  • 我正在构建一个路由slip bean,除了动态路由之外,我还想向收件人列表的endpoint发送一个参数。 我希望使用类似“direct:test?param=value”的东西,其中param和value在路由单POJO中设置 根据我对直接组件的理解,一个单一的“直接:测试”endpoint将接收所有路由交换,但是我需要一种从路由条中读取参数发送的方法 如何将此参数用于接收交换的endpoint

  • 本文向大家介绍Linux Apache设置压缩及缓存,包括了Linux Apache设置压缩及缓存的使用技巧和注意事项,需要的朋友参考一下 压缩文件: 编辑apache模块 vim /etc/httpd/conf.modules.d/00-base.conf 确保以下三个模块没有被注释 LoadModule headers_module modules/mod_headers.so LoadMod

  • 我试图在Wildfly Swarm中设置一个Camel Rest服务,但我不确定类是如何实例化的,甚至不知道是如何实例化的。我下载了Wildfly Swarm示例,并查看了Camel CXF-JAXRS项目,这是有意义的,但它使用XML定义路由。我想使用Java DSL。我的类如下所示: 我已经尝试过使用和不使用文件。Swarm启动,但我无法浏览到rest服务endpoint。 如何调用?我应该有

  • 使用Apache poi创建一个基本的word文档,我需要更改页面边距。这个问题的答案似乎很完美,但我没有CTPageMar类。我用的是3.10。有谁用不同的版本或不同的方法运气吗?

  • 我已经在EC2实例上安装了Apache Kafka,更改了安全组,为Kafka和Zookeeper打开了端口9092和2181。我只有一个代理,一个主题,一个分区,没什么复杂的。我通过尝试当地生产者/消费者来确认Kafka作品。 在AWS安全组上,它显示: 自定义 TCP 规则 TCP 2181 0.0.0.0/0 自定义 TCP 规则 TCP 9092 0.0.0.0/0 现在我想使用我的Bro