设为首页 收藏本站
查看: 648|回复: 0

[经验分享] Apache 2.2.9 / SSL, Subversion 1.5.2, Trac 0.11.1 on openSUSE 11.0

[复制链接]

尚未签到

发表于 2017-1-15 06:27:08 | 显示全部楼层 |阅读模式
  This article describes the installation of a subversion Repository server including Trac Project Managment on a openSUSE 11.0 Server.

  What is Trac?


  • Trac is an enhanced wiki and issue tracking system for software development projects.
  • An integrated system for managing software projects.
  • An enhanced wiki.
  • A flexible web-based issue tracker.
  • An interface to the Subversion revision control system.
  Have a look at their homepage:Trac Project Managment.

  Normally any linux distribution comes with precompiled packages. But
if we want to use the Trac Project Managment we must compile the whole
thing ourself.

System Description:
  Standard openSUSE 11.0 Server, runlevel3.

No graphical system is required because it is a Repository server and nothing more ;-)

<!-- ------------------------------------------------------------------------- //-->
Systemrequirements:
  Install the follwing packages via openSUSE "YaST"


  • openssl
  • openssl-devel
  • autconf
  • libtool
  • flex
  • bison
  • libapr0
  • gcc-c++
  • gcc, make
  • glibc-devel
  • ctags
  • lzo, lzo-devel
  • gdbm, gdbm-devel
  • libxml2-devel
  • sqlite, sqlite-devel
  • python, python-devel, python-doc, python-setuptools, python-XML
<!-- ------------------------------------------------------------------------- //-->
Now we start:


<!-- ------------------------------------------------------------------------- //-->
Download, compile and install Apache 2.2.9

$>cd /usr/local/src
$>wget http://gd.tuwien.ac.at/infosys/servers/http/apache/dist/httpd/httpd-2.2.9.tar.gz
...
$>tar xzvf httpd-2.2.9.tar.gz
$>cd httpd-2.2.9
$>./configure --prefix=/usr/local/apache2 --enable-mods-shared="all ssl dav_lock" --enable-maintainer-mode --enable-dav --enable-dav-fs --enable-dav-lock --enable-cgi --enable-deflate --enable-auth-digest --enable-rewrite --enable-actions --enable-so --enable-ssl=/usr/ssl
...
$>make
$>make install

<!-- ------------------------------------------------------------------------- //-->
Now we generate an SSL certificate for the Webserver:

$>cd /usr/local/apache2/conf
$>mkdir ssl.crt ssl.key
$>openssl req -new -x509 -days 3650 -keyout ./ssl.key/server.key -out ./ssl.crt/server.crt -subj '/CN=host.domain Certificate'
...
$>cp ssl.key/server.key ssl.key/server.key.org
$>openssl rsa -in ssl.key/server.key.org -out ssl.key/server.key
...
$>chmod 400 ssl.key/server.key
$>chmod 400 ssl.key/server.key.org

<!-- ------------------------------------------------------------------------- //-->
Download, compile and install mod_python-3.3.1

$>cd /usr/local/src
$>wget http://mirror.deri.at/apache/httpd/modpython/mod_python-3.3.1.tgz
...
$>tar xzvf mod_python-3.3.1.tar.gz
$>cd mod_python-3.3.1
$>./configure --with-apxs=/usr/local/apache2/bin/apxs
...
$>make
$>make install

<!-- ------------------------------------------------------------------------- //-->
Download, compile and install Ruby 1.8.7

$>cd /usr/local/src
$>wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz
...
$>tar xzvf ruby-1.8.7.tar.gz
$>cd ruby-1.8.7
$>./configure
...
$>make
$>make install

<!-- ------------------------------------------------------------------------- //-->
Download, compile and install Swig 1.3.36

$>cd /usr/local/src
$>wget http://downloads.sourceforge.net/swig/swig-1.3.36.tar.gz?modtime=1214350580&big_mirror=0
...
$>tar xzvf swig-1.3.36.tar.gz
$>cd swig-1.3.36
$>./configure --with-python=/usr/bin/python --with-perl=/usr/bin/perl --with-ruby=/usr/local/bin/ruby --without-php4
...
$>make
$>make check
$>make install

<!-- ------------------------------------------------------------------------- //-->
Download, compile and install Neon 0.28.3

