Posted in Git, Service

Git | Merge Source With Diff And Patch Between Other Branches

Switch to [branch-A] to apply [branch-B]'s

$) git diff [branch-B] [path] > [patch_name]
$) patch -R -p1 < [patch_name]
Posted in Service, Windows

Reinstall A Program Forcely

If uninstallation by program features in control panel does not work, it is helpful to remove it from register and reinstall the program to uninstall again properly by a well-working reinstalled program.
Remove a program registry file from the below path.

Posted in Server, Service

Project Management Tool For Linux Server

— Pending this post
Install with prebuilt script.
Nothing many to do. Just run the script.

git clone
cd taiga-scripts

It was installed easily. But something to fix is to operate well.

1. Singup fails.
There is a log at ‘logs/gunicorn.stderr.log’.
It’s about BadHeaderError at django/core/mail/ It tells threre is invalid newline(‘\n’) at the header.
Fix it at ‘django/core/mail/’
Add ‘replace(‘\n’, ”)’ like the below.

self._fqdn = socket.getfqdn().replace('\n', '')


2. Opening or downloading attachment is fails.
When the attachment is clicked in Wiki page. It goes the url starting with ‘localhost:8000’.
It should be started with ‘pulic url like ‘’.
Fix it at ‘taiga-back/setting/’.

    "api": {"domain": "localhost:8000", "scheme": "http", "name": "api"},
    "front": {"domain": "localhost:9001", "scheme": "http", "name": "front"},


    "api": {"domain": "domain url", "scheme": "http", "name": "api"},
    "front": {"domain": "domain url", "scheme": "http", "name": "front"},


Wiki page is important for a developer/engineer/programmer. But OrangeScrum doesn’t support it. And Orangescrum is not good at editing past written note or reply.
In conclusion, Orangescrum is too hard to edit a writing on a page. Because the system is for a conversation format.

So Taiga or Redmine is the best for a developer’s requirement.
I used Redmine. It’s so good and powerful, but not pretty. How to visualize is so important.
Finally the next try will be Taiga.

Began deploying Taiga.
Guide Document :

1st, Install dependencies.

sudo apt-get install -y build-essential binutils-doc autoconf flex bison libjpeg-dev
sudo apt-get install -y libfreetype6-dev zlib1g-dev libzmq3-dev libgdbm-dev libncurses5-dev
sudo apt-get install -y automake libtool libffi-dev curl git tmux gettext

2nd, Setup database

sudo apt-get install -y postgresql-9.3 postgresql-contrib-9.3
sudo apt-get install -y postgresql-doc-9.3 postgresql-server-dev-9.3

And configure database…

sudo -u postgres createuser taiga
sudo -u postgres createdb taiga -O taiga

3rd, Setup python environmnet for taiga’s 3rd party libraries

sudo apt-get install -y python3 python3-pip python-dev python3-dev python-pip virtualenvwrapper
sudo apt-get install libxml2-dev libxslt-dev

4th, Install Taiga
Download Source code …

git clone taiga-back
cd taiga-back
git checkout stable

Restart shell for the ‘virtualenv’ command

Create new virtualenv named taiga…

cd taiga-back
mkvirtualenv -p /usr/bin/python3.4 taiga

Install dependencies…

pip install -r requirements.txt

Populate the database with initial basic data…

python migrate --noinput
python loaddata initial_user
python loaddata initial_project_templates
python loaddata initial_role
python compilemessages
python collectstatic --noinput

(This creates a new user admin with password 123123.)

And as final step for setup taiga-back, you should create the intial configuration for proper static/media files resolution and optionally, email sending support:
Put this on ~/taiga-back/settings/

from .common import *

SITES["front"]["scheme"] = "http"
SITES["front"]["domain"] = ""

SECRET_KEY = "theveryultratopsecretkey"

DEBUG = False


# Uncomment and populate with proper connection parameters
# for enable email sending. EMAIL_HOST_USER should end by @domain.tld
#EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
#EMAIL_HOST = "localhost"

# Uncomment and populate with proper connection parameters
# for enable github login/singin.
#GITHUB_API_CLIENT_ID = "yourgithubclientid"
#GITHUB_API_CLIENT_SECRET = "yourgithubclientsecret"

5th, Run Server

workon taiga python runserver

Meet the error

psycopg2.OperationalError: FATAL: role "my account" does not exist

So applied it.

sudo -u postgres createuser "my account"

The warning message appear.

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python migrate' to apply them.

So applied it.

python migrate

Then passed all cases as a ‘OK’ message.
Occured to the message that is ‘ showed by previous command ‘python migrate –noinput’

6th, Frontend Installation
Download Frontend

