20171219 几经实验,对apache2的conf群和对应的各类conf总-分-分结构的深入理解

20171219 : 对apache2的conf群和对应的各类conf总-分-分结构的深入理解 

自学就不带bias,但多设假设, 多批判 ,多大胆无界限的学习 新知识!!


001 首先 apache2.conf 和它的子集 的各类conf 的分结构如下:


Configuration files

The Apache HTTP Server is configured by placing directives in plain text configuration files. The location of the configuration files depends on the operating system version. Historically, the main Apache configuration file was calledhttpd.conf. However, on Ubuntu, the main configuration file isapache2.conf. In this section we will describe the main configuration files found in Ubuntu.

In Ubuntu, the Apache configuration files are stored in the/etc/apache2directory:

20171219 几经实验,对apache2的conf群和对应的各类conf总-分-分结构的深入理解_第1张图片

Here is a brief description of the files in this directory:

apache2.conf– the main Apache2 configuration file that contains settings global to Apache.

conf-available– a directory that contains available configuration files.

conf-enabled– a directory that holds symlinks to the files in/etc/apache2/conf-available.

envvars– a file where Apache environment variables are set.

magic– a text file that instructions for determining MIME type based on the first few bytes of a file.

mods-available– a directory that contains configuration files to both load modules and configure them.

mods-enabled– a directory that holds symlinks to the files in/etc/apache2/mods-available.

ports.conf– a configuration file that houses the directives that determine the TCP ports Apache is listening on.

sites-available– a directory that has configuration files forApache Virtual Hosts. Virtual Hosts allow Apache2 to be configured for multiple sites that have separate configurations.

sites-enabled– a directory that contains symlinks to the/etc/apache2/sites-availabledirectory.



002 心得:  现在理解:  -- 总体4者是  总- 分1-分2-分3 的关系,实际上 还是 配置 范围和配置 管理上的 最强(最全局)--》次强次全--》最弱/最局部/最 单独虚拟主机或单独网站  关系

--总: apache2.conf 是主的配置的开关存放地, 存的都是 全局 改变的东西!!  没有一定改变资格的,不用往 apache2.conf 里面放;另外 换句话 说 ,对后面的conf-available /enable 和 mod --a/e , sites -a/e 理解和应用好了,绝大多数情况下,其实 也不用改 apache2.conf的主配置

--  分1 conf-available /enable  : 就是那些额外的配置 (要不是 非全局改变的配置开关,要不是 由 某个 应用程序 单独需求 引起的)

The/etc/apache2/conf-availabledirectorycontains additional configuration files that not associated with a particular module.This directory holdsspecialized and local configuration files, andlinks to configuration files set up by other applications.

-- 分2 mods-available directory

The/etc/apache2/mods-availabledirectory contains configuration files to both load modules and configure them. The.loadfiles inside this directory contain theApache Loaddirectives to load the modules into the web server, and the.conffiles contain additional configuration directives necessary for the operation of the modules.

--分3 sites-available directory

The/etc/apache2/sites-availabledirectory holds configuration files forApache Virtual Hosts. Virtual Hosts allow Apache to be configured for multiple sites that have separate configurations.

Configuration files will contain theDirectory directives specifying the location of the site and features you have set up for it. The000-default.conffile contains configuration directives for the default Web server, such as the directory directives locating the default site at/var/www/html.

举几个例子 说明下我的理解

例子01   e.g 我们期望用的flask的引起 新配置 就是这种情况 ,可以放在这个 “分1” 级别 ,conf-a/e 级 ,那应用就是在由appliation 引起且在这个coverage 执行  那个loadmodule xxx+ wsgipythonehomeXXX

例子02,如果 ,我们 类似于 把 我们期望用的flask的引起 新配置 就是这种情况 ,可以放在这个 “总” 级别 ,那就是 全局的,所有,任何程序,需要调用到apache2 服务的应用,都要 认可和under在 loadmodule xxx+ wsgipythonehomeXXX的配置环境下

例子03, 如果,我们类似于 把 我们期望用的flask的引起 新配置 就是这种情况 ,可以放在这个 “分3” 级别 , sites-a/e ,那就是 只有 在某个site /某个虚拟主机的页面访问的这种 最小最窄 的coverage ,才会应用  认可和under在 loadmodule xxx+ wsgipythonehomeXXX的配置环境下  ;但反过来说,这个小圈子,反而 造成 对 别的应用 的保护,不干扰 别的应用去 使用apache的资源 和施加自己的配置!! !

