红联Linux门户
Linux帮助

Ubuntu安装Apache+mod_wsgi+Trac+Python 2.7

发布时间:2017-03-20 09:23:33来源:linux网站作者:钟伟V5
概述
Trac是自带wiki的轻量级软件项目管理系统,遵循BSD开源协议的开源软件。项目主页是https://trac.edgewall.org, 源代码在Github上有镜像git://github.com/edgewall/trac.git
Trac可以运行独立服务器,使用下面一行命令即可运行服务器。如果只有一个Trac实例,这种方式完全可以满足需求。
tracd path/to/trac --port=8080
Trac也可以使用Apache来运行,通过加载mod_wsgi模块来实现运行Python web服务器。本文主要介绍在Ubuntu系统上配置Trac。
假设软件已经安装完毕,MySQL-python, Trac(v1.2)及相关依赖也通过pip安装成功。同时假设Trac实例为demo安装在/opt/trac/demo, deploy文件到/opt/trac-deploy
 
软件准备
1.Ubuntu
zhongw@s1:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.10
Release:        16.10
Codename:       yakkety
2.Python2.7/PIP/MySQL5.7/Apache2
zhongw@s1:~$ python -V
Python 2.7.13
zhongw@s1:~$ mysql -V
mysql  Ver 14.14 Distrib 5.7.17, for Linux (i686) using  EditLine wrapper
zhongw@s1:~$ pip -V
pip 9.0.1 from /home/zhongw/.local/lib/python2.7/site-packages (python 2.7)
zhongw@s1:~$ /usr/local/apache2/bin/apachectl -v
Server version: Apache/2.4.25 (Unix)
Server built:   Mar 18 2017 15:51:58
3.mod_wsgi
Server:Apache/2.4.25 (Unix) mod_wsgi/4.5.15 Python/2.7
 
编译mod_wsgi
Apache, MySQL, Python都可以通过apt-get来安装,但mod_wsgi需要从源代码编译安装。
从Github找到mod_wsgi的最新发布版本的源代码 https://github.com/GrahamDumpleton/mod_wsgi
本文使用的版本是4.5.15
1.Configure
zhongw@s1:~/mod_wsgi-4.5.15$  ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-python=/usr/local/bin/python
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for prctl... yes
checking Apache version... 2.4.25
configure: creating ./config.status
config.status: creating Makefile
2.Run make命令编译mod_wsgi
如果出现编译问题,参考官方文档解决,常见的是找不到Python.h等问题,官方有详细说明。
3.make install
zhongw@s1:~/mod_wsgi-4.5.15$ sudo make install
/usr/local/apache2/bin/apxs -i -S LIBEXECDIR=/usr/local/apache2/modules -n 'mod_wsgi' src/server/mod_wsgi.la
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apr/build-1/libtool' src/server/mod_wsgi.la /usr/local/apache2/modules
/usr/local/apr/build-1/libtool --mode=install install src/server/mod_wsgi.la /usr/local/apache2/modules/
libtool: install: install src/server/.libs/mod_wsgi.so /usr/local/apache2/modules/mod_wsgi.so
libtool: install: install src/server/.libs/mod_wsgi.lai /usr/local/apache2/modules/mod_wsgi.la
libtool: install: install src/server/.libs/mod_wsgi.a /usr/local/apache2/modules/mod_wsgi.a
libtool: install: chmod 644 /usr/local/apache2/modules/mod_wsgi.a
libtool: install: ranlib /usr/local/apache2/modules/mod_wsgi.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin" ldconfig -n /usr/local/apache2/modules
----------------------------------------------------
Libraries have been installed in:
/usr/local/apache2/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_wsgi.so
zhongw@s1:~/mod_wsgi-4.5.15$
mod_wsgi.so模块已经安装到了apache的modules目录。
 
验证一下mod_wsgi模块
zhongw@s1:/usr/local/apache2/modules$ ldd mod_wsgi.so
linux-gate.so.1 =>  (0xb7735000)
libpython2.7.so.1.0 => /usr/local/lib/libpython2.7.so.1.0 (0xb74ba000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb749d000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb72e1000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb72dc000)
libutil.so.1 => /lib/i386-linux-gnu/libutil.so.1 (0xb72d8000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb7282000)
/lib/ld-linux.so.2 (0x80065000)
 
配置httpd.conf
1.在加载模块的位置增加对mod_wsgi的支持
LoadModule wsgi_module modules/mod_wsgi.so
2.使用apache的htpasswd生成密码文件,Trac使用生成的密码文件来管理用户。
htpasswd -c /opt/trac.htpasswd admin
New password:
Re-type new password:
Adding password for user admin
3.增加Directory和VirtualHost配置
<Directory /opt/trac-deploy/cgi-bin>
WSGIApplicationGroup %{GLOBAL}
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</Directory>
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/opt/trac-deploy/htdocs"
WSGIScriptAlias / /opt/trac-deploy/cgi-bin/trac.wsgi
<LocationMatch "/login">
AuthType Basic
AuthName "Trac"
AuthUserFile /opt/trac.htpasswd
Require valid-user
</LocationMatch>
</VirtualHost>
 
重启动服务后浏览Trac
Ubuntu安装Apache+mod_wsgi+Trac+Python 2.7
 
本文永久更新地址:http://www.linuxdiyf.com/linux/29309.html