Aydan Taşdemir Yılmaz

Linux Notları

Recent News

Salı, Ekim 18, 2011

Gitorious Kurulumu [Ubuntu 10.04]


1)GEREKLİ PAKETLER
--build-essential_11.4
--zlib1g-dev-2.3.3
--tcl-dev-8.4.16-2
--libexpat-dev-2.0.1
--libcurl4-openssl-dev-7.19.7
--apache2-2.2.14
--mysql-server-5.1.41
--mysql-client-5.1.41
--apg-2.2.3
--geoip-bin-1.4.6
--libgeoip-dev-1.4.6
--sqlite3 -3.6.22
--libsqlite3-dev-3.6.22
--imagemagick-7:6.5.7.8
--memcached-1.4.2
--git-svn-1.7.0.4

=>Gerekli paketleri sisteme kuruyoruz.

#apt-get update

#apt-get install build-essential zlib1g-dev tcl-dev libexpat-dev libcurl4-openssl-dev postfix apache2 mysql-server mysql-client apg geoip-bin libgeoip1 libgeoip-dev sqlite3 libsqlite3-dev imagemagick libpcre3 libpcre3-dev zlib1g zlib1g-dev libyaml-dev libmysqlclient15-dev apache2-dev libonig-dev phpmyadmin libmagick++-dev zip unzip memcached git-core git-svn git-doc git-cvs irb sphinxsearch

Myql kurulumu sırasında

**mysql-root password: mysql_parolaniz

**webserver configuration : apache2

**Configure database for phpmyadmin with dbconfig-common? No şeklinde ayarlıyoruz.

2)ACTIVEMQ KURULUMU
#apt-get install uuid uuid-dev openjdk-6-jre

#wget http://archive.apache.org/dist/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-bin.tar.gz

#tar xzvf apache-activemq-5.2.0-bin.tar.gz -C /usr/local/

#echo "export ACTIVEMQ_HOME=/usr/local/apache-activemq-5.2.0" >> /etc/activemq.conf

#echo "export JAVA_HOME=/usr/" >> /etc/activemq.conf

#adduser --system --no-create-home activemq

#chown -R activemq /usr/local/apache-activemq-5.2.0/data

3)NETWORKCONNECTORS AYARLARINI DÜZENLEME
Activemq.xml dosyasını açıp

#vi /usr/local/apache-activemq-5.4.2/conf/activemq.xml

Aşağıdaki satırları ekliyoruz.

<networkConnectors>
<!-- by default just auto discover the other brokers --
<!-- Example of a static configuration: --
<networkConnector name="localhost" uri="static://(tcp://127.0.0.1:61616)"/>
</networkConnectors>

4)ACTIVEMQ BAŞLANGIÇ SCRIPT
#cd /tmp

#wget http://launchpadlibrarian.net/15645459/activemq

#mv activemq /etc/init.d/activemq

#chmod +x /etc/init.d/activemq

#update-rc.d activemq defaults

#service activemq start

5)RUBY ENTERPRISE EDITION İNDİRME VE KURULUM
#wget http://rubyenterpriseedition.googlecode.com/files/ruby-enterprise_1.8.7-2011.03_amd64_ubuntu10.04.deb

#dpkg -i ruby-enterprise_1.8.7-2011.03_amd64_ubuntu10.04.deb
6)RUBYGEMS KURULUMU
#cd /tmp

#wget http://rubyforge.org/frs/download.php/75309/rubygems-1.8.10.tgz

#tar xzvf rubygems-1.8.10.tgz

#cd rubygems-1.8.10

#ruby setup.rb

#ln -s /usr/local/bin/gem /usr/bin/gem

7)GEREKLİ GEMS UYGULAMALARI
#gem install -b --no-ri --no-rdoc rmagick chronic geoip daemons hoe echoe ruby-yadis ruby-openid mime-types diff-lcs json rack ruby-hmac rake stompserver passenger rails ultrasphinx mysql

--rmagick-2.13.1
--chronic-0.6.4
--geoip-1.1.1
--daemons-1.1.4
--hoe-2.12.3
--echoe-4.6.3
--ruby-yadis-0.3.4
--ruby-openid-2.1.8
--mime-types-1.16
--diff-lcs-1.1.3
--json-1.6.1
--rack-1.3.4
--ruby-hmac-0.4.0
--rake-0.9.2
--stompserver-0.9.9
--passenger-3.0.9
--rails-3.1.1
--ultrasphinx-1.11
--mysql-2.8.1

#gem install -b --no-ri --no-rdoc -v 1.0.1 rack

#gem install -b --no-ri --no-rdoc -v 1.3.1.1 rdiscount