git clone taiga-front-dist
cd taiga-front-dist 
git checkout stable


cp taiga-front-dist/dist/conf.example.json taiga-front-dist/dist/conf.json

Edit conf.json

"api": "", 
"eventsUrl": "ws://", "debug": "true", 
"publicRegisterEnabled": true, 
"feedbackEnabled": true, 
"privacyPolicyUrl": null, 
"termsOfServiceUrl": null, 
"maxUploadFileSize": null, 
"contribPlugins": [] 

7th, Install process manager ‘Circus’

sudo pip2 install circus
mkdir -p ~/conf/

Initialize ~/conf/circus.ini

check_delay = 5
endpoint = tcp://
pubsub_endpoint = tcp://
statsd = true

working_dir = /home/taiga/taiga-back
cmd = gunicorn
args = -w 3 -t 60 --pythonpath=. -b 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

PATH = /home/taiga/.virtualenvs/taiga/bin:$PATH

Create log directory.

mkdir ~/logs

Setup circus for start on boot putting this on /etc/init/circus.conf

start on filesystem and net-device-up IFACE=lo
stop on runlevel [016]

exec /usr/local/bin/circusd /home/taiga/conf/circus.ini

Start circus

sudo service circus start


8th, ngnix

Install nginx

sudo apt-get install -y nginx

Add specific configuration for taiga-front-dist and taiga-back on /etc/nginx/sites-available/taiga

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_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_redirect off;

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

    # Media files
    location /media {
        alias /home/taiga/taiga-back/media;

Disable the default nginx site (virtualhost)

sudo rm /etc/nginx/sites-enabled/default

Enable the recently created Taiga site (virtualhost)

sudo ln -s /etc/nginx/sites-available/taiga /etc/nginx/sites-enabled/taiga

verify the nginx configuration with the following command to track any error preventing the service to start

sudo nginx -t

Restart nginx

sudo service nginx restart

The sign-up process met an error. I made a several tries, but nothing works.

I found an another way to install Taiga as a prebuilt script.

It will be on the top of this page.

(The post will be updated.)

There are posts about git and ftp for linux server. And a project management tool is necessary for co-working and a project management.
There are some tools such as Slack, Asana, Trello, Redmine, … etc.
Redmine is familiar because it was used at work. It’s good but a new one was selected to try.
There are some requirements.
1. Git Integration : It is to manage software project.
2. Installation On Server : It is for running a own server.

At first, set up apm.

$) sudo /etc/init.d/apache2 restart
* Restarting web server apache2 AH00558: apache2: Could not reliably determine the server’s ed domain name, using Set the ‘ServerName’ directto suppress this message

$) sudo vi /etc/hostname

add ‘ localhost’

$) sudo vi /etc/apache2/apache.conf

add ‘ServerName localhost’

[change apache server root directory]

$) sudo vi /etc/apache2/apachce.conf
$) sudo vi /etc/apache2/sites-available/000-default.conf

[Database Setting]

$) mysql -u root -p
mysql> create database [database_name]
$) mysql -u root -p -h localhost [database_name] < database.sql

[orange scrum configuration]
source site :

[start page image not showing]

orangescrum folder path – Make sure please create a folder called ‘orangescrum’ underneath html folder and copy source code here.


open this file and edit vi /etc/apache2/apache2.conf

Add this below file ( AllowOverride All instead of AllowOverride None)

Options Indexes FollowSymLinks
AllowOverride All
Require all granted

Save the file and restart the Apache service

open this file and edit vi /etc/apache2/sites-available/000-default.conf

Add this below file

ServerName localhost
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/orangescrum

Options Indexes FollowSymLinks
AllowOverride All

Save the file and restart the Apache service

Step:4 enable this module and restart the Apache service

sudo a2enmod rewrite
sudo a2enmod headers

service apache2 restart

Source site :!topic/orangescrum-community-support/8Qmdcq3_5CM

This post will be updated…

Source Site :

Posted in FTP, Server, Service

FTP | vsftpd As A FTP Server In Ubuntu

How to make a ubuntu as a ftp server ?
The answer is vsftpd. It is light and simple.

# Install

$) sudo apt-get install vsftpd

$) sudo vi /etc/vsftpd.conf



# User Permission Management
Add a user to have a permission to access a upper path of its home directory at /etc/vsftpd.chroot_list
# Add a user
A ftp user should have a root:root owner. And create a writable directory having a 777 permission.

$) sudo adduser [user_name]

$) sudo chown root:root /home/[user_name]

$) sudo mkdir /home/[user_name]/[writable_directory_name]

$) sudo chmod 777 /home/[user_name]/[writable_directory_name]


# Set Default Directory

$) sudo vi /etc/vsftpd.conf