首页 > 代码库 > Ubuntu安装Apache + mod_wsgi + Trac + Python 2.7
Ubuntu安装Apache + mod_wsgi + Trac + Python 2.7
概述
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
软件准备
- Ubuntu
zhongw@s1:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.10 Release: 16.10 Codename: yakkety
- 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
- 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
- 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
- Run make命令编译mod_wsgi
如果出现编译问题,参考官方文档解决,常见的是找不到Python.h等问题,官方有详细说明。
- 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