下面举一个实战的例子04 ,或者说 ,一会 下面 那个帖子的例子 也是这个 情况 。

https://www.server-world.info/en/note?os=Ubuntu_16.04&p=httpd&f=17

这个帖子,我仔细看了(但当时基础知识不足!!) ,也跟着做了该帖子的试验的第2步 和第3步 ,但现在反省 ,我的问题是帖子的第一步即 (没有执行到位)

[1]Install mod_wsgi.

帖子说会显示

root@www:~#  apt-get-y install libapache2-mod-wsgi

现在的心得 : 现在知道,这种ubuntu下的dpkg 包的安装方式(类似centos的rpm 下载方式),都是别人第三方编译好给你打包下载用的,它这个包远远是不能保证 和你本机现场的现有包的依赖关系,更不能保证和你的C /C++ compiler是相同版本 32 or 64bit 兼容的!!!

所以 ,我在这里 就进了2个大坑

坑01 : 我都没按这个 下载 libapache2-mod_wsgi 的方式 去下载 安装 (我走的另一条路 ,python 里的pip  mod_wsgi  from pypi, 然后走 mod_wsgi-express load module) 的方式

下载 libapache2-mod_wsgi    这种ubuntu下的dpkg 包的安装方式 ,相比 编译源码 安装的方式 ,少了 对和你本机现场的现有包的依赖关系的这步 ,(参考  例子05 : 思诚之道  Billy.J.Hee的技术博客的在Apache中运行Python WSGI应用


下载源码包

mod_wsgi的源码托管在Github上,你可以从https://github.com/GrahamDumpleton/mod_wsgi/releases下载它各个版本的源码包。

解压后,配置编译选项

一般采用默认配置即可,即执行:

$ ./configure

如果要指定Apache和Python环境,那你需要加上”–with-apxs”和”–with-python”选项:  --//旁白 ,这才有效建立和你本机现场的现有包的依赖关系

$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/bin/python

编译并安装

$ sudo make && make install


坑02 : 下载 libapache2-mod_wsgi  后== 只等于 在 xxx/modules/ 有mod_wsgi.so 这个模块候选了,apache2.conf ,并不会 自动的添加这个的。

--这里要再 说明下 总 =apache2.conf 和 分2 = mod-A/E  和 module 模块储备区 xxx/modules/ 有mod_wsgi.so 的关系:

module 模块储备区 xxx/modules/ 有mod_wsgi.so  ,最好理解,就是无论你是 走 下载rpm/dpkd ,还是python pypi (都是mod_wsgi-express load module)方式 ,都是把 mod_wsgi.so 放在这个模块储备区 ,连 mods-available 的排队区 都不是呢!!!

总 =apache2.conf 和 分2 = mod-A/E 的关系--其实都是为了一个目的,就是 怎么把 模块,e.g. mod_wsgi.so ,可以放在排队区=available 或 在使用区 enable 。

因为 mod的使用机制是 必须 要有个.conf 来引导 ,所以 以眼前 mod_wsgi.so的情况,除非 就是 你自己写一个mod_wsgi.conf ,(自定义,里面内容和mod_wsgi-express load module 产生的一样) ,把这个mod_wsgi.conf ,和mod_wsgi.so 一起放在 排队区=available。

但这个是非常规的自主大胆行为

目前保守可靠的就是 一条路:  --- 在主配置里面 写入 (里面内容和mod_wsgi-express load module 产生的一样),然后 其实 就是

--- apache2.conf --->直接调用 --  module 模块储备区 xxx/modules/   (跳开了 排队区=available ,但是 运行restart后 ,在在使用区 enable里应该有 mod_wsgi.so)

最后以 实战例子06 :  http://www.tufeiping.com/topic/146/%E5%88%86%E4%BA%ABApache%20Httpd%E7%9A%84%E5%AE%89%E8%A3%85%E8%BF%87%E7%A8%8B 

(虽然是 3年前的配置和帖子),可以看出,里面用到的原理是和上面一致的。

你可能感兴趣的:(20171219 几经实验,对apache2的conf群和对应的各类conf总-分-分结构的深入理解)