Support #814
Updated by Daniel Curtis over 8 years ago
{{>toc}} This is a guide on installing GitLab 8.5 with continuous integration on FreeBSD 10. h2. Prepare the Environment * Make sure the system is up to date: <pre> pkg update && pkg upgrade </pre> h2. Install PostgreSQL * Initialize, start, and enable postgresql at boot: <pre> echo 'postgresql_enable="YES"' >> /etc/rc.conf service postgresql initdb service postgresql start </pre> * Log in to postgresql user account <pre> su - pgsql </pre> * Connect to postgresql database <pre> psql -d template1 </pre> #* Create a user for GitLab: <pre> CREATE USER git WITH PASSWORD 'SuperSecretPassword' CREATEDB SUPERUSER; CREATEDB; </pre> #* Create the GitLab production database & grant all privileges on database <pre> CREATE DATABASE gitlabhq_production OWNER git encoding='UTF8'; </pre> #* Quit the database session <pre> \q exit </pre> h2. Install Redis * Install redis: <pre> pkg install redis </pre> * Back up the original Redis config file: <pre> cp /usr/local/etc/redis.conf /usr/local/etc/redis.conf.orig </pre> * Disable Redis listening on TCP by setting 'port' to 0 <pre> sed -i '' -e 's/^port .*/port 0/' /usr/local/etc/redis.conf </pre> * Enable Redis socket <pre> echo 'unixsocket /usr/local/var/run/redis/redis.sock' >> /usr/local/etc/redis.conf </pre> * Grant permission to the socket to all members of the redis group <pre> echo 'unixsocketperm 770' >> /usr/local/etc/redis.conf </pre> * Create the directory which contains the socket <pre> mkdir -p /usr/local/var/run/redis chown redis:redis /usr/local/var/run/redis chmod 755 /usr/local/var/run/redis </pre> * Start and enable redis at boot: <pre> echo 'redis_enable="YES"' >> /etc/rc.conf service redis start </pre> h2. Install GitLab 8 * Install gitlab: <pre> pkg install gitlab </pre> * Go to GitLab installation folder <pre> cd /usr/local/www/gitlab </pre> * Update GitLab config file, follow the directions at the top of the file <pre> vi config/gitlab.yml </pre> * Find number of cores <pre> sysctl hw.ncpu </pre> * Enable cluster mode if you expect to have a high load instance, set the number of workers to at least the number of cores: <pre> vi config/unicorn.rb </pre> * Configure Git global settings for git user: <pre> git config --global core.autocrlf input </pre> * Disable 'git gc --auto' because GitLab already runs 'git gc' when needed: <pre> git config --global gc.auto 0 </pre> * Start and enable gitlab at boot: <pre> echo 'gitlab_enable="YES"' >> /etc/rc.conf service gitlab start </pre> * Configure GitLab DB settings <pre> vi config/database.yml </pre> * Initialize database and activate advanced features: <pre> rake gitlab:setup RAILS_ENV=production </pre> *# Type *yes* to create the database tables. *# When done you see _Administrator '_Administrator account created:_ created:_' * Check if GitLab and its environment are configured correctly: <pre> rake gitlab:env:info RAILS_ENV=production </pre> * Compile Assets <pre> rake assets:precompile RAILS_ENV=production </pre> * Start and enable gitlab at boot: GitLab <pre> echo 'gitlab_enable="YES"' >> /etc/rc.conf service gitlab start </pre> h2. Install Nginx * Install nginx: <pre> pkg install nginx </pre> * Start and enable nginx at boot: <pre> echo 'nginx_enable="YES"' >> /etc/rc.conf service nginx start </pre> * Create a configuration directory to make managing individual server blocks easier <pre> mkdir /usr/local/etc/nginx/conf.d </pre> * Edit the main nginx config file: <pre> vi /usr/local/etc/nginx/nginx.conf </pre> #* And strip down the config file and add the include statement at the end to make it easier to handle various server blocks: <pre> worker_processes 1; error_log /var/log/nginx-error.log; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # Load config files from the /etc/nginx/conf.d directory include /usr/local/etc/nginx/conf.d/*.conf; } </pre> * Create the gitlab nginx config: <pre> vi /usr/local/etc/nginx/conf.d/gitlab.example.com.conf </pre> #* And add the following: <pre> upstream gitlab-workhorse { server unix:/usr/local/www/gitlab/tmp/sockets/gitlab-workhorse.socket fail_timeout=0; } server { listen 80; server_name gitlab.example.com; server_tokens off; root /usr/local/www/gitlab/public; access_log /var/log/gitlab.example.com-access.log; error_log /var/log/gitlab.example.com-error.log; location / { client_max_body_size 0; gzip off; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://gitlab-workhorse; } } </pre> h2. Resources * https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md * https://github.com/t-zuehlsdorff/gitlabhq/blob/master/doc/install/installation-freebsd.md