�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
- ��{�I�ȍl�����̐���
- �t�@�C���z�u�̌���
- �o�[�`�����z�X�g�̐ݒ�i�T�[�o�j
- �e�X�g�A�v���쐬�i���[�J���j
- Capistrano�̐ݒ�i���[�J���j
- ���|�W�g���̍쐬�i�T�[�o�j
- �f�v���C�̏����i�T�[�o�j
- �f�v���C�i���[�J���j
- �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
- �o�[�`�����z�X�g�̐ݒ�
- ���[�J���ŁA�e�X�g�A�v�����쐬
- capistrano��deploy.rb���쐬
- �T�[�o���git���|�W�g����push
- �f�v���C�̏���
- �f�v���C
- �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