ben

OMÜ , Bilgisayar Mühendisliği, 13'

30 Haziran 2015 Salı

Rails deploy digitalocean


Üyelik işlemi: https://cloud.digitalocean.com/registrations/new

Yeni Server oluşturma:







Olusan server bilgileri:


Server  kurulumu:
             
  esryrlmz@esryrlmz:~$ ssh root@178.62.110.33

            İlk girişte mail adresine gelen şifreyi , daha sonrada yeni şifre isteyecek

Yeni kullanıcı oluşturma ve yetki verme:
    
   root@urad:~#  adduser esryrlmz
   root@urad:~#   adduser esryrlmz root
   root@urad:~#  adduser esryrlmz sudo

         Yetki dosyasını düzenleyebilmek için vimin kurulu olması gerekiyor. Bunun için gerekli araçları kuralım.

  root@urad:~# apt-get install sudo mc vim openssh-client resolvconf fail2ban logrotate automysqlbackup etckeeper

  Yetki dosyasını vimle açıp düzenleyelim. Vimle ilgili kısa not:
        Belgeden çıkmak için esc tuşuna bas+ ':'+ 
                      wq => yaz ve çık 
                      wq!=>zorla yaz ve çık

                      q=>çık
                      q!=> zorla çık

  root@urad:~# vim /etc/sudoers

  Dosyayı aşağıdaki gibi düzeltip wq ile çıkalım.
 Sunucudan çıkış yapıp yerelde configürasyon dosyasını düzenleyelim.

   esryrlmz@esryrlmz:~$ vim ~/.ssh/config

 Bundan sonra rootla girmek için ssh esryrlmz@urad  , kullanıcıyla girmek için ssh urad kullanabiliriz. 

Github SSH Ayarı

esryrlmz@esryrlmz:~$ ls -al ~/.ssh
esryrlmz@esryrlmz:~$ ssh-keygen -t rsa -b 4096 -C "esryrlmz@gmail.com"
       
        Gelen komutları Enter ile geçelim

esryrlmz@esryrlmz:~$ eval "$(ssh-agent -s)"
esryrlmz@esryrlmz:~$ ssh-add ~/.ssh/id_rsa
esryrlmz@esryrlmz:~$ mc
      
    esryrlmz>.ssh>id_rsa.pub > "f3" Gelen ekrandaki sifrenin tamamını kopyala(ctrl+shift+c)>"f3"> github sayfasındaki settings>ssh keys> add ssh keys> Key kısmına kopyaladığımız şifreyi yazıp "kaydet"

esryrlmz@esryrlmz:~$ ssh -T git@github.com

        Gelen komuta "yes" yazalım
 
 Sonuc Böyleyse Ssh key ekleme tamamlandı.
 "Hi username! You've successfully authenticated, but GitHub does not provide shell access."

19/x ile gerekli programların kurulması

  Github hesabında 19/x deposunun fork edilmiş olması gerekmektedir. Fork edilmediyse: https://github.com/19/x

   Kendi hesabınızdaki 19/x deposundaki branch:master olan seçili alanı gh_pages olarak değiştirin. Gelen index sayfasını raw ile açın ve linkini kopyalayın(sembolik =19xlink)

   root@urad:~# wget 19xlink 
    root@urad:~# bash x
  

Kurulum bitince ;    root@urad:~#  x

Gelen ekrandan >Yönetim Görevleri>
                      - Web Sunucusu
                      - Rails sunucu
                      - Veri tabanı sunucusunu(mysql) kur


.Conf Klasörü

Yerelde mc ile projenizin ana dizinine gidin eğer .conf klasörü yoksa buradan klasörü indirim proje ana dizinine çıkartın daha sonra tekrar mc ile girip bakın .conf kalsörü içinde nginx configürasyon dosyaları olmalı.  



Veri tabanı BackUp 

esryrlmz@esryrlmz:~$ mysqldump -u root -p --databases db_urad > /home/esryrlmz/urad/db.sql
esryrlmz@esryrlmz:~$ cd urad
esryrlmz@esryrlmz:~/urad$ git add .
esryrlmz@esryrlmz:~/urad$ git commit -m "."
esryrlmz@esryrlmz:~/urad$ git push origin master


Github Rails Proje Clon

- mc ile anadizine gel (açılan ekranın bir üst dizini)
- srv  klasorünü gir
  
   
root@urad:/srv# mkdir   /www/178.62.110.33/
root@urad:/srv/www/178.62.110.33#  git clone git@github.com:esrayorulmaz/urad.git site

İşlem bitince exit ile mc den çıkalım


Ek Kurulumlar 

Nokogiri:                           root@urad:~# sudo apt-get install libxslt-dev libxml2-dev 
Mysql bağımlılığı:             root@urad:~# sudo apt-get install libmysql-ruby libmysqlclient-dev
Rmagick bağımlılığı          root@urad:~# sudo apt-get install libmagickwand-dev imagemagick
Passenger bağımlılığı:      root@urad:~#  sudo apt-get install libcurl4-openssl-dev

Diğer                                 root@urad:~# sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion libcurl4-openssl-dev  

Veri tabanı Restore


root@urad:~# mysql -u root -p    
mysql> create database db_urad
root@urad:/srv/www/178.62.110.33/site#  mysql -u root -p db_urad<db.sql  

Rails Proje komutları

root@urad:/srv/www/178.62.110.33/site#  bundle install
root@urad:/srv/www/178.62.110.33/site#  RAILS_ENV=production bundle exec rake db:migrate
root@urad:/srv/www/178.62.110.33/site#  RAILS_ENV=production bundle exec rake db:seeds
root@urad:/srv/www/178.62.110.33/site#  RAILS_ENV=production bundle exec rake essets:precompile

Ek Kurulumlar 
  
root@urad:/srv/www/178.62.110.33/site#  sudo apt redis-server
root@urad:/srv/www/178.62.110.33/site#  sudo gem install resque
root@urad:/srv/www/178.62.110.33/site#  sudo gem install redis
root@urad:/srv/www/178.62.110.33/site#  bundle exec RAILS_ENV=production PIDFILE=./tmp/resque.pid BACKGROUND=yes QUEUE="*" rake resque:work --trace >> log/worker1.log //*
-bash: log/worker1.log: No such file or directory




Dosya Sahipliği

root@urad:~# chown -R www-data:www-data /srv/www/rsdev.uzem.omu.edu.tr/site/  
 
Nginx ve passenger Kurulumu


root@urad:~# sudo gem install passenger
root@urad:~# sudo passenger-install-nginx-module



 "Enter"
 "Enter"
 Gelen Ekranda  "Yes: downloud ..." ile baslayan 1 i seçip enterla devam ediyoruz
Sonrasında gelen ekranlarıda "Enter" tuşuna basarak devam edip kurulumu bitirelim

Not: Hata ile karsılasırsanız, buyuk bi ihtimal sunucunuzdaki boyut ile alakalıdır. 1 MB lık server açtıysanız muhtemelen hata verecektir. Digitaloceansa giderek serverı kapatıp boyutunu ayarlayıp tekrar acın ve nginx kurulumuna bastan başlayın.

Not: Ana dizinde opt/nginx/ klasörü boşsa kurulum olmamıştır. Kurulumu tekrar deneyin

Sembolik Bağlar 


1- /srv/www/178.62.110.33/site/.conf/etc/nginx.conf dosyasını kendi proje ayarlarınızla güncelledikten sonra /opt/nginx/conf yoluna aktarın   

2. /etc/nginx/ yoluna mc ile gelerek;
      root@urad:/srv/www/178.62.110.33/site/.conf/etc# ln -s /etc/nginx  /opt/nginx/conf
3. /usr/sbin/nginx  binary dosyasını kaldır (rm -rf nginx) 
4. root@urad:/opt/nginx/sbin/nginx/# ln -s /opt/nginx/sbin/nginx  /usr/sbin/nginx
5. config dosyasında bulunan htpp içerisinde bulunan passenger_root ve passenger ruby de bulunan versiyon numaralarının uyumlu olması gerekli sistemdeki versiyon numarası buraya yazılmalı 
6. app/.conf/etc/ yolunda yer alan resque dosyasını etc/init.d/resque  dosyasına kopyalayın(f5)

Server Çalıştırma

 
root@urad:~# killall nginx
  Proje içerisindeki  /tmp klasörüne gir
root@urad:/srv/www/178.62.110.33/site/tmp# touch restart.txt
root@urad:~# sudo service nginx start


Çalışan proses         root@urad:~# ps aux | grep nginx
çalışma log:                root@urad:~# tail -f production.log