Anafora开源1.0版本安装指南
首先不得不吐槽一下,官方指南真的太TM简略了,能省则省!
;
废话不多说,进入正题:
首先,安装anafora的环境依赖:
1, 安装apache httpd:
Windows就不要试了,最好选ubuntu的系统,centos可能也行,但只是可能(个人见解)!
然后需要安装三个apache的依赖,参考链接
:
(以下安装方法引用自上述链接)
要编译Apache httpd,存在以下要求:
a) 确保你的系统中已经安装了APR和APR-Util;Perl-Compatible Regular Expressions Library (PCRE)这个库是必需的,但它不再与httpd捆绑在一起。
b) Disk Space:确保你有至少50MB的临时空闲磁盘空间可以使用。
c) ANSI-C Compiler and Build System:确保你已经安装了一个ANSI-C编译器。推荐使用由自由软件基金会(FSF)编写的GNU C编译器(GCC)。
d) Accurate time keeping:HTTP协议的元素会以一天的时间进行表示。所以,它的时间会参照你系统中的一些时钟同步设备的设置。通常基于网络时间协议(NTP)的程序ntpdate或xntpd就是用来做这样的事情。
接下来,就是要安装APR、APR-Util和PCRE。
先来看下APR与APR-Util的下载,大家可以去http://apr.apache.org进行下载。
下载PCRE大家可以去http://www.pcre.org进行下载。
将下载的3个压缩包上传到你的Linux系统中去。我上传到了我Linux系统下/mysoft目录中。进入这个目录:cd /mysoft。我们先解包APR,并查看/mysoft目录下的文件,依次执行命令:(目录根据自己的情况对号入座)
gzip -d apr-1.5.2.tar.gz
tar -xf apr-1.5.2.tar
ls -l
可以看到/mysoft目录下多了一个目录apr-1.5.2。进入apr-1.5.2目录:cd ./apr-1.5.2/。然后,进行APR的源码安装,依次执行命令:./configure
Make
make install
安装完成后,我们可以看到APR的安装路径/usr/local/apr。当然,你也可以使用 --prefix=目录 选项来指定一个安装目录。
接着,我们来解包APR-Util,并查看/mysoft目录下的文件,依次执行命令:
gzip -d apr-util-1.5.4.tar.gz
tar -xf apr-util-1.5.4.tar
ls -l
可以看到/mysoft目录下多了一个目录apr-util-1.5.4。
进入apr-util-1.5.4目录:cd ./apr-util-1.5.4/。然后,进行APR-Util的源码安装,依次执行命令:
./configure --with-apr=/usr/local/apr
Make
make install
在安装APR-Util时,需要指定APR的安装路径,所以需要带上选项--with-apr=/usr/local/apr,如果你不带上这个选项,在configure的时候会看到如下的错误提示:
configure:error:APR could not be located.Please use the --with-apr option.
下面,我们来安装PCRE。首先,解包PCRE,并查看/mysoft目录下的文件,依次执行命令:
gzip -d pcre-8.36.tar.gz
tar -xf pcre-8.36.tar
ls -l
可以看到/mysoft目录下多了一个目录pcre-8.36。
进入pcre-8.36目录:cd ./pcre-8.36/。然后,进行pcre-8.36源码安装,但是,当你在执行./configure时,会看到如下提示:
configure: error: You need a C++ compiler for C++ support
不用担心,yum又派上用场了,执行命令:yum install -y gcc gcc-c++ 。
gcc-c++安装完成后,我们继续我们的pcre-8.36源码安装,依次执行命令:
./configure
Make
make install
至此,准备工作就绪,开始准备安装Apache Server2.4,可以去http://httpd.apache.org进行下载。
安装Apache之前,我们再来看一小段官方文档:
--enable-mods-shared=MODULE-LIST
定义一个要启用的模块列表,并且这些模块会以动态共享模块进行编译。这就意味着,这些模块需要通过使用LoadModule指令进行动态加载。MODULE-LIST是一个由引号引起来且由空格进行分隔的模块名列表。这些模块名要以去掉前面的mod_的形式给出。例如:
--enable-mods-shared='headers rewrite dav'
你还可以使用特殊关键字reallyall,all,most,few和none。例如:
--enable-mods-shared=most 编译大部分模块并将它们作为动态共享模块进行编译
--enable-mods-shared=few 只编译一组比较基本的模块,默认关键字是most。
对于已选择的模块来说,LoadModule指令会自动在主要配置文件中生成。默认情况下,所有这些指令会被注释掉,除了一些必需的或是通过一个--enable-foo参数明确指定的模块。你可以在httpd.conf文件中通过激活或注销LoadModule指令来改变已加载模块的设置。另外,可以通过配置选项--enable-load-all-modules来将所有已编译模块的LoadModule指令激活。
--enable-mods-static=MODULE-LIST
这个配置选项的行为与--enable-mods-shared类似,但会静态链接给出的模块。这就意味着,在运行httpd的时候,这些模块总是存在。它们不需要用LoadModule指令进行加载。
--enable-modules=MODULE-LIST
这个配置选项的行为与--enable-mods-shared类似,也会动态链接给出的模块。可以使用特殊关键字none来禁用所有要编译的模块。
更多的内容大家可以自己去官网看,这里我就不再多讲了。进入正题,解包httpd,并查看/mysoft目录下的文件,依次执行命令:
gzip -d httpd-2.4.17.tar.gz
tar -xf httpd-2.4.17.tar
ls -l
可以看到/mysoft目录下多了一个目录httpd-2.4.17。
进入httpd-2.4.17目录:cd ./httpd-2.4.17/。然后,进行Apache源码安装,依次执行命令:
./configure --enable-mods-shared=all
make
make install
Apache默认安装在/usr/local/apache2目录下。同样,这里你也可以使用
--prefix=目录名
来指定一个安装目录,例如:
./configure --prefix=/usr/mydir --enable-mods-shared=all
Apache已经安装成功,现在启动httpd服务。执行命令:
/usr/local/apache2/bin/apachectl -k start;
大家会发现,httpd服务并没有启动,而是出现了一条如下所示的错误信息:
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
出现上述错误信息,是因为配置文件httpd.conf中的ServerName没有修改。
我们用Vim打开httpd.conf配置文件,执行命令:
vi /usr/local/apache2/conf/httpd.conf
设置Vim在执行搜索时不区分大小写,执行命令:
:set ic
搜索"servername"字符串,执行命令:
/servername
找到servername后,按A键进行编辑。将ServerName前的#号去掉,将ServerName后面的字符串改为:localhost:80。
修改完成后,按Esc键由编辑模式切换到命令模式,然后执行保存退出命令:
:wq
在启动httpd之前,我们先为其创建一个软链接(相当于windows下的快捷方式),否则每次重启Apache都要输那么一长串,很费劲。
为httpd创建软链接,并查看一下软链接是否创建成功,依次执行命令:
ln -s /usr/local/apache2/bin/apachectl /mylinks/httpd。
ls -l /mylinks
来吧,启动httpd服务,执行命令:/mylinks/httpd -k start
在测试Apache是否已经正常工作之前,我们先看下防火墙的状态:
systemctl status firewalld
如果处于running运行状态,就把它关掉:
systemctl stop firewalld
然后,查看一下防火墙是否已经关掉:
systemctl status firewalld
如果处于dead状态,就说明已经关掉了。
如果你希望每次系统启动的时候都不要启动防火墙,可以执行命令:
systemctl disable firewalld
同样,如果你希望每次系统启动的时候都启动防火墙,可以执行命令:
systemctl enable firewalld
防火墙关闭后,接着来看下你系统的IP地址:ifconfig -a。可以看到我的IP是192.168.0.104。
打开浏览器,在地址栏中输入:192.168.0.104,回车。可以看到“It works !”就代表安装成功了!
2, 安装Django:
直接pip安装即可,例如pip install django==1.6.5,如果不是必须的话最好不要安装1.10版本,原因在下文中会提到;
3, 安装mod_wsgi:
参考链接:;
下载链接:;
在选择版本的时候除了考虑os,还要看跟你的Python版本(我的是Python2.7)是不是兼容(此处有眼泪);
解压:tar xvfz mod_wsgi-X.Y.tar.gz
配置:./configure --with-apxs=/usr/local/apache/bin/apxs \
--with-python=/usr/local/bin/python
安装:make && make install
安装完了一定注意看mod_wsgi.so 是不是在/apache2/modules/路径下!(真的有可能不在,然后会出问题,此处也有眼泪!)
确认在正确路径下的话,在apache的配置文件中增加一行:
LoadModule wsgi_module modules/mod_wsgi.so
Mod_wsgi的任务暂时告一段落,注意是暂时,接下来还需要配置;
4, 接下来下载并解压anafora
然后配置django和mod_wsgi,在apache的配置文件中添加:
具体位置为:<IfModule alias_module>与</IfModule>之间:
Alias /anafora/static /path_to_anafora/src/main/static
WSGIScriptAlias /anafora /path_to_anafora/src/main/web/wsgi.py
WSGIPythonPath /path_to_anafora/src/main
其中,为了保险起见,“/path_to_anafora/”可以写绝对路径;
5, 然后需要进行用户授权设置:
具体可以参考:;
具体有关httpd摘要(digest)认证的资料可以百度之,一抓一大把;
6, Anafora的设置/path_to_anafora/src/main/web/settings.py和permissions设置按照官方指南进行设置即可;
/src/main/web/wsgi.py的设置也可以参考:
;
但是文中提到的更改文件位置什么的(包括“get the settings.py file in the right place”、“Copy the theme files”等等)并没有必要,只要设置好路径即可;
本人碰到的其他错误:
1, Target WSGI script '/usr/local/apache2/anafora/src/main/web/wsgi.py' cannot be loaded as Python module.
解决办法:找到python中django的目录下的wsgi.py,注意:不是!anafora中的wsgi.py,然后chmod a+x wsgi.py即可解决;
2, ImproperlyConfigured: The TEMPLATE_DIRS setting must be a list or a tuple. Please fix your settings.
解决办法:去setting.py文件中,找到TEMPLATE_DIRS,把它改成list;
3, File "/usr/local/apache2/anafora/src/main/web/urls.py", line 1, in <module>
from django.conf.urls import patterns, include, url
ImportError: cannot import name patterns
解决办法:这个是django版本的问题,如上文提到的眼泪,即最好不要安装1.10版本,否则会像如下链接,没人解决这个问题:
;
解决方案参考于:
;
4, 碰到问题记得看/apache2/logs/error_log!!!
5, 学会用chrome定位以及调试前端的问题,必备技能;
6, 其他问题欢迎交流,email:wangyi_bupt2011@163.com;