Up to now in this chapter, we have worked with the Git command line interface (CLI). It is a very flexible and powerful interface. This recipe covers the installation of a web interface for Git repositories. We will install GitLab, an open source self-hosted Git server. Through GitLab, you can do most administrative tasks, such as creating new repositories, managing access rights, and monitoring history. You can easily browse your files or code and quickly make small edits. GitLab is also adding support for collaboration tools.
You will need access to a root account or an account with sudo
privileges
Make sure you check out the minimum requirements for installation. You can use a single core 1 GB server for an installation with less than 100 users. An server with 2 cores and 2 GB ram is recommended.
Also check the available disk space. The installer itself takes around 400 MB of disk space.
We will use the recommended Omnibus Package Installer. It provides a .deb package for Debian/Ubuntu systems. Additionally, the omnibus installation takes care of housekeeping tasks such as restarting the worker process to maintain memory use. If you choose to follow the manual installation process, you can get the detailed installation guide from the GitLab documentation:
$ wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/xenial/gitlab-ce_8.7.1-ce.1_amd64.deb/download
dpkg
command, as follows:$ sudo dpkg -i gitlab-ce_8.7.1-ce.1_amd64.deb
$ sudo gitlab-ctl reconfigure
gitlab-ctl status
command. It should return a list of processes and their respective PIDs, as follows:ubuntu@ubuntu:~$ sudo gitlab-ctl status [sudo] password for ubuntu: run: gitlab-workhorse: (pid 806) 57803s; run: log: (pid 805) 57803s run: logrotate: (pid 31438) 202s; run: log: (pid 810) 57803s run: nginx: (pid 813) 57803s; run: log: (pid 812) 57803s run: postgresql: (pid 817) 57803s; run: log: (pid 811) 57803s
root
as the username and your password to login.GitLab is a Ruby-based web application that provides centralized hosting for your Git repositories. We have installed an open source community edition of GitLab using their Omnibus installer. It is an integrated installer package that combines all dependencies and default settings. The installer combines Nginx, Redis, Sidekiq, Unicorn, and PostgreSQL. Unfortunately, the community edition with the Omnibus installer does not support switching to the MySQL database server. To use MySQL, you need to follow the manual installation process and compile GitLab from source, along with other various dependencies.
The configuration file is located at /etc/gitlab/gitlab.rb
. It is quite a lengthy file and contains numerous parameters, separated by each component. Some important settings to look at include external_url
, where you can set your domain name, database settings, if you are planning to use external PostgreSQL setup, and email server settings, to set up your outgoing email server. If you choose to modify any settings, you will need to reconfigure the installation using the gitlab-ctl reconfigure
command. You can get a list of enabled configurations using the gitlab-ctl show-config
command.
The GitLab Omnibus package ships with some extra components: GitLab CI, a continuous integration service, and GitLab mattermost, an integrated installation of mattermost that provides an internal communication functionality with a chat server and file sharing. GitLab CI is enabled by default and can be accessed at http://ci.your-gitlab-domain.com
. You can enable mattermost from the configuration file and then access it at http://mattermost.your-gitlab-domain.com
.
Git provides an inbuilt web interface to browse your repositories. All you need is a repository, web server, and the following command:
$ git instaweb --httpd apache2 # defaults to lighttpd You can access the page at http://server-ip:1234
Check the GitWeb documentation for more details at https://git-scm.com/docs/gitweb.
Check out the requirements for GitLab installation: https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/requirements.md.