linux小记:Ubuntu和Arch下的Apache

原创 2016年08月28日 17:07:52

Apache2在Ubuntu和Arch下,配置文件的组织方式差别还是挺大的。小记一下,因为我过不久肯定就会忘的=.=

Ubuntu

在Ubuntu下,配置目录在/etc/apache2。在此目录下,主要配置文件是apache2.conf,但是为了更清晰,在Ubuntu上Apache的配置文件是拆分了的,最后在apache2.conf中都Include了进来。比如:

# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

# Include list of ports to listen on
Include ports.conf

Apache的配置文件主要拆出来的有这几块:ports.conf/sites/conf/mods,具体目录结构如下:

/etc/apache2/
|-- apache2.conf
|       `--  ports.conf
|-- mods-enabled
|       |-- *.load
|       `-- *.conf
|-- conf-enabled
|       `-- *.conf
|-- sites-enabled
|       `-- *.conf

ports.conf

其中ports.conf里面设置了监听的端口,默认已经有了Listen 80

sites-avaliable & sites-enable

sites分为sites-availablesites-enable两个文件夹。一般是available里面放配置文件,代表所有可用的站点,enable里面放软链接,链到available里面的配置文件,则这个配置文件就启用了。

Note: 切记软链接的时候一定要用全路径,如ln -s /etc/apache2/sites-available/puppy.conf /etc/apache2/sites-enable/,不然会出现迷之错误。

sites就是站点的意思。比如我有两个站点,apache-default.confpuppy.conf,前者设置为端口81,并在开头写上Listen 81,虽然理论上应该写到ports.conf文件中,不过写在这里会更清晰。不想要这个站点的时候直接删了这个文件就行了。
比如,apache的默认配置文件,我们把端口改成81

Listen 81
<VirtualHost *:81>
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

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

站点配置文件中除了修改对应的端口号,还要修改DocumentRoot,即站点放置的位置。Ubuntu下Apache站点放置位置在/var/www,比如默认站点在/var/www/html。我们可以将puppy站点放置目录为/var/www/puppy,这样在访问我们的Apache地址www.xxx.com.cn(如果有域名的话。否则写架设Apache服务器的IP)时对应的就是/var/www/puppy[/index.html]。访问www.xxx.com.cn:81对应的就是Apache的站点/var/www/html

conf / mods

confmodssites类似,也是由availableenable构成。
这些东西最后都includeapache2.conf中。

DocumentRoot的概念

apache2.conf里面有<Directory blabla_path>或者<File blabla_file>,里面设置的是一些权限的问题,即给开放的站点加上权限。
比如apache2.conf默认对几个地方进行了设置:

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Document Roots: By default, Ubuntu does not allow access through the web browser to any file apart of those located in /var/www, public_html directories (when enabled) and /usr/share (for web applications). If your site is using a web document root located elsewhere (such as in /srv) you may need to whitelist your document root directory in /etc/apache2/apache2.conf.

启动方式

Ubuntu启动Apache的方式为service apache2 start,或者用systemctl或者/etc/init.d的启动方式都行。

Arch

Arch上Apache的默认配置文件在/etc/httpd下,比如配置文件在conf文件夹中。默认配置文件为/etc/httpd/conf/httpd.conf,其他配置文件在/etc/httpd/conf/extra文件夹里,也是通过Include引用进来的,比如:

# User home directories
Include conf/extra/httpd-userdir.conf
# Various default settings
Include conf/extra/httpd-default.conf

装完php后就得把php的配置文件Include进来:

Include conf/extra/php7_module.conf

装完phpmyadmin也一样:

Include conf/extra/phpmyadmin.conf

其实这样做的话,个人感觉会把主配置文件httpd.conf搞得有点儿庞杂,不像Ubuntu下的主配置文件apache.conf那么简洁。

ArchWiki上Apache的配置页面httpd.conf有比较详细的介绍,比如DocumentRoot "/srv/http"是Arch下Apache的默认站点目录。ServerRoot "/etc/httpd"是配置文件的目录。这些都和Ubuntu上的不同。Listen 80也在这里面。ServerAdmin shininglhb@163.com可以设置邮箱,当页面挂了的时候会显示给用户。

当然这里面也有关于DocumentRootDirectory的设置,比如默认的:

DocumentRoot "/srv/http"
<Directory "/srv/http">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

构建多个站点

如果我们想构建多个站点,且希望更方便的维护,建议为每一个虚拟主机创建一个配置文件并文件存储到一个文件夹中 /etc/httpd/conf/vhosts中。并在 /etc/httpd/conf/httpd.conf中注释掉Include conf/extra/httpd-vhosts.conf这一行。
比如我们新建一个puppy的站点,监听端口为81,就新建一个/etc/httpd/conf/vhosts/puppy.dom,格式按照下面这个示例进行替换即可:

<VirtualHost domainname1.dom:80>
    ServerAdmin webmaster@domainname1.dom
    DocumentRoot "/home/user/http/domainname1.dom"
    ServerName domainname1.dom
    ServerAlias domainname1.dom
    ErrorLog "/var/log/httpd/domainname1.dom-error_log"
    CustomLog "/var/log/httpd/domainname1.dom-access_log" common

    <Directory "/home/user/http/domainname1.dom">
        Require all granted
    </Directory>
</VirtualHost>

这一点跟Ubuntu上新建站点的配置文件没有什么区别。
最后别忘了在httpd.conf中加入:

Include conf/vhosts/puppy.dom

启动方式

Arch使用的是systemd,所以使用systemctl start httpd.service来启动Apache。
Ubuntu配置文件是apache2.conf,启动参数是apache2;Arch配置文件是httpd.conf,启动参数是httpd.service

两个不同的发行版有不同的配置组织方式。不过总体感觉,Ubuntu下的Apache的配置方式更整洁一点儿。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

在linux内核文件中arch文件作用

arch 这个子目录包含了此核心源代码所支持的硬件体系结构相关的核心代码。如对于X86平台就是i386。  include 这个目录包括了核心的大多数include文件。另外对于每种支持的体...

Arch Linux 安装小记

Arch Linux 安装小记这只是一篇随笔,用来记录从全新安装 Arch Linux 开始,到在使用过程中各种软件配置的过程。...
  • leesheen
  • leesheen
  • 2016年05月05日 13:45
  • 12642

arch linux上apache+mysql的安装与配置

一个项目上的系统环境是arch linux,需要在上面安装apache和mysql,吧过程记录一下,希望也能给别人带来帮助。 一、网络配置         这个浪费时间最多,最后也没有完全解决,技...

Apache FastCGI 配置过程小记

  • 2012年11月16日 00:42
  • 21KB
  • 下载

ubuntu安装完毕后,grub出现问题:invalid arch independent ELF magic

本文参考自:blog.csdn.net/li_hai/article/details/7776213

ubuntu linux下安装apache

  • 2011年09月23日 23:21
  • 906B
  • 下载

Ubuntu 安装完毕,解决引导系统grub提示:invalid arch independent ELF magic错误

Ubuntu12.04推出后,首先安装64位使用一段时间,后来重新安装32位系统,使用时段时间后,基本没体会出两者的区别,随又换回64位,安装很顺利,/home分区不格式化。 按转完毕,重启动:gr...
  • li_hai
  • li_hai
  • 2012年07月23日 17:16
  • 9674
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux小记:Ubuntu和Arch下的Apache
举报原因:
原因补充:

(最多只允许输入30个字)