#gem install -b --no-ri --no-rdoc -v 1.1 stomp
8)DOĞRU VERSİYON LİNKLERİNİ AYARLAMAK
#ln -s /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake /usr/bin/rake

#ln -s /usr/local/bin/stompserver /usr/bin/stompserver

8)GITORIOUS İNDİRME VE AYARLAR
Gitorious paketini indiriyoruz
#git clone git://gitorious.org/gitorious/mainline.git /var/www/gitorious

Gerekli init.d scriptlerini kopyalıyoruz.
#cp /var/www/gitorious/doc/templates/ubuntu/git-daemon /etc/init.d/

#cp /var/www/gitorious/doc/templates/ubuntu/git-ultrasphinx /etc/init.d/

/etc/init.d/git-daemon scriptine editlenir.
#vi /etc/init.d/git-daemon

Aşağıdaki gibi düzenlenir.
GIT_DAEMON="/usr/bin/ruby /var/www/gitorious/script/git-daemon -d"

Git-poller ve stomp başlangıç scriptleri oluşturulur.
#vi /etc/init.d/git-poller

git-poller
-------------------------------------------------------------------------------------------------------------------
#!/bin/sh
# Start/stop the git poller
#
### BEGIN INIT INFO
# Provides: git-poller
# Required-Start: stomp
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Short-Description: Gitorious poller
# Description: Gitorious poller
### END INIT INFO

/bin/su - git -c "cd /var/www/gitorious;RAILS_ENV=production bundle exec script/poller $@"
-------------------------------------------------------------------------------------------------------------------

#vi /etc/init.d/stomp
stomp
-------------------------------------------------------------------------------------------------------------------
#!/bin/sh
# Start/stop the stompserver
#
### BEGIN INIT INFO
# Provides: stomp
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Short-Description: Stomp
# Description: Stomp
### END INIT INFO


test -f /usr/bin/stompserver || exit 0

. /lib/lsb/init-functions

case "$1" in
start) log_daemon_msg "Starting stompserver" "stompserver"
start-stop-daemon --start --name stompserver --startas /usr/bin/stompserver --background --user git
log_end_msg $?
;;
stop) log_daemon_msg "Stopping stompserver" "stompserver"
start-stop-daemon --stop --name stompserver
log_end_msg $?
;;
restart) log_daemon_msg "Restarting stompserver" "stompserver"
start-stop-daemon --stop --retry 5 --name stompserver
start-stop-daemon --start --name stompserver --startas /usr/bin/stompserver --background --user git
log_end_msg $?
;;
status)
status_of_proc /usr/bin/stompserver stompserver && exit 0 || exit $?
;;
*) log_action_msg "Usage: /etc/init.d/stomp {start|stop|restart|status}"
exit 2
;;
esac
exit 0
-------------------------------------------------------------------------------------------------------------------
git-ultrasphinx scripti aşağıdaki gibi düzenlenir.
#vi /etc/init.d/git-ultrasphinx

START_CMD="cd $GITORIOUS_HOME && /usr/local/bin/bundle exec rake ultrasphinx:daemon:start RAILS_ENV=production"
STOP_CMD="cd $GITORIOUS_HOME && /usr/local/bin/bundle exec rake ultrasphinx:daemon:stop RAILS_ENV=production"
RESTART_CMD="cd $GITORIOUS_HOME && /usr/local/bin/bundle exec rake ultrasphinx:daemon:restart RAILS_ENV=production"
STATUS_CMD="cd $GITORIOUS_HOME && /usr/local/bin/bundle exec rake ultrasphinx:daemon:status RAILS_ENV=production"

Başlangıç scriptlerine gerekli izinler verilir ve aktif hale getirilir.
#chmod 755 /etc/init.d/git-ultrasphinx /etc/init.d/git-daemon /etc/init.d/stomp /etc/init.d/git-poller

#update-rc.d stomp defaults

#update-rc.d git-daemon defaults

#update-rc.d git-ultrasphinx defaults

#update-rc.d git-poller defaults

Apache setup scripti çalıştırıp kuruyoruz
#/usr/local/bin/passenger-install-apache2-module

passenger.load dosyasını oluşturuyoruz.
#vi vi /etc/apache2/mods-available/passenger.load

Aşağıdaki satırları ekliyoruz.

passenger-load
----------------------------------------------------------------------------------------------------------
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.9/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.9
PassengerRuby /usr/local/bin/ruby
----------------------------------------------------------------------------------------------------------
#a2enmod passenger

#a2enmod rewrite

#a2enmod ssl
#a2ensite default-ssl

Apacheyi restart ediyoruz.
#service apache2 restart

9)MYSQL KURULUMU
Mysql de gitorious_production veritabanı ve git kullanıcısını ekliyoruz.

