Version 3 (modified by 6 years ago) ( diff ) | ,
---|
Install Trac on Ubuntu proxied by Nginx
Contents
This is a guide on how to install and run a single hosted Trac project from https://trac.edgewall.org with Nginx as the proxy server.
This guide should apply for the following Debian-based Linux distributions:
- Debian 9
- Ubuntu 16.04
- Ubuntu 16.10
- LinuxMint 18.1
- LinuxMint 18.2
Here is a somewhat basic copy paste bash script for this. However, there will be some manual steps, but a find+replace will help a lot. Be aware you might run all of these commands with the sudo -H
.
Notice: Remember to replace the https://trac-hacks.org/svn/fullblogplugin/0.11
with the plugin's latest verion.
apt-get install subversion libapache2-mod-python pypy python python-babel trac python-pip -y pip install --upgrade pip pip install --upgrade Babel pip install --upgrade Trac pip install --upgrade pillow pip install dnspython pip install spambayes pip install oauth2 pip install httplib2 pip install TracTags pip install TracSpamFilter pip install TracVote easy_install --always-unzip https://trac-hacks.org/svn/fullblogplugin/0.11 mkdir -p /var/www/trac/ trac-admin /var/www/trac initenv
Follow the trac-admin guide.
Now lets test the Trac installation before we do anything else:
tracd --port 8000 /var/www/trac
lynx localhost:8000/trac
If it's working, then it's time to setup a admin user and password for the admin account. If it doesn't work, then that is beyond this wiki and you'll need to consult internet resources for a solution.
Run the following to create the admin user:
htpasswd -c /var/www/trac/.htpasswd adminusername trac-admin /var/www/trac/ permission add adminusername TRAC_ADMIN
Replace adminusername
with your desired username.
Next we set the proper user and group permissions on the Trac folder to allow the Nginx/Apache/Trac server to access it:
chown -R UserName:GroupName /var/www/trac/
chmod -R 775 /var/www/trac/
Preparation to Enable Git source
To enable git source browsing via Admin we need another subfolder:
mkdir -p /var/www/trac/git
Systemd startup script
In your /etc/systemd/system/
make this new file:
nano /etc/systemd/system/tracd.service
Then add the following to your trac.ini
file:
[Unit] Description = TrackD Daemon After = network.target [Service] ExecStart = /usr/local/bin/tracd -p 3050 --protocol=http --basic-auth="*,/var/www/trac/.htpasswd,Restricted" -s /var/www/trac Type = simple User = UserName Group = GroupName [Install] WantedBy = multi-user.target
Nginx configurations
Now it's time to do the NginX configurations.
First we have to make a reverse proxy to the Trac daemon we have made in Systemd startup script.
In the /etc/nginx/nginx.conf
we'll have to add a upstream for our reverse_proxy to Trac:
upstream live_trachosts_com { server 127.0.0.1:3050; }
Now make the site.conf file in your preferred location, which by default would be /etc/nginx/conf.d/
, for other it would be in /etc/nginx/sites-available
but we go whit the default nano /etc/nginx/conf.d/site.conf
:
server { listen 123.123.123.123:80; server_name trac.local; charset utf8; access_log /var/log/nginx/trac.access.log; error_log /var/log/nginx/trac.debug.log; location / { proxy_pass http://live_trachosts_com; proxy_set_header Host $host; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } }
Apache
If you are using Apache as the webserver, then run the following:
a2enmod python nano /etc/apache2/sites-available/trac.conf
It should have the following content:
<VirtualHost 123.123.123.123:80> ServerName trac.local <Location /> SetHandler mod_python PythonInterpreter main_interpreter PythonHandler trac.web.modpython_frontend PythonOption TracEnv /var/www/trac PythonOption TracEnvParentDir /var/www/trac PythonOption TracUriRoot / PythonOption TracEnv /var/www/trac # PythonOption TracEnvIndexTemplate /var/www/trac/templates/index-template.html PythonOption TracLocale en_US.UTF8 PythonOption PYTHON_EGG_CACHE /tmp Order allow,deny Allow from all </Location> <Location /login> AuthType Basic AuthName "myproject" AuthUserFile /var/www/trac/.htpasswd Require valid-user </Location> </VirtualHost>
To enable the Trac site run a2ensite trac.conf
.
Find/Replace
The following paths is to be replaced with your preferences:
/var/www/trac
:/full/path/to/trac
adminusername
:YourUserName
to be used as the track adminUserName
: The username for which trac daemon runs as ex.Your login UserName
GroupName
: The group name for which trac daemon runs as exwww-data
trac.local
:full.domain.tld
live_trachosts_com
: to what suits your needs123.123.123.123
: if you are running both NginX and Apache on port 80/443, then you'll need to set the IP, but if you only run Nginx or Apache you can delete the IP address to listen on all addresses
Versions
In this tutorial I have used the following software versions:
$ uname -a Linux hostname 4.11.0-14-generic #20~16.04.1-Ubuntu SMP Wed Aug 9 09:06:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux $ tracd --version tracd 1.2.2 $ nginx -v nginx version: nginx/1.13.6
Which list
A complete HOWTO copy/paste guide to make Nginx running as "Front-end" of Trac.