Installation GitLab sous Scientific Linux 6.3
Debut d'un billet qui couvre l'installation de gitlab sous scientific linux (globalement EL6)NOUVEAU BILLET : GITLAB 6 (installation bitnami et script)
Nous allons suivre l'installation en 6 étapes fournie par Gitlab.
Malheureusement, le tutoriel fourni, n'est pas 'compatible' avec scientific linux, d'où ce billet.
Mon script installe la version 5-3 de gitlab et la version 2.0.0-p247 de ruby. Il est également compatible avec la version 5-4 de gitlab, il vous suffit de changer le numéro de version au début du script.
N'oubliez pas de modifier :
servername.com (configuration httpd)
supersecret (mot de passe mysql)
#!/bin/bash # Installer for GitLab on RHEL 6 (Red Hat Enterprise Linux and CentOS) # ##Export proxy settings # or not ... # Define the public hostname export GL_HOSTNAME=$HOSTNAME # Install from this GitLab branch export GL_GIT_BRANCH="5-3-stable" # Define the version of ruby the environment that we are installing for export RUBY_VERSION="2.0.0-p247" ## Install epel-release yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # Exit on error die() { # $1 - the exit code # $2 $... - the message string retcode=$1 shift printf >&2 "%s\n" "$@" exit $retcode } echo "### Check OS (we check if the kernel release contains el6)" uname -r | grep "el6" || die 1 "Not RHEL or CentOS 6 (el6)" ## work in /tmp cd /tmp/ yum -y groupinstall 'Development Tools' ### 'Additional Development' yum -y install vim-enhanced httpd readline readline-devel ncurses-devel gdbm-devel glibc-devel \ tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc \ sqlite-devel gcc-c++ libyaml libyaml-devel libffi libffi-devel \ libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel \ system-config-firewall-tui python-devel redis sudo mysql-server wget \ mysql-devel crontabs logwatch logrotate sendmail-cf qtwebkit qtwebkit-devel \ perl-Time-HiRes perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker yum remove -y git chkconfig redis on service redis start chkconfig mysqld on service mysqld start ## Install git 1.8.1.2 wget -O v1.8.1.2.tar.gz https://github.com/git/git/archive/v1.8.1.2.tar.gz tar -xzvf ./v1.8.1.2.tar.gz cd git-1.8.1.2/ make prefix=/usr/local all make prefix=/usr/local install ## Httpd chkconfig httpd on touch /etc/httpd/conf.d/gitlab.conf ## Configure cat > /etc/httpd/conf.d/gitlab.conf << EOFServerName servername.com ProxyRequests Off EOF setsebool -P httpd_can_network_connect on # Ruby ## packages (from rvm install message): yum -y install patch gcc-c++ readline-devel zlib-devel libffi-devel openssl-devel make autoconf automake libtool bison libxml2-devel libxslt-devel libyaml-devel ## Install rvm (instructions from https://rvm.io) curl -L get.rvm.io | bash -s stable ## Load RVM source /etc/profile.d/rvm.sh ## Fix for missing psych ## *It seems your ruby installation is missing psych (for YAML output). ## *To eliminate this warning, please install libyaml and reinstall your ruby. ## Run rvm pkg and add --with-libyaml-dir rvm pkg install libyaml ## Install Ruby (use command to force non-interactive mode) command rvm install $RUBY_VERSION --with-libyaml-dir=/usr/local/rvm/usr rvm --default use $RUBY_VERSION ## Install core gems gem install bundler ## Create a git user for Gitlab adduser --system --shell /bin/bash --create-home --comment 'GitLab' git service mysqld start # Create a user for GitLab. (change supersecret to a real password) echo "CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'supersecret';" | mysql -u root ### Create the database echo "CREATE DATABASE IF NOT EXISTS gitlabhq_production DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;" | mysql -u root # Grant the GitLab user necessary permissopns on the table. echo "GRANT SELECT,LOCK TABLES,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON gitlabhq_production.* TO 'gitlab'@'localhost';"\ | mysql -u root # GitLab shell cd /home/git/ ## Clone GitLab su - git -c "git clone https://github.com/gitlabhq/gitlab-shell.git" ## Checkout su - git -c "cd gitlab-shell;git checkout v1.4.0" ## configure su - git -c "cp /home/git/gitlab-shell/config.yml.example /home/git/gitlab-shell/config.yml" sed -i "s|gitlab_url: http://localhost/|gitlab_url: http://cheftest-1.labs.arkea.com/|" /home/git/gitlab-shell/config.yml ## Run setup su - git -c "/home/git/gitlab-shell/bin/install" # GitLab su - git -c "cd /home/git/" ## Clone GitLab su - git -c "git clone https://github.com/gitlabhq/gitlabhq.git /home/git/gitlab" ## Checkout su - git -c "cd gitlab;git checkout $GL_GIT_BRANCH" ## Configure GitLab su - git -c "cd /home/git/gitlab" ### Copy the example GitLab config su git -c "cp /home/git/gitlab/config/gitlab.yml.example /home/git/gitlab/config/gitlab.yml" ### Change gitlabhq hostname to GL_HOSTNAME sed -i "s|host: localhost|host: $GL_HOSTNAME|" /home/git/gitlab/config/gitlab.yml ### Change the from email address sed -i "s|from: gitlab@localhost|from: gitlab@$GL_HOSTNAME|" /home/git/gitlab/config/gitlab.yml # Make sure GitLab can write to the log/ and tmp/ directories chown -R git /home/git/gitlab/log/ chown -R git /home/git/gitlab/tmp/ chmod -R u+rwX /home/git/gitlab/log/ chmod -R u+rwX /home/git/gitlab/tmp/ #Create directory for satellites su git -c "mkdir /home/git/gitlab-satellites" # Create directories for sockets/pids and make sure GitLab can write to them su git -c "mkdir /home/git/gitlab/tmp/pids/" su git -c "mkdir /home/git/gitlab/tmp/sockets/" chmod -R u+rwX /home/git/gitlab/tmp/pids/ chmod -R u+rwX /home/git/gitlab/tmp/sockets/ # Create public/uploads directory otherwise backup will fail su git -c "mkdir /home/git/gitlab/public/uploads" chmod -R u+rwX /home/git/gitlab/public/uploads # Copy the example Puma config su git -c "cp /home/git/gitlab/config/puma.rb.example /home/git/gitlab/config/puma.rb " ## Configure cat > /home/git/gitlab/config/puma.rb << EOF #!/usr/bin/env puma # Start Puma with next command: # RAILS_ENV=production bundle exec puma -C ./config/puma.rb # uncomment and customize to run in non-root path # note that config/gitlab.yml web path should also be changed # ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab" application_path = '/home/git/gitlab' directory application_path environment 'production' daemonize true pidfile "#{application_path}/tmp/pids/puma.pid" state_path "#{application_path}/tmp/pids/puma.state" stdout_redirect "#{application_path}/log/puma.stdout.log", "#{application_path}/log/puma.stderr.log" # Configure “min” to be the minimum number of threads to use to answer # requests and “max” the maximum. # # The default is “0, 16”. # # threads 0, 16 # Bind the server to “url”. “tcp://”, “unix://” and “ssl://” are the only # accepted protocols. # # The default is “tcp://0.0.0.0:9292”. # bind 'tcp://127.0.0.1:9292' # bind 'unix:///var/run/puma.sock' # bind 'unix:///var/run/puma.sock?umask=0777' # bind 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert' # bind "unix://#{application_path}/tmp/sockets/gitlab.socket" # Instead of “bind 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert'” you # can also use the “ssl_bind” option. # # ssl_bind '127.0.0.1', '9292', { key: path_to_key, cert: path_to_cert } # Code to run before doing a restart. This code should # close log files, database connections, etc. # # This can be called multiple times to add code each time. # # on_restart do # puts 'On restart...' # end # Command to use to restart puma. This should be just how to # load puma itself (ie. 'ruby -Ilib bin/puma'), not the arguments # to puma, as those are the same as the original process. # # restart_command '/u/app/lolcat/bin/restart_puma' # === Cluster mode === # How many worker processes to run. # # The default is “0”. # # workers 2 # GitLab cluster mode recommendations # If you have more than 1 GB RAM, uncomment one of the following lines: # # workers 2 # if you have at least 1.5 GB RAM # workers 3 # if you have at least 2 GB RAM # workers 4 # if you have at least 2.5 GB RAM # Code to run when a worker boots to setup the process before booting # the app. # # This can be called multiple times to add hooks. # # on_worker_boot do # puts 'On worker boot...' # end # === Puma control rack application === # Start the puma control rack application on “url”. This application can # be communicated with to control the main server. Additionally, you can # provide an authentication token, so all requests to the control server # will need to include that token as a query parameter. This allows for # simple authentication. # # Check out https://github.com/puma/puma/blob/master/lib/puma/app/status.rb # to see what the app has availabhttp://alvinalexander.com/blog/post/mysql/show-users-i-ve-created-in-mysql-databasele. # # activate_control_app 'unix:///var/run/pumactl.sock' # activate_control_app 'unix:///var/run/pumactl.sock', { auth_token: '12345' } # activate_control_app 'unix:///var/run/pumactl.sock', { no_token: true } EOF ### Copy database congiguration su git -c "cp /home/git/gitlab/config/database.yml.mysql /home/git/gitlab/config/database.yml" ### Set MySQL root password in configuration file sed -i "s|password|supersecret|" /home/git/gitlab/config/database.yml ## Install Charlock holmes yum -y install libicu-devel gem install charlock_holmes --version '0.6.9.4' ## For MySQL cd /home/git/gitlab/ yum -y install mysql-devel su git -c "bundle install --deployment --without development test postgres" # Initialise Database and Activate Advanced Features # Force it to be silent (issue 31) export force=yes su git -c "bundle exec rake gitlab:setup RAILS_ENV=production" ## Install init script curl https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab-centos > /etc/init.d/gitlab chmod +x /etc/init.d/gitlab ## Fix for issue 30 # bundle not in path (edit init-script). # Add after ". /etc/rc.d/init.d/functions" (row 17). sed -i "17 a source /etc/profile.d/rvm.sh\nrvm use $RUBY_VERSION" /etc/init.d/gitlab chkconfig --add gitlab chkconfig gitlab on service gitlab start service httpd restart echo "### Done ###############################################" echo "#" echo "#" echo "# Point your browser to:" echo "# http://$GL_HOSTNAME (or: http://Order deny,allow Allow from all ProxyPreserveHost On ProxyPass / http://localhost:9292/ ProxyPassReverse / http://localhost:9292/)" echo "# Default admin username: admin@local.host" echo "# Default admin password: 5iveL!fe" echo "#" echo "###"
Ce script est également disponible sur gist (si vous préférez).
https://gist.github.com/bigbigbang/6104593
Aucun commentaire:
Enregistrer un commentaire