#mysql_setpermission

select 2

Which database would you like to add: gitorious_production

What username is to be created: gitorious

Would you like to set a password for git [y/n]: y

What password do you want to specify for git: git_kullanici_parolasi

The following host(s) will be used: localhost.

select 0

Gitorious dosyasını oluşturuyoruz.
#vi /etc/apache2/sites-available/gitorious

gitorious
-------------------------------------------------------------------------------------------------------------------
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/gitorious/public
</VirtualHost>
-------------------------------------------------------------------------------------------------------------------
Gitorious-ssl dosyasını oluşturuyoruz.
#vi /etc/apache2/sites-available/gitorious-ssl
-------------------------------------------------------------------------------------------------------------------
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
DocumentRoot /var/www/gitorious/public
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
</VirtualHost>
</IfModule>
-------------------------------------------------------------------------------------------------------------------

Uygun siteleri enable veya disable ediyoruz.
#a2dissite default

#a2dissite default-ssl

#a2ensite gitorious

#a2ensite gitorious-ssl

Git kullanıcısını sisteme ekliyoruz.
#adduser --system --home /var/www/gitorious/ --no-create-home --group --shell /bin/bash git

#passwd git

user:git
password:git_parolasi

Gitorious dizininde git kullanıcısına gerekli izinleri veriyoruz
#chown -R git:git /var/www/gitorious

git kullanıcısına geçiyoruz.
#su - git

gitorious dizinine geçiyoruz.
$cd /var/www/gitorious

.ssh dizinini oluşturuyoruz.
$mkdir .ssh

authorized_keys dosyasını oluşturuyoruz.
$touch .ssh/authorized_keys

.ssh dizininin ve authorized_keys dosyasının izinlerini değiştiriyoruz.
$chmod 700 .ssh
$chmod 600 .ssh/authorized_keys

Gerekli dizinleri oluşturup dosyaları kopyalıyoruz.
$mkdir tmp/pids
$mkdir repositories
$mkdir tarballs
$cp config/database.sample.yml config/database.yml
$cp config/gitorious.sample.yml config/gitorious.yml
$cp config/broker.yml.example config/broker.yml

config/database.yml dosyasını ve config/gitorious dosyasını editliyoruz.
$vi config/database.yml
pruduction kısmından önceki tanımlamaları siliyoruz.

$vi config/gitorious.yml

production kısmından önceki kısımları siliyoruz ve aşağıdaki şekilde ayarlıyoruz.
cookie_secret: dydEchSawnajDiepNaivAuQuatejolgUfsOkjugocyirErbUtdejobkoGregreFr
repository_base_path: "/var/www/gitorious/repositories"
gitorious_client_port: 80
gitorious_client_host: your.hostname
gitorious_host: your.hostname
archive_cache_dir: "/var/www/gitorious/tarballs"
archive_work_dir: "/tmp/tarballs-work"
hide_http_clone_urls: true
is_gitorious_dot_org: false

$export RAILS_ENV=production
$rake db:create
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /usr/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/shared_helpers.rb:3.
rake aborted!
https://github.com/roman/rots.git (at master) is not checked out. Please run `bundle install`
hatası ile karşılaştık

$logout
$sudo su -
#cd /var/www/gitorious
#bundle install
Using rake (0.8.7)
Installing SystemTimer (1.2.3) with native extensions
Installing activesupport (2.3.8)
Installing activemessaging (0.7.1)
Installing activerecord (2.3.8)
Installing acts-as-taggable-on (2.0.6)
Installing addressable (2.2.6)
Using builder (3.0.0)
Installing json (1.5.3) with native extensions
Installing capillary (0.1.3)
Using mime-types (1.16)
Installing nokogiri (1.5.0) with native extensions /usr/local/lib/ruby/site_ruby/1.8/rubygems/installer.rb:552:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/usr/local/bin/ruby extconf.rb
checking for libxml/parser.h... yes
checking for libxslt/xslt.h... no
-----
libxslt is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.

libxslt yok hatası aldığımız için

#apt-get install libxslt1-dev