$>cd /usr/local/src
$>wget http://www.webdav.org/neon/neon-0.28.3.tar.gz
...
$>tar xzvf neon-0.28.3.tar.gz
$>cd neon-0.28.3
$>./configure --with-expat --with-libxml2 --with-ssl --with-libs=/usr/ssl --enable-shared=yes
...
$>make
$>make install

<!-- ------------------------------------------------------------------------- //-->
Download, compile and install Pysqlite 2.4.1

$>cd /usr/local/src
$>wget http://initd.org/pub/software/pysqlite/releases/2.4/2.4.1/pysqlite-2.4.1.tar.gz
...
$>tar xzvf pysqlite-2.4.1.tar.gz
$>cd pysqlite-2.4.1
$>python setup.py build
$>python setup.py install

<!-- ------------------------------------------------------------------------- //-->
Download, compile and install Subversion 1.5.2

$>cd /usr/local/src
$>wget http://subversion.tigris.org/downloads/subversion-1.5.2.tar.gz
...
$>tar xzvf subversion-1.5.2.tar.gz
$>cd subversion-1.5.2
$>rm -rf /usr/local/lib/libsvn*
$>rm -rf /usr/local/lib/svn-python/*
$>rm -rf /usr/local/lib/libexpat* /lib/libexpat* /usr/lib/libexpat*
$>sh ./autogen.sh
$>./configure --with-ssl=/usr/ssl --with-neon=/usr/local --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-apxs=/usr/local/apache2/bin/apxs --with-zlib=/usr/lib --with-swig=/usr/local/bin/swig  PYTHON2=/usr/bin/python PERL=/usr/bin/perl --without-jdk --without-jikes --without-junit
...
$>make
$>make install
$>make swig-py
$>make install-swig-py
$>make swig-pl
$>make install-swig-pl
$>echo /usr/local/lib/svn-python > /usr/lib/python/site-packages/svn-python.pth

<!-- ------------------------------------------------------------------------- //-->
Download, compile and install Clearsilver 0.10.5

$>cd /usr/local/src
$>wget http://www.clearsilver.net/downloads/clearsilver-0.10.5.tar.gz
...
$>tar xzvf clearsilver-0.10.5
$>cd clearsilver-0.10.5
$>vi scripts/document.py (change the first line to "/usr/bin/python" instead of /bin/env python)
...
$>./configure --with-apache=/usr/local/apache2 --with-python=/usr/bin/python  --with-ruby=/usr/local/bin/ruby --with-perl=/usr/bin/perl --disable-csharp  --disable-java --enable-gettext
...
$>make
$>make install
$>cd python
$>make install #(That should install the Python bindings for ClearSilver)

<!-- ------------------------------------------------------------------------- //-->
Download, compile and install Docutils 0.5

$>cd /usr/local/src
$>wget http://prdownloads.sourceforge.net/docutils/docutils-0.5.tar.gz?download
...
$>tar xzvf docutils-0.5.tgz
$>cd docutils-0.5
$>python setup.py build
$>python setup.py install
$>cd /tools
$>./buildhtml.py ../

<!-- ------------------------------------------------------------------------- //-->
Download, compile and install Trac 0.11.1

$>cd /usr/local/src
$>wget http://ftp.edgewall.com/pub/trac/Trac-0.11.1.tar.gz
...
$>tar xzvf  Trac-0.11.1.tar.gz
$>cd Trac-0.11.1.tar.gz
$>python ./setup.py install
...
$>cd /usr/local/apache2/htdocs
$>ln -s /usr/local/share/trac/htdocs trac (we link the trac stuff to apache2 htdocs)

<!-- ------------------------------------------------------------------------- //-->
This will byte-compile the python source code and install it in the
site-packages directory of your python installation. The directories cgi-bin, templates, htdocs, wiki-default are all copied to $prefix/share/trac.
The script will also install the trac-admin command-line tool, used to create
and maintain project environments. "trac-admin" is the command center of Trac.
<!-- ------------------------------------------------------------------------- //-->
Create "user" and "group" for Subversion:

$>groupadd svn-grp
$>useradd svn -G svn-grp -s /bin/bash
$>passwd svn  (some password for user svn)

<!-- ------------------------------------------------------------------------- //-->
Now we create a Subversion Repository:

$>mkdir /data
$>mkdir /data/repos-new
$>chown -R svn.svn-grp /data/*
...
$>now login as user "svn" !!! (you are now user svn) !!!
$>svnadmin create /data/repos-new/MyProject --fs-type fsfs
$>svn mkdir file:///data/repos-new/MyProject/trunk -m "trunk"
...
$>su root (type password for root, you are now user root) !!!

<!-- ------------------------------------------------------------------------- //-->
Create a Trac Enviorment from the Repository:

$>trac-admin /data/repos-new/MyProjectTrac initenv
change: Project Name [My Project]> to MyProject,
change: Path to Repository [/var/svn/test] to /data/repos-new/MyProject
$>chgrp -R svn-grp /data/repos-new/
$>chmod -R 770 /data/repos-new/

<!-- ------------------------------------------------------------------------- //-->
Now enable the Project Enviorment and start Apache2:

Change and add the following lines to your configuration:
$>vi /usr/local/apache2/conf/httpd.conf
  (change the Apache user to "svn")
  (change the Apache group to "svn-grp")
...
add the following lines to point to your project:
------------------
SetEnv PYTHON_EGG_CACHE /home/svn
ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi
<Location "/trac">
SetEnv TRAC_ENV "/data/repos-new/MyProject"
</Location>
------------------
  (save the configuration and start Apache2 like)
$>/usr/local/apache2/bin/apachectl start

Open your webbrowser and type "http://yourip-or-domain/trac".
If everything is perfect you can see the welcome message. Also have a look at the
"Browse Source" button, there you can see the added subversion "trunk" directory.
<!-- ------------------------------------------------------------------------- //-->
Authentication for user login:

Change and add the following lines to your configuration:
$>cd /data/repos-new
$>touch svn-auth-file
$>chown svn.svn-grp svn-auth-file
$>chmod 440 svn-auth-file
...
add all user who should have access to the Repository via:
$>htpasswd2 -cb /data/repos-new/svn-auth-file user password

and change the Location settings in httpd.conf:
------------------
<Location /trac>
  DAV svn
  SVNPath       /data/repos-new/MyProject
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /data/repos-new/svn-auth-file
  Require valid-user
</Location>
------------------
  (save the configuration and restart Apache2)
$>/usr/local/apache2/bin/apachectl stop
$>/usr/local/apache2/bin/apachectl startssl

Don`t forget to change "ssl.conf" and "httpd.conf" if you use ssl!
sample ssl.conf:

SSLRandomSeed startup builtin
SSLRandomSeed connect builtin

<IfDefine SSL>
Listen 443

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl

SSLPassPhraseDialog  builtin
SSLSessionCache         dbm:/usr/local/apache2/logs/ssl_scache
SSLSessionCacheTimeout  300
SSLMutex  file:/usr/local/apache2/logs/ssl_mutex

<VirtualHost _default_:443>
DocumentRoot "/usr/local/apache2/htdocs"
ServerName server.domain:443
ServerAdmin email@domain.com
ErrorLog /usr/local/apache2/logs/error_log
TransferLog /usr/local/apache2/logs/access_log

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key

<FilesMatch "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/apache2/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog /usr/local/apache2/logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    RewriteEngine on
    RewriteCond   %{REQUEST_METHOD} ^(TRACE|TRACK)
    RewriteRule   .* - [F]
</VirtualHost>

</IfDefine>

<!-- ------------------------------------------------------------------------- //-->
If you get fault messages from Apache2?

* If you get the following:
Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server...

Add to /usr/local/apache2/httpd.conf "LoadModule" lines:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
. And add "/usr/local/lib" to /etc/ld.so.conf and then run /etc/ldconfig.
...
* If you get the following:

ExtractionError: Can't extract file(s) to egg cache\n\nThe following error
occurred while trying to extract file(s) to the Python egg\ncache:\n\n  
[Errno 13] Permission denied: '/root/.python-eggs'\n\nThe Python egg cache
directory is currently set to:\n\n  /root/.python-eggs\n\nPerhaps your
account does not have write access to this directory?  
You can\nchange the cache directory by setting the PYTHON_EGG_CACHE environment\nvariable
to point to an accessible directory.\n.

Add following line to /usr/local/apache2/bin/envvars:
export PYTHON_EGG_CACHE=/home/svn


And start Apache2 now.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-328451-1-1.html 上篇帖子: {{js跨域请求解决方案续}}Cross-domain XMLHttpRequest(使用Apache mod_rewrite实现跨域请求) 下篇帖子: 解决Socket TIME_WAIT造成的服务器无法访问,Apache的KeepAlive和TCP/IP的TIME
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表