[PYTHON] J'ai installé Taiga.IO sur CentOS7 (j'ai fait un script pendant que j'y étais)

Qu'est-ce que Taiga.IO?

Outil de gestion de projet agile Compatible avec Kanban et Scrum Interface utilisateur simple et belle https://taiga.io/ http://qiita.com/kgmyshin/items/2ac2ad7e6be8425ec60e

tutoriel youtube https://www.youtube.com/playlist?list=PLgsasMWN5JssgHHHHI50xkz_kzXg-dElt

référence

--Officiel http://taigaio.github.io/taiga-doc/dist/setup-production.html

--CentOS6, pionnier de Fedora 21+ https://gist.github.com/ss-abramchuk/fd77fe4aa823d92c15e9 https://gist.github.com/ssplatt/42393b7d9c876a027aaa

Ce que vous avez installé

Mouvement vraiment minimal

scénario

https://gist.github.com/skliber/50e7f389407d3de25b0f Il y a beaucoup de magie noire, mais j'ai pu le faire pour le moment

Comment utiliser

  1. Remplacez la chaîne YOURIP dans le script par votre propre adresse IP sed -i -e 's/YOURIP/192.168.x.x/g' setup-taiga-centos.sh

  2. Devenez root et exécutez avec la commande source source setup-taiga-centos.sh

Commentaire

  1. yum Mettez tout ce dont vous avez besoin ensemble Ajouter un référentiel epel pour inclure libzmq
yum install -y epel-release

yum install -y gcc autoconf flex bison libjpeg-turbo-devel
yum install -y freetype-devel zlib-devel zeromq3-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++
  1. PostgreSQL 9.5 Après avoir installé PostgreSQL 9.5, définissez les paramètres initiaux de db et démarrez-le.
wget http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm
rpm -ivh pgdg-centos95-9.5-3.noarch.rpm
yum install -y postgresql95-server postgresql95-devel postgresql95-contrib
export PATH=$PATH:/usr/pgsql-9.5/bin
postgresql95-setup initdb
systemctl start postgresql-9.5.service
  1. Python 3.5.2 Taiga.IO nécessite Python 3.4 ou supérieur, mais il n'est pas dans le référentiel CentOS, donc installez la dernière version à partir des sources Cette fois, j'ai défini la destination d'installation sur / opt / python3.5
wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz
tar xvf Python-3.5.2.tar.xz
cd Python-3.5.2/
./configure --prefix=/opt/python3.5
make
make install
export PATH=$PATH:/opt/python3.5/bin

4. Paramètres de base de données pour PostgreSQL Taiga.IO

Allez à un endroit où l'utilisateur postgres peut exécuter des commandes avec la magie noire cd / home, Créer une base de données avec des utilisateurs

cd /home su postgres -c "createuser taiga" su postgres -c "createdb taiga -O taiga"

5. Installation de virtualenv et virtualenvwrapper

Ceux-ci semblent être ceux qui créent et gèrent l'environnement unique de Python http://qiita.com/caad1229/items/325ca5c8ad198b0ebce7 http://qiita.com/_rdtr/items/5f3a9a9e2cb5a24f284e

Si la commande mkvirtualenv réussit, elle entrera automatiquement dans l'environnement unique. J'aurai des ennuis plus tard, alors désactivez-le ~~ Quoi? Que signifie créer un environnement? ~~ Je ne peux pas t'entendre

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
  1. taiga-back Ajouter d'abord la taïga de l'utilisateur Le répertoire principal de Taiga.IO est développé sous / home / taiga /

découvrez la version stable de taiga-back

adduser taiga
cd /home/taiga
git clone https://github.com/taigaio/taiga-back.git taiga-back
cd taiga-back/
git checkout stable

6.1. requirements.txt Le fichier requirements.txt de taiga-back a une adresse git balisée, Apparemment, cette balise n'existe pas sur github pour le moment et essayer de l'installer échoue tout simplement Alors, ajoutez l'adresse qui réussit avec la commande sed avant d'installer

sed -i -e '34a git+https://github.com/Xof/django-pglocks.git' requirements.txt