10)BUNDLE INSTALL
#bundle install
Installing nokogiri (1.5.0) with native extensions
Using rack (1.0.1)
Using rack-test (0.6.1)
Installing ffi (1.0.9) with native extensions
Installing childprocess (0.2.1)
Installing json_pure (1.5.0)
Installing rubyzip (0.9.4)
Installing selenium-webdriver (2.4.0)
Installing xpath (0.1.4)
Installing capybara (1.0.1)
Installing chronic (0.3.0)
Installing daemons (1.1.0)
Installing diff-lcs (1.1.2)
Installing gemcutter (0.6.1)
Using rubyforge (2.0.4)
Installing echoe (4.3.1)
Using eventmachine (0.12.10)
Installing exception_notification (1.0.20090728)
Installing factory_girl (1.3.3)
Installing geoip (0.8.9)
Installing hodel_3000_compliant_logger (0.1.0)
Installing hoe (2.8.0)
Installing launchy (2.0.5)
Installing mocha (0.9.10)
Using mysql (2.8.1)
Installing oauth (0.4.4)
Installing paperclip (2.2.9.2)
Installing proxymachine (1.2.4)
Using rdiscount (1.3.1.1)
Installing redis (2.2.0)
Installing redis-namespace (0.7.0)
Installing sinatra (1.0)
Installing vegas (0.1.8)
Installing resque (1.9.8)
Installing revo-ssl_requirement (1.1.0)
Installing riddle (1.2.2)
Using rots (0.2.1) from https://github.com/roman/rots.git (at master) /usr/local/lib/ruby/site_ruby/1.8/rubygems/installer.rb:365:in `initialize': No such file or directory - /usr/local/lib/ruby/gems/1.8/bundler/gems/gems/rots-0.2.1/bin/rots (Errno::ENOENT)

rots yanlış dizinde arandığı için
#ln -s /var/www/gitorious/rake-0.8.7/ruby/1.8/bundler/gems/rots-babb5559aae8/ruby/1.8/bundler/gems/rots-babb5559aae8/ /var/www/gitorious/rake-0.8.7/ruby/1.8/bundler/gems/rots-babb5559aae8/ruby/1.8/bundler/gems/gems/rots-0.2.1
ile doğru yerde aramasını sağlıyoruz.

Daha sonra /var/www/gitorious/Rakefile dosyasını düzenliyoruz.
#vi /var/www/gitorious/Rakefile
Aşağıdaki satırı ekliyoruz.
require 'thread'

Bundle install çalıştırıyoruz.
#bundle install

bundle kullanarak rake ile db oluşturuyoruz.(git kullanıcısı ile)
$bundle exec rake db:create:all
$bundle exec rake db:migrate
$bundle exec rake ultrasphinx:bootstrap

/etc/crontab dosyasına aşağıdaki satırı ekliyoruz.
* * * * * root cd /var/www/gitorious && RAILS_ENV=production /usr/local/bin/bundle exec rake ultrasphinx:index

Admin kullanıcısını oluşturuyoruz.
$env RAILS_ENV=production ruby script/create_admin

Ssl sertifikası oluşturuyoruz.
#make-ssl-cert generate-default-snakeoil --force-overwrite

Git kullanıcısından çıkıp root olarak

#service apache2 restart

#service git-daemon start

#/etc/init.d/git-ultrasphinx restart

#/etc/init.d/stomp start

daha sonra belirlediğimiz alan adını browser ile açıp kullanıcı adı ve parola bilgilerimizi giriyoruz.

Zorlu bir kurulum süreci olan gitoriousumuz vatana millete hayırlı olsun :))
 Edit: Bu yazı için kaynak belirtmeyerek büyük bir hata işlemişim. Bu kurulumu yaparken [1] adresini referans aldım.

[1]http://www.silly-science.co.uk/2010/12/12/installing-gitorious-on-ubuntu-10-04-howto/

Pazartesi, Ekim 17, 2011

Geliştirici sürecimde mutlu son (:

Yaklaşık bir sene önce bitirme projesine başladığımız zamanlar , Necdet Hoca yaptığımız işin geliştiricisi olmamız konusunda bizleri cesaretlendirmişti. Biz de bu gazla Pardus geliştiricisi başvurusunda bulunmuştuk. Quiz sorularını cevaplayıp gönderdikten sonra junior job dönemi başladı . Mentor ataması konusunda 1 ay bir sorun yaşadıktan sonra Pardus geliştiricilerinden Serdar Dalgıç mentor olarak atandı ve bu yolda bize (Merve ve Ben :) destek oldu.


Zaten yabancısı olmadığımız pisi paketleme işiyle ilgilendik. Bitirme projemizin[Çomak] de başarıyla sonlanmasıyla beraber hızlanan geliştiricilik sürecimiz [1] mailiyle sonlandı ve ben de artık Pardus geliştiricisi oldum.

Bu süreçle ilgili ; ilk adımı atmamızı sağlayan ve her adımda destek veren Necdet Yücel'e , junior job sürecinde her türlü yardımı yapan , bilgilendiren Serdar Dalgıç'a ve tshirt konusunda benimle dalga geçse de Kaan Özdinçer'e teşekkür ederim.




[1]http://liste.pardus.org.tr/gelistirici/2011-October/056955.html