Support #624
Updated by Daniel Curtis over 9 years ago
{{>toc}} h1. Setting up the Environment * Start by making sure everything is up to date: <pre> pkg update && pkg upgrade portsnap fetch extract pkg2ng </pre> * Install portmaster: <pre> cd /usr/ports/ports-mgmt/portmaster make install clean </pre> * Install a few dependencies <pre> portmaster devel/git databases/redis lang/ruby21 security/krb5 devel/icu textproc/libxml2 textproc/libxslt lang/python2 shells/bash security/sudo lang/gcc48 devel/gmake devel/autoconf devel/automake devel/libtool devel/bison devel/readline textproc/libyaml databases/sqlite3 databases/gdbm devel/cmake databases/postgresql94-client databases/postgresql-libpqxx sysutils/rubygem-bundler devel/libgit2 security/libssh2 </pre> * Add the GitLab user <pre> pw add user -n git -m -s /usr/local/bin/bash -c "GitLab" </pre> h2. Install Redis * Start Redis and enable it to start at boot: <pre> echo 'redis_enable="YES"' >> /etc/rc.conf service redis start </pre> * Add the following to /usr/local/etc/redis.conf: <pre> unixsocket /var/run/redis/redis.sock unixsocketperm 770 </pre> * Add git to the redis group: <pre> pw usermod git -G redis </pre> h2. Install PostgreSQL * This environment will be setup with MariaDB 5.5 for its MySQL server: <pre> portmaster databases/postgresql94-server </pre> * Login to PostgreSQL: <pre> sudo -u postgres psql -d template1 </pre> #* Create a user for GitLab: <pre> CREATE USER git CREATEDB; </pre> #* Create the GitLab production database & grant all privileges on database <pre> CREATE DATABASE gitlabhq_production OWNER git; </pre> #* Quit the database session <pre> \q </pre> * Try connecting to the new database with the new user <pre> sudo -u git -H psql -d gitlabhq_production </pre> * Quit the database session <pre> \q </pre> h1. Install GitLab 7.11 * Change to the git user home directory and download GitLab 7.11 <pre> su - git cd git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 7-11-stable gitlab </pre> * Create a config file <pre> cd /home/git/gitlab cp config/gitlab.yml.example config/gitlab.yml </pre> * Edit the gitlat config file: <pre> vi config/gitlab.yml </pre> #* Change the +@gitlab: host:@+ to git.example.com #* If using https change the +@gitlab: port:@+ from 80 to *443* #* Change the +@git: bin_path:@+ to */usr/local/bin/git* #* Change the +@satellites: path:@+ to */usr/home/git/gitlab-satellites/* #* Change the +@gitlab_shell: path:@+ to */usr/home/git/gitlab-shell/* #* Change the +@gitlab_shell: repos_path:@+ to */usr/home/git/repositories/* #* Change the +@gitlab_shell: hooks_path:@+ to */usr/home/git/gitlab-shell/hooks/* * Create a unicorn.rb file: <pre> cp config/unicorn.rb.example config/unicorn.rb </pre> * Create a rack_attack.rb file: <pre> cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb </pre> * Create a database configuration file: <pre> cp config/database.yml.postgresql config/database.yml </pre> * Configure the GitLab system user: <pre> git config --global user.name "GitLab" git config --global user.email "example@example.com" </pre> * Setup the directories and permissions: <pre> chown -R git log/ chown -R git tmp/ chmod -R u+rwX log/ chmod -R u+rwX tmp/ chmod -R u+rwX tmp/pids/ chmod -R u+rwX tmp/sockets/ chmod -R u+rwX public/uploads </pre> * Create the gitlab-satellites: <pre> mkdir /home/git/gitlab-satellites chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites </pre> * Configure Redis connection settings <pre> cp config/resque.yml.example config/resque.yml </pre> * Configure bundler to build nokogiri using system libraries : <pre> bundle config build.nokogiri "--use-system-libraries" </pre> *NOTE*: This is required to prevent an error building nokogiri during install * Configure bundler to build rugged using system libraries : <pre> bundle config build.rugged "--use-system-libraries" </pre> *NOTE*: This is required to prevent an error building rugged during install * Install GitLab gems <pre> bundle install --deployment --without development test mysql aws </pre> h2. Install GitLab Shell * Run the installation task for gitlab-shell (replace `REDIS_URL` if needed) <pre> bundle exec rake gitlab:shell:install[v2.6.3] REDIS_URL=redis://localhost:6379 RAILS_ENV=production </pre> By default, the gitlab-shell config is generated from your main gitlab config. * *NOTE*: When using GitLab with HTTPS please change the following: *# Provide paths to the certificates under `ca_file` and `ca_path` options. *# The `gitlab_url` option must point to the https endpoint of GitLab. *# In case you are using self signed certificate set `self_signed_cert` to `true`. * You can review (and modify) the gitlab-shell config as follows: <pre> vi /home/git/gitlab-shell/config.yml </pre> * Initialize Database and Activate Advanced Features <pre> bundle exec rake gitlab:setup RAILS_ENV=production </pre> * Verify that the install worked: <pre> bundle exec rake gitlab:env:info RAILS_ENV=production </pre> * Precompile the assets used by GitLab: <pre> bundle exec rake assets:precompile RAILS_ENV=production </pre> * Exit out of the GitLab user, back into the root account: <pre> exit </pre> * Create an init script <pre> cp /usr/home/git/gitlab/lib/support/init.d/gitlab /usr/local/etc/rc.d/gitlab </pre> * Start GitLab <pre> service gitlab start </pre> * Enable GitLab to start at boot <pre> echo 'gitlab_enable="YES"' >> /etc/rc.conf </pre> h1. Running GitLab on Nginx h2. Install Nginx Running GitLab from an nginx server using phusion passenger is simple. * Install Nginx nginx: <pre> portmaster www/nginx </pre> #* *NOTE*: Make sure to enable *@[X]PASSENGER@* during * Copy the port configuration * Start and enable GitLab nginx at boot: <pre> echo 'nginx_enable="YES"' >> /etc/rc.conf service config into the nginx start directory </pre> h2. Install Phusion Passenger * Reinstall Nginx with Passenger support <pre> portmaster www/rubygem-passenger cp /usr/home/git/gitlab/lib/support/nginx/gitlab /usr/local/etc/nginx/gitlab.conf </pre> #* *NOTE*: Make sure to enable *@[X]NGINX@* during Change the port configuration hostname: *git.example.com* #* _Optional_: Enable *@[X]SYMLINK@* during Change the port configuration proxy_pass to make upgrading passenger easier later on. the correct address and port: http://127.0.0.1:8080 * Edit Add the main nginx config file: following piece of code in /usr/local/etc/nginx/nginx.conf, before the last “}": <pre> vi /usr/local/etc/nginx/nginx.conf include /usr/local/etc/nginx/gitlab.conf; </pre> #* And add * Prepare the Passenger config parameters: directories needed by nginx: <pre> #user nobody; mkdir -p /var/tmp/nginx /var/log/nginx worker_processes 1; chown -R www: /var/log/nginx /var/tmp/nginx error_log /var/log/nginx-error.log; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; # Load Phusion Passenger module globally passenger_root /usr/local/lib/ruby/gems/2.1/gems/passenger; passenger_ruby /usr/local/bin/ruby21; passenger_max_pool_size 15; passenger_pool_idle_time 300; # Load config files from the /etc/nginx/conf.d directory include /usr/local/etc/nginx/conf.d/*.conf; } </pre> #* *NOTE*: The above config assumes [X]SYMLINK was enabled during the port configuration. Match the config according to which ever version of passenger is installed at @/usr/local/lib/ruby/gems/2.1/gems@. * Now create a git server block: Start and enable nginx at boot: <pre> vi /usr/local/etc/nginx/conf.d/git.example.com.conf echo 'nginx_enable="YES"' >> /etc/rc.conf </pre> #* And add the following: <pre> server { listen 80; server_name git.example.com; # enforce https return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name git.example.com; ssl_certificate /usr/local/etc/nginx/ssl/git.example.com.crt; ssl_certificate_key /usr/local/etc/nginx/ssl/git.example.com.key; root /home/git/gitlab/public; passenger_enabled on; passenger_user git; passenger_group git; # set max upload size client_max_body_size 1G; fastcgi_buffers 64 4K; } service nginx start </pre> * Default username and password: #* user: *root* #* pass: *5iveL!fe* h1. Running GitLab on Apache Running GitLab from an apache server using phusion passenger is simple. * Edit the virtual host definition and add/modify it according to your needs: <pre> vi /usr/local/etc/apache24/Vhosts/git.example.com.conf </pre> #* And add/edit the following virtual host definition: <pre> <VirtualHost *:80> DocumentRoot "/home/git/gitlab/public" ServerName git.example.com ErrorLog "/var/log/git.example.com-error_log" CustomLog "/var/log/git.example.com-access_log" common PassengerRuby /usr/local/bin/ruby <Directory /home/git/gitlab/public> Options -MultiViews AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost> </pre> * Restart apache: <pre> service apache24 restart </pre> * Start and enable apache24 at boot: <pre> echo 'apache24_enable="YES"' >> /etc/rc.conf service apache24 start </pre> h1. Resources http://luizgustavo.pro.br/blog/2014/08/21/instalacao-gitlab-no-freebsd/ https://gitlab.com/gitlab-org/gitlab-ce/blob/7-8-stable/doc/install/installation.md https://gitlab.com/gitlab-org/gitlab-ce/blob/7-8-stable/doc/install/database_mysql.md