作者:waringid
一、简介
Taiga 是一个免费开源,而且功能非常强大的项目管理平台,用于初创企业和敏捷开发团队。提供一个简单、漂亮的项目管理工具。Taiga 采用 Python Django 框架开发,前端基于 AngularJS 实现。
二、更新必要的组件及系统版本
安装必要的组件并更新系统
yum install -y gcc autoconf flex bison libjpeg-turbo-devel yum install -y freetype-devel zlib-devel zeromq-devel gdbm-devel ncurses-devel yum install -y automake libtool libffi-devel curl git tmux yum install -y libxml2-devel libxslt-devel yum install -y wget openssl-devel gcc-c++
安装PostgreSQL 9.5
wget http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm rpm -ivh pgdg-centos95-9.5-2.noarch.rpm yum install -y postgresql95-server postgresql95-devel postgresql95-contrib export PATH=$PATH:/usr/pgsql-9.5/bin
修改验证方式为md5
vim /var/lib/pgsql/9.5/data/pg_hba.conf
postgresql95-setup initdb systemctl start postgresql-9.5.service
安装Python 3.5.1
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz tar xvf Python-3.5.1.tar.xz cd Python-3.5.1/ ./configure --prefix=/opt/python3.5 make make install export PATH=$PATH:/opt/python3.5/bin
三、配置数据库及用户环境
新建用户及数据库
useradd taiga sudo -u postgres psql
CREATE DATABASE taiga; CREATE USER taiga WITH PASSWORD 'J5brHrAXFLQSif0K'; GRANT ALL PRIVILEGES ON DATABASE taiga TO taiga; \q
配置pip环境
pip3.5 install virtualenv virtualenvwrapper
VIRTUALENVWRAPPER_PYTHON=/opt/python3.5/bin/python3.5
source /opt/python3.5/bin/virtualenvwrapper.sh
mkvirtualenv -p /opt/python3.5/bin/python3.5 taiga
deactivate
四、配置taiga-back
下载内容
cd /home/taiga git clone https://github.com/taigaio/taiga-back.git taiga-back cd taiga-back/ git checkout stable
配置python组件
sed -i -e '34s/^/#/ig' requirements.txt sed -i -e '34a git+https://github.com/Xof/django-pglocks.git' requirements.txt pip3.5 install -r requirements.txt chown -R taiga:taiga /home/taiga/ sed -i -e '1a #!/opt/python3.5/bin/python3.5' -e '1d' manage.py
初始化启动配置
su taiga cd /home/taiga/taiga-back python3.5 manage.py migrate --noinput python3.5 manage.py loaddata initial_user python3.5 manage.py loaddata initial_project_templates python3.5 manage.py loaddata initial_role python3.5 manage.py compilemessages python3.5 manage.py collectstatic –noinput
配置文件设定
vim /home/taiga/taiga-back/settings/local.py
from .development import * from .common import * DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'taiga', 'USER': 'taiga', 'PASSWORD': 'youpassword', 'HOST': '', 'PORT': '', } } MEDIA_URL = "http://192.168.5.86/media/" STATIC_URL = "http://192.168.5.86/static/" ADMIN_MEDIA_PREFIX = "http://192.168.5.86/static/admin/" SITES["front"]["scheme"] = "http" SITES["front"]["domain"] = "192.168.5.86" SECRET_KEY = "2k_DRTqCjy$&-Rul^C23Brf=DY80DLZCl7VF*xU$*ert7-6VccT"
测试启动状态
python3.5 manage.py runserver 0.0.0.0:8000 --insecure
安装异步消息交互组件
cd /home/taiga/ git clone https://github.com/zeromq/libzmq.git libzmq cd libzmq/ ./autogen.sh ./configure --without-libsodium make make install
安装进程和socket监控工具circus
cd /home/taiga git clone https://github.com/circus-tent/circus.git circus cd /home/taiga/circus/ python3.5 setup.py install ln -s /opt/python3.5/bin/circusd /usr/local/bin/circusd ln -s /opt/python3.5/bin/gunicorn /usr/local/bin/gunicorn
配置circus
mkdir -p /home/taiga/conf
vim circus.ini
[circus] check_delay = 5 endpoint = tcp://127.0.0.1:5555 pubsub_endpoint = tcp://127.0.0.1:5556 statsd = true [watcher:taiga] working_dir = /home/taiga/taiga-back cmd = gunicorn args = -w 3 -t 60 --pythonpath=. -b 127.0.0.1:8001 taiga.wsgi uid = taiga numprocesses = 1 autostart = true send_hup = true stdout_stream.class = FileStream stdout_stream.filename = /home/taiga/logs/gunicorn.stdout.log stdout_stream.max_bytes = 10485760 stdout_stream.backup_count = 4 stderr_stream.class = FileStream stderr_stream.filename = /home/taiga/logs/gunicorn.stderr.log stderr_stream.max_bytes = 10485760 stderr_stream.backup_count = 4 [env:taiga] PATH = /home/taiga/.virtualenvs/taiga/bin:$PATH TERM=rxvt-256color SHELL=/bin/bash USER=taiga LANG=en_US.UTF-8 HOME=/home/taiga PYTHONPATH=/home/taiga/.virtualenvs/taiga/lib/python3.5/site-packages
vim /usr/lib/systemd/system/circus.service
[Unit] Description=circus [Service] ExecStart=/usr/local/bin/circusd /home/taiga/conf/circus.ini
ln -s '/usr/lib/systemd/system/circus.service' '/etc/systemd/system/circus.service'
配置日志内容
mkdir -p /home/taiga/logs
touch /home/taiga/logs/gunicorn.stdout.log
touch /home/taiga/logs/gunicorn.stderr.log
五、配置taiga-front
安装前端
cd /home/taiga git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist cd taiga-front-dist/ git checkout stable cd dist/ sed -e 's/localhost/YOURIP/' conf.example.json > conf.json systemctl start circus.service
安装nginx
vim /etc/yum.repos.d/nginx.repo
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
yum install -y nginx
配置nginx
vim /etc/nginx/conf.d/taiga.conf
server { listen 80 default_server; server_name _; large_client_header_buffers 4 32k; client_max_body_size 50M; charset utf-8; access_log /opt/taiga/logs/nginx.access.log; error_log /opt/taiga/logs/nginx.error.log; # Frontend location / { root /opt/taiga/taiga-front-dist/dist/; try_files $uri $uri/ /index.html; } # Backend location /api { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://192.168.5.86:8001/api; proxy_redirect off; } # Django admin access (/admin/) location /admin { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://192.168.5.86:8001$request_uri; proxy_redirect off; } # Static files location /static { alias /opt/taiga/taiga-back/static; } # Media files location /media { alias /opt/taiga/taiga-back/media; } }
六、启动测试
启动taiga
su taiga -c "python3.5 /home/taiga/taiga-back/manage.py runserver 0.0.0.0:8000 &"
启动nginx
chown -R taiga:taiga /home/taiga/ chmod o+x /home/taiga/ systemctl restart nginx