summaryrefslogtreecommitdiff
path: root/doc/development/omnibus.md
diff options
context:
space:
mode:
authorJacob Vosmaer <contact@jacobvosmaer.nl>2015-02-19 11:20:58 +0100
committerJacob Vosmaer <contact@jacobvosmaer.nl>2015-02-19 11:20:58 +0100
commit93e42f690bc057ca0e803074aaeb1b55ea9c2232 (patch)
treedcad0c25da3bf62ed3f2b48c7b5cd1d0aa712ef9 /doc/development/omnibus.md
parent0b8e41aae2d6d64d18d8034e863e72cc832d0b83 (diff)
downloadgitlab-ce-93e42f690bc057ca0e803074aaeb1b55ea9c2232.tar.gz
Document fun facts about omnibus-gitlab
Diffstat (limited to 'doc/development/omnibus.md')
-rw-r--r--doc/development/omnibus.md32
1 files changed, 32 insertions, 0 deletions
diff --git a/doc/development/omnibus.md b/doc/development/omnibus.md
new file mode 100644
index 00000000000..0ba354d28a2
--- /dev/null
+++ b/doc/development/omnibus.md
@@ -0,0 +1,32 @@
+# What you should know about omnibus packages
+
+Most users install GitLab using our omnibus packages. As a developer it can be
+good to know how the omnibus packages differ from what you have on your laptop
+when you are coding.
+
+## Files are owned by root by default
+
+All the files in the Rails tree (`app/`, `config/` etc.) are owned by 'root' in
+omnibus installations. This makes the installation simpler and it provides
+extra security. The omnibus reconfigure script contains commands that give
+write access to the 'git' user only where needed.
+
+For example, the 'git' user is allowed to write in the `log/` directory, in
+`public/uploads`, and they are allowed to rewrite the `db/schema.rb` file.
+
+In other cases, the reconfigure script tricks GitLab into not trying to write a
+file. For instance, GitLab will generate a `.secret` file if it cannot find one
+and write it to the Rails root. In the omnibus packages, reconfigure writes the
+`.secret` file first, so that GitLab never tries to write it.
+
+## Code, data and logs are in separate directories
+
+The omnibus design separates code (read-only, under `/opt/gitlab`) from data
+(read/write, under `/var/opt/gitlab`) and logs (read/write, under
+`/var/log/gitlab`). To make this happen the reconfigure script sets custom
+paths where it can in GitLab config files, and where there are no path
+settings, it uses symlinks.
+
+For example, `config/gitlab.yml` is treated as data so that file is a symlink.
+The same goes for `public/uploads`. The `log/` directory is replaced by omnibus
+with a symlink to `/var/log/gitlab/gitlab-rails`.