pip3.5 install -r requirements.txt

6.2. Corriger le propriétaire + correction mineure du code

Puisque le répertoire / home / taiga / taiga-back / est créé à la racine, Fixez le propriétaire sous le répertoire personnel manage.py doit être exécuté par l'utilisateur taiga, vous ne pouvez donc pas l'utiliser sans le réparer

De plus, CentOS 7 a Python 2 installé par défaut, Si vous démarrez manage.py tel quel, cela démarrera avec Python 2 et ce n'est pas pratique Modifiez la commande sed pour utiliser Python 3.5

chown -R taiga:taiga /home/taiga/

sed -i -e '1a #!/opt/python3.5/bin/python3.5' -e '1d' manage.py

7. Configuration initiale du taïga-back

Si vous définissez la partie YOURIP sur "localhost" ou "127.0.0.1", Veuillez noter que vous ne pouvez y accéder que de vous-même Il semble bon de définir un nom de domaine, une adresse IP globale ou une adresse IP privée Référence: https://github.com/taigaio/taiga-scripts/issues/10

su taiga -c "python3.5 manage.py migrate --noinput"
su taiga -c "python3.5 manage.py loaddata initial_user"
su taiga -c "python3.5 manage.py loaddata initial_project_templates"
su taiga -c "python3.5 manage.py loaddata initial_role"
su taiga -c "python3.5 manage.py compilemessages"
su taiga -c "python3.5 manage.py collectstatic --noinput"

cat > /home/taiga/taiga-back/settings/local.py << EOF
from .development import *
from .common import *

MEDIA_URL = "http://YOURIP/media/"
STATIC_URL = "http://YOURIP/static/"
ADMIN_MEDIA_PREFIX = "http://YOURIP/static/admin/"
SITES["front"]["scheme"] = "http"
SITES["front"]["domain"] = "YOURIP"

SECRET_KEY = "theveryultratopsecretkey"

DEBUG = False
TEMPLATE_DEBUG = False
PUBLIC_REGISTER_ENABLED = True

DEFAULT_FROM_EMAIL = "[email protected]"
SERVER_EMAIL = DEFAULT_FROM_EMAIL
EOF
  1. taiga-front Besoin de créer json pour la configuration Définissez votre propre adresse IP dans conf.example.json et copiez-la telle quelle
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
  1. Circus Installer Circus avec pip
cd /home/taiga
pip3.5 install circus

mkdir -p /home/taiga/conf
cat > /home/taiga/conf/circus.ini << EOF
[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
EOF

mkdir -p /home/taiga/logs
touch /home/taiga/logs/gunicorn.stdout.log
touch /home/taiga/logs/gunicorn.stderr.log

10. Créez un fichier de configuration Circus pour Systemd

Circus ne crée pas de fichier de configuration pour Systemd Je ne peux pas m'en empêcher, alors je le fais moi-même

cat > /usr/lib/systemd/system/circus.service << EOF
[Unit]
Description=circus

[Service]
ExecStart=/usr/local/bin/circusd /home/taiga/conf/circus.ini
EOF
ln -s '/usr/lib/systemd/system/circus.service' '/etc/systemd/system/circus.service'

11. Commencer le cirque

Commencez en fonction du fichier de paramètres créé précédemment

ln -s /root/.virtualenvs/taiga/bin/circusd /usr/local/bin/circusd
systemctl start circus.service
  1. nginx Ajouter un référentiel pour en accueillir de nouveaux Définissez les paramètres pour Taiga.IO et démarrez
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
EOF
yum install -y nginx

cat > /etc/nginx/conf.d/taiga.conf << 'EOF'
server {
    listen 80 default_server;
    server_name _;

    large_client_header_buffers 4 32k;
    client_max_body_size 50M;
    charset utf-8;

    access_log /home/taiga/logs/nginx.access.log;
    error_log /home/taiga/logs/nginx.error.log;

    # Frontend
    location / {
        root /home/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://YOURIP: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://YOURIP:8001$request_uri;
        proxy_redirect off;
    }

    # Static files
    location /static {
        alias /home/taiga/taiga-back/static;
    }

    # Media files
    location /media {
        alias /home/taiga/taiga-back/media;
    }
}
EOF
systemctl restart nginx

13. Magie noire

Magie noire je ne sais pas combien de fois Corrigez le propriétaire de / home / taiga / et donnez l'autorisation d'exécution Nginx renvoie une erreur Permission refusée 500 sans autorisation d'exécution

chown -R taiga:taiga /home/taiga/ chmod o+x /home/taiga/

14. Lancez le backend Taiga.IO

Lancer en arrière-plan de l'utilisateur taiga Il semble qu'il ne soit accessible qu'à partir de la machine de développement sans 0.0.0.0:8000 http://masasuzu.hatenablog.jp/entry/20100731/1280588504

su taiga -c "python3.5 /home/taiga/taiga-back/manage.py runserver 0.0.0.0:8000 &"

fin. Accès avec navigateur

Si la dernière commande réussit, elle devrait commencer à écouter sur le port 8000 Puisque nginx attend sur le port 80, vous pouvez l'utiliser en accédant à votre adresse IP telle quelle Nom d'utilisateur initial: admin Mot de passe: 123123

A part: Pourquoi CentOS, Ubuntu n'a pas fonctionné?

En fait, si vous cliquez sur le script officiellement préparé sur Ubuntu, vous pouvez l'utiliser immédiatement Mais j'ai tellement vécu avec CentOS que je n'avais pas envie d'utiliser Ubuntu Je suis resté coincé pendant environ 3 jours et j'ai commencé à être frustré, mais j'ai réussi à l'obtenir, donc je vais bien

Recommended Posts

J'ai installé Taiga.IO sur CentOS7 (j'ai fait un script pendant que j'y étais)
J'ai créé un script de traduction basé sur CUI (2)
J'ai créé un script de traduction basé sur CUI
J'ai essayé d'installer Kivy dans un environnement Mac
J'ai fait un script pour afficher des pictogrammes
〇✕ J'ai fait un jeu
J'ai fait un script pour mettre un extrait dans README.md
J'ai créé un environnement Python3 sur Ubuntu avec direnv.
J'ai installé Ubuntu sur une mémoire USB sur un PC à double démarrage
J'ai installé la bibliothèque de machine learning automatique auto-sklearn sur centos7
J'ai fait un modèle VGG16 en utilisant TensorFlow (en chemin)
J'ai fait un générateur de réseau neuronal qui fonctionne sur FPGA
J'ai fait un script pour dire bonjour à mon Koshien
J'ai installé tensorRT sur Ubuntu 18.04
J'ai installé ROS sur Ubuntu 18.04
J'ai fait un texte Python
J'ai fait un robot discord
J'étais un peu accro à l'installation de Python3.3 + mod_wsgi3.4 sur Sakura VPS (CentOS), donc une note de révision
Une note à laquelle j'étais accro lors de l'émission d'un bip sous Linux
Je viens d'écrire un script pour construire Android sur une autre machine
J'ai créé un site d'apprentissage C ++
J'ai fait un Line-bot avec Python!
J'ai fait un wikipedia gacha bot
J'ai fait une loterie avec Python.
Créer un environnement python dans centos
Créer un environnement python3 sur CentOS7
J'ai créé un démon avec Python
J'ai essayé d'installer Linux sur mon Mac
Une histoire à laquelle j'étais accro à essayer d'installer LightFM sur Amazon Linux
J'ai fait une minuterie de cuisine à afficher sur la barre d'état!
J'ai créé une extension Chrome qui affiche un graphique sur la page Amedas
J'ai créé un script en python pour convertir des fichiers .md au format Scrapbox
J'ai fait une webAPI! Construire un environnement à partir de Django Rest Framework 1 avec EC2
Tout en étudiant les pandas, j'ai fait une étude gratuite sur la fin de Corona et si le verrouillage était significatif.
[Python] J'ai créé un script qui coupe et colle automatiquement les fichiers du PC local sur un SSD externe.