2010�N06��06��

Capistrano�ɂ��f�v���C�‹��̍\�z

�T�[�o���̕K�v�ȃ\�t�g�͂��������C���X�g�[�����I������BPostfix�͕K�v�ɂȂ��������邱�Ƃɂ���B ���ꂩ��́A���[�J���̃}�V���iWinXP�j��Rails�A�v�����J�����A��������̃T�[�o�Ō��J����Ƃ����`��ڎw���āA apache2�̃o�[�`�����z�X�g�‹��ACapstrano�ɂ��Deploy�‹�������Ă������Ƃɂ���B

������������ǁA����ȗ���ł܂Ƃ߂Ă���B

  1. ��{�I�ȍl�����̐���
  2. �t�@�C���z�u�̌���
  3. �o�[�`�����z�X�g�̐ݒ�i�T�[�o�j
  4. �e�X�g�A�v���쐬�i���[�J���j
  5. Capistrano�̐ݒ�i���[�J���j
  6. ���|�W�g���̍쐬�i�T�[�o�j
  7. �f�v���C�̏����i�T�[�o�j
  8. �f�v���C�i���[�J���j
  9. �u���E�U���猩�Ă݂�i���[�J���j

��{�I�ȍl�����̐���

�܂��A���p�`�Ԃ�z�肵�Ă݂�B

  • ������Rails�A�v���𑖂点��\��
  • �l���������̂ŁASSL�𓱓��B
  • git���|�W�g���͂��̃T�[�o��ɒu��ssh�ŃA�N�Z�X
  • Deploy��Capistrano���g��

SSL�ؖ�����‚ŕ����̃A�v���𑖂点�悤�ƍl���Ă���̂ŁA�T�u�h���C�������ł͂Ȃ��A���̂悤�Ȋ�����URL�Œ񋟂��邱�Ƃɂ���B

  • http://www.foo.com/app1/..
  • http://www.foo.com/app2/..

�t�@�C���z�u�̌���

CentOS��httpd(apache2)��suexec�Ƃ����̂��@�\���Ă���炵���A�����/var/www/�ȊO�� �A�v����u�����ꍇ�A������cgi�̗��p�ɐ����������邻�����Brails���ǂ����͂킩��Ȃ�����ǁA �f���ɂ����̉��ɒu�����Ƃɂ���B��L�̊�{�I�l�����𓥂܂��A�t�@�C���z�u�͎��̂悤�ɂ���B


�� git repository�@�@����͂ǂ��ł��悢
/home/foo/projects/app1.git
/home/foo/projects/app1.git
...

�� capistrano��deploy����Ƃ���
/var/www/html/rails_apps/app1
/var/www/html/rails_apps/app2
...

�� Document Root
/var/www/html/public
�@�����ɃV���{���b�N�����N��u���B
  app1 -> /var/www/html/rails_apps/app1/current/public
  app2 -> /var/www/html/rails_apps/app2/current/public
  ...

�e�X�g�A�v���̌��J��ڎw����

���ۂɃe�X�g�A�v�����쐬���A�f�v���C�A���J�܂ł���Ă݂�B����͎��̒ʂ�B

  1. �o�[�`�����z�X�g�̐ݒ�
  2. ���[�J���ŁA�e�X�g�A�v�����쐬
  3. capistrano��deploy.rb���쐬
  4. �T�[�o���git���|�W�g����push
  5. �f�v���C�̏���
  6. �f�v���C
  7. �u���E�U�ŃA�N�Z�X

�o�[�`�����z�X�g�̐ݒ�

welcome�Ƃ����A�v�������J���邱�Ƃɂ��悤�BPhusion Passenger users guide�́u3.2. Deploying to a sub URI�v���Q�l�ɁA /etc/httpd/conf/httpd.conf�̖����Ɉȉ����L�q����B


<VirtualHost *:80>
  ServerName  my.domain.name�@# �����̃T�[�o������������
  DocumentRoot /var/www/html/public
  <Directory /var/www/html/public&gr;
    Allow from all
  </Directory>

  RailsBaseURI /welcome
  <Directory /var/www/html/public/welcome>
    Options -MultiViews
  </Directory>
</VirtualHost>

�����āAhttpd���ċN��


# /etc/init.d/httpd restart

���[�J���ŁA�e�X�g�A�v�����쐬

scaffold�ŊȒP��CRUD�܂ō���Ă��炢�܂��B


> rails welcome
> cd welcome
> ruby ./script/generate scaffold posts title:string body:text

git�ɂԂ�����ł����܂��B


> git init
> git add .
> git commit -m initial_import

Capistrano�̐ݒ�

���łɃ��[�J����Capistorano�̓C���X�g�[������Ă�����̂Ƃ��܂��B


> cd welcome
> capify .

config\deploy.rb��ҏW���܂��B:user, :port, :git_server, :web, :app, :db�͎����� �‹��ɏ����������ƁB


# config/deploy.rb�̓��e
set :user, "foo"
set :port, 30000
set :git_server, "my.domain.com"

set :application, "welcome"
set :repository,  "ssh://#{git_server}:#{port}/~#{user}/projects/#{application}.git"

set :scm, :git
# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none`

set :deploy_to, "/var/www/html/rails_apps/#{application}"
set :use_sudo, false

role :web, "my.domain.com"                          # Your HTTP server, Apache/etc
role :app, "my.domain.com"                          # This may be the same as your `Web` server
role :db,  "my.domain.com", :primary => true # This is where Rails migrations will run
#role :db,  "your slave db-server here"

# If you are using Passenger mod_rails uncomment this:
# if you're still using the script/reapear helper you will need
# these http://github.com/rails/irs_process_scripts

namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end
end

������R�~�b�g�������B


> git push

�T�[�o���git���|�W�g�����쐬

�T�[�o���bare���|�W�g�������܂��B


$ cd ~/
$ mkdir projects
$ mkdir projects/welcome.git
$ cd projects/welcome.git
$ git init --bare

�����Ƀ��[�J������push�B�h���C�����A�|�[�g�ԍ��i30000�j�A���[�U���͎����̂��̂ɕύX���邱�ƁB


> git push ssh://my.domain.com:30000/~foo/projects/welcome.git master

�N���[���łƂ��Ă��āA�m�F���܂��B


> cd ..
> git clone ssh://my.domain.com:30000/~foo/projects/welcome.git welcome-clone
> diff -x .git -ru welcome welcome-clone
  �� ��f�B���N�g��������Ή����o�Ă��邩���B�B�B
  �� �ǂ���΁A�N���[�������̂�����̍�ƃf�B���N�g���Ƃ���
> rm -rf welcome
> mv welcome-clone welcome

�f�v���C�̏���

�f�v���C����Ƃ���̃f�B���N�g��������Ă����B��ʃ��[�U�ł͍쐬�ł��Ȃ��̂ŁAroot�����ō쐬���A ���L�҂�ݒ肵�����B���`�A�߂�ǂ����B


$ sudo su
# cd /var/www/html
# mkdir public
# chown -R daemon:foo public
# mkdir rails_apps
# chown -R daemon:foo rails_app
# ln -s /var/www/html/rails_apps/welcome/current/public /var/www/html/public/welcome

���ƁA����͍��������ł悢���Ƃ����A�T�[�o��ŃT�[�o���g�Ɍ��J����ssh���O�C�����Ă����K�v������B Capistrano���T�[�o��ŃT�[�o���git���|�W�g������clone����Ƃ��ɁAssh�v���g�R�����g�p���邩�炾�B ����܂���������Ă��Ȃ������̂ŁA����Ă��܂��B


$ ssh-keygen -t rsa
$ cat ~foo/.ssh/id_rsa.pub >> ~foo/.ssh/authorized_keys
$ ssh -p 30000 [email protected]

�f�v���C

���悢��f�v���C���܂��B�ŏ��̃f�v���C�̎��͂Q�i�K�ōs���A�܂�Capistrano�̃f�B���N�g���\�� ���쐬���A���ɃA�v���̃t�@�C�������|�W�g������擾���āA��migration�����s�iproduction�‹��Łj���A�T�[�o�� �ċN�����܂��B��������[�J������ȒP�ɂł���̂�����A���܂��̂ł��B

���Ȃ݂ɁA�A�v���X�V��̃f�v���C�́Agit��push������Acap deploy�Ŋ����B


> cap deploy:setup  # ���i�K
> cap deploy:cold   # ���i�K

�u���E�U���猩�Ă݂�

http://my.domain.com/welcome/posts���u���E�U�ŊJ���āA�uListing posts�v�Ƃ�����scaffold�� �����ꂽ��ʂ��o�Ă���ΐ����ł��B

���ĊȒP�����ɏ����Ă��邯��ǁA���ۂ͋�J�����Ȃ��B���x���C���X�g�[������������A�o�[�`�����z�X�g�� �ݒ�����s���낵����B�������B�������ق߂Ă��������B�Ȃ񂩁ACentOS���Ă���BSlicehost�̎��� Ubuntu����������Ƃ��Ă��ȒP�������̂ɁB

posted by teo at 14:21| Comment(0) | TrackBack(0) | �T�[�o | ̃uO̓ǎ҂ɂȂ | XV`FbN
���̋L���ւ̃R�����g
�R�����g������
�����O: [�K�{����]

���[���A�h���X:

�z�[���y�[�W�A�h���X:

�R�����g: [�K�{����]

�F�؃R�[�h: [�K�{����]


���摜�̒��̕����𔼊p�œ��͂��Ă��������B
���u���O�I�[�i�[�����F�����R�����g�̂ݕ\������܂��B

���̋L���ւ̃g���b�N�o�b�N