Skip to content

Instantly share code, notes, and snippets.

@padcom
Created August 3, 2011 09:26
Show Gist options
  • Select an option

  • Save padcom/1122244 to your computer and use it in GitHub Desktop.

Select an option

Save padcom/1122244 to your computer and use it in GitHub Desktop.
Gitorious installation on Ubuntu 12.04
#!/bin/sh
#------------------------------------------------------------------------------
# SETTINGS
#------------------------------------------------------------------------------
MYSQL_ROOT_PASSWORD=password
MYSQL_GITORIOUS_PASSWORD=password
GITORIOUS_HOST=gitorious.aplaline.com
SYSADMIN=sysadmin
SYSADMIN_EMAIL=padcom@gmail.com
SYSADMIN_PASSWORD=qwe123
ACTIVEMQ_ARCHITECTIRE=x86-32
#------------------------------------------------------------------------------
# INSTALLATION STARTS HERE
#------------------------------------------------------------------------------
# Binary packages
sudo apt-get update
sudo apt-get install vim build-essential zlib1g-dev libcurl4-openssl-dev apache2 apg geoip-bin libgeoip1 libgeoip-dev libpcre3 libpcre3-dev zlib1g zlib1g-dev libyaml-dev apache2-dev libonig-dev zip unzip memcached git-core git-svn git-doc git-cvs libreadline-dev sqlite3 libsqlite3-dev libmagick++3 libmagick++-dev libapache2-mod-xsendfile libxslt-dev libxml2-dev uuid uuid-dev openjdk-6-jre
# Packages built from sources
mkdir ~/src
# Ruby Enterprise
cd ~/src
wget http://rubyenterpriseedition.googlecode.com/files/ruby-enterprise-1.8.7-2011.03.tar.gz
tar zxf ruby-enterprise-1.8.7-2011.03.tar.gz
sudo ruby-enterprise-1.8.7-2011.03/installer
cd /opt
sudo ln -s ruby-enterprise-1.8.7-2011.03/ ruby-enterprise
sudo ln -s /opt/ruby-enterprise/bin/ruby /opt/ruby-enterprise/bin/rake /opt/ruby-enterprise/bin/gem /usr/local/bin
sudo sed -e '$ a\export PATH=\/opt\/ruby-enterprise\/bin:$PATH' -i /etc/profile
sudo sed -e '$ a\export LD_LIBRARY_PATH=\"\/usr\/local\/lib\"' -i /etc/profile
sudo sed -e '$ a\export LDFLAGS=\"-L\/usr\/local\/lib -Wl,-rpath,\/usr\/local\/lib\"' -i /etc/profile
sudo sed -e '1 i\\/usr\/local\/lib' -i /etc/ld.so.conf
sudo su
source /etc/profile
sudo ldconfig
# MySQL
echo "mysql-server-5.1 mysql-server/root_password password $MYSQL_ROOT_PASSWORD" | sudo debconf-set-selections
echo "mysql-server-5.1 mysql-server/root_password_again password $MYSQL_ROOT_PASSWORD" | sudo debconf-set-selections
echo "mysql-server-5.1 mysql-server/root_password seen true" | sudo debconf-set-selections
echo "mysql-server-5.1 mysql-server/root_password_again seen true" | sudo debconf-set-selections
sudo apt-get install -y mysql-client-5.1 mysql-server-5.1 libmysqlclient-dev
mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "CREATE DATABASE gitorious"
mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "CREATE USER 'gitorious'@'localhost' IDENTIFIED BY '$MYSQL_GITORIOUS_PASSWORD'"
mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "GRANT ALL PRIVILEGES ON gitorious.* TO 'gitorious'@'localhost'"
# Sphinx
cd ~/src
wget http://sphinxsearch.com/files/sphinx-0.9.9.tar.gz
tar zxf sphinx-0.9.9.tar.gz
cd sphinx-0.9.9
./configure
make
sudo make install
# ActiveMQ
#cd ~/src
#wget http://www.idg.pl/mirrors/apache//activemq/apache-activemq/5.5.1/apache-activemq-5.5.1-bin.tar.gz
#sudo tar xzvf apache-activemq-5.5.1-bin.tar.gz -C /usr/local/
#sudo sed "s/transportConnector name=\"openwire\" uri=\"tcp:\/\/0.0.0.0:61616\"/transportConnector name=\"stomp\" #uri=\"stomp:\/\/0.0.0.0:61613\"/" -i /usr/local/apache-activemq-5.5.1/conf/activemq.xml
#sudo sh -c 'echo "export ACTIVEMQ_HOME=/usr/local/apache-activemq-5.5.1" >> /etc/activemq.conf'
#sudo sh -c 'echo "export JAVA_HOME=/usr/" >> /etc/activemq.conf'
#sudo adduser --system --no-create-home activemq
#sudo chown -R activemq /usr/local/apache-activemq-5.5.1/data
#cd ~/src
#sudo ln -s /usr/local/apache-activemq-5.5.1/bin/linux-$ACTIVEMQ_ARCHITECTURE/activemq /etc/init.d/activemq
#sudo update-rc.d activemq defaults
# Memcached
sudo update-rc.d memcached defaults
# Adding gitorious group
sudo groupadd gitorious
sudo usermod -a -G gitorious $SYSADMIN
# Cloning gitorious project
sudo git clone git://gitorious.org/gitorious/mainline.git /var/www/gitorious
sudo chown -R $SYSADMIN:gitorious /var/www/gitorious
sudo chmod -R g+sw /var/www/gitorious
sudo ln -s /var/www/gitorious/script/gitorious /usr/local/bin/gitorious
cd /var/www/gitorious/
mv public/.htaccess public/.htaccess-DISABLED
mkdir -p tmp/pids
sudo chmod ug+x script/*
sudo chmod -R g+w config/ log/ public/ tmp/
sudo ln -s /var/www/gitorious/doc/templates/ubuntu/git-ultrasphinx /etc/init.d/git-ultrasphinx
sudo ln -s /var/www/gitorious/doc/templates/ubuntu/git-daemon /etc/init.d/git-daemon
sudo ln -s /var/www/gitorious/doc/templates/ubuntu/git-poller /etc/init.d/git-poller
sudo ln -s /var/www/gitorious/doc/templates/ubuntu/stomp /etc/init.d/stomp
sudo chmod +x /etc/init.d/git-ultrasphinx
sudo chmod +x /etc/init.d/git-daemon
sudo chmod +x /etc/init.d/git-poller
sudo chmod +x /etc/init.d/stomp
sudo update-rc.d -f git-daemon start 99 2 3 4 5 .
sudo update-rc.d -f git-ultrasphinx start 99 2 3 4 5 .
sudo update-rc.d -f git-poller start 99 2 3 4 5 .
sudo update-rc.d -f stomp start 99 2 3 4 5 .
sudo gem install --no-ri --no-rdoc bundler
cd /var/www/gitorious
sudo bundle install
#sudo adduser git
sudo adduser --system --home /var/www/gitorious/ --no-create-home --shell /bin/bash git
sudo usermod -a -G gitorious git
sudo mkdir /srv/git
sudo mkdir /srv/git/repositories
sudo mkdir /srv/git/tarballs
sudo mkdir /srv/git/tarballs-work
sudo chown -R git:gitorious /srv/git
sudo su git -c "mkdir ~/.ssh"
sudo su git -c "chmod 700 ~/.ssh"
sudo su git -c "touch ~/.ssh/authorized_keys"
sudo su git -c "touch .bashrc"
sudo su git -c "echo 'export RUBY_HOME=/opt/ruby-enterprise' >> .bashrc"
sudo su git -c "echo 'export GEM_HOME=\$RUBY_HOME/lib/ruby/gems/1.8/gems' >> .bashrc"
sudo su git -c "echo 'export PATH=\$RUBY_HOME/bin:\$PATH' >> .bashrc"
cd /var/www/gitorious
cat > config/broker.yml << EOF
production:
adapter: stomp
EOF
cat > config/database.yml << EOF
production:
adapter: mysql
database: gitorious
username: gitorious
password: $MYSQL_GITORIOUS_PASSWORD
host: localhost
encoding: utf8
EOF
cat > config/gitorious.yml << EOF
production:
cookie_secret: < `/dev/urandom tr -dc A-Za-z0-9 | head -c64`
repository_base_path: "/srv/git/repositories"
extra_html_head_data:
system_message:
gitorious_client_port: 80
gitorious_client_host: $GITORIOUS_HOST
gitorious_host: $GITORIOUS_HOST
gitorious_user: git
exception_notification_emails: $SYSADMIN_EMAIL
mangle_email_addresses: true
public_mode: false
locale: en
archive_cache_dir: "/srv/git/tarballs"
archive_work_dir: "/srv/git/tarballs-work"
only_site_admins_can_create_projects: true
hide_http_clone_urls: false
is_gitorious_dot_org: false
use_ssl: false
EOF
RAILS_ENV=production rake db:migrate
cat | RAILS_ENV=production script/create_admin << EOF
$SYSADMIN_EMAIL
$SYSADMIN_PASSWORD
EOF
cat | script/console production << EOF
user = User.first
user.login = "$SYSADMIN"
user.activate
user.accept_terms
user.save
EOF
RAILS_ENV=production rake ultrasphinx:bootstrap
cd /var/www/gitorious
sudo chown -R git:gitorious config/environment.rb script/poller log tmp
sudo chmod -R g+w config/environment.rb script/poller log tmp
sudo chmod ug+x script/poller
sudo /etc/init.d/activemq start
sudo env RAILS_ENV=production /etc/init.d/git-daemon start
sudo /etc/init.d/git-poller start
sudo gem --no-ri --no-rdoc install passenger --version 3.0.11
sudo passenger-install-apache2-module
cd ~/src
cat > passenger.load << EOF
LoadModule passenger_module /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-3.0.11
PassengerRuby /opt/ruby-enterprise/bin/ruby
EOF
sudo mv passenger.load /etc/apache2/mods-available/
sudo a2enmod passenger
sudo a2enmod rewrite
sudo a2enmod deflate
sudo a2enmod expires
cat > gitorious << EOF
<VirtualHost *:80>
<Directory /var/www/gitorious/public>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from All
</Directory>
DocumentRoot /var/www/gitorious/public
ServerName $GITORIOUS_HOST
# Gzip/Deflate
# http://fluxura.com/2006/5/19/apache-for-static-and-mongrel-for-rails-with-mod_deflate-and-capistrano-support
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Far future expires date
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
ExpiresActive On
ExpiresDefault "access plus 1 year"
</FilesMatch>
# No Etags
FileETag None
RewriteEngine On
# Check for maintenance file and redirect all requests
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /system/maintenance.html [L]
</VirtualHost>
EOF
sudo mv gitorious /etc/apache2/sites-available/
sudo a2ensite gitorious
sudo invoke-rc.d apache2 restart
@rabinnh
Copy link

rabinnh commented Jan 3, 2013

Well, it almost worked.

NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /var/www/gitorious/vendor/cache/ruby/1.8/gems/rails-2.3.14/lib/rails/gem_dependency.rb:21.
Type in Administrator's e-mail:
Type in Administrator's password:
Failed creating Admin user.

Loading production environment (Rails 2.3.14)
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /var/www/gitorious/vendor/cache/ruby/1.8/gems/rails-2.3.14/lib/rails/gem_dependency.rb:21.

user = User.first
=> nil
user.login = "sysadmin"
NoMethodError: undefined method login=' for nil:NilClass from (irb):2 user.activate NoMethodError: undefined methodactivate' for nil:NilClass
from (irb):3
user.accept_terms
NoMethodError: undefined method accept_terms' for nil:NilClass from (irb):4 user.save NoMethodError: undefined methodsave' for nil:NilClass
from (irb):5

(in /var/www/gitorious)
Please install RDoc 2.4.2+ to generate documentation.

rake aborted!
Don't know how to build task 'ultrasphinx:bootstrap'

(See full trace by running task with --trace)

@chrishiggins29
Copy link

@rabinnh -

instead of

  RAILS_ENV=production rake _0.8.7_ ultrasphinx:bootstrap

do this -

  sudo RAILS_ENV=production bundle exec rake thinking_sphinx:configure
  sudo RAILS_ENV=production bundle exec rake thinking_sphinx:index

Let us know if it worked (worked for me)
Good luck,
Higgins

@3rdLOF
Copy link

3rdLOF commented May 28, 2014

Lots of people are running this on the account ethere are so few guides out there and this one is pretty goo (not really a guide, but you know what I mean) except for the ultrasphinx portion, which is no used by Gitorious any longer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment