2008-11-29 32 views
19

Làm cách nào để tôi thực hiện việc này?Sử dụng Capistrano để triển khai (trang web không phải Rails) qua FTP?

Tôi có trang web chủ yếu là tĩnh, được lưu trữ trên máy chủ web giá rẻ, chỉ cho phép truy cập FTP vào lưu trữ. Trang web được theo dõi trong git. Tôi đang sử dụng OS X.

tôi muốn tải lên một phiên bản mới của trang web bằng cách đơn giản làm cap deploy

Trả lời

16

Chúng tôi sử dụng capistrano để triển khai trang web của chúng tôi mà được viết bằng PHP.

Từ bộ nhớ (Tôi hiện không làm việc), chúng tôi quá tải triển khai và sử dụng rsync để đồng bộ hóa trên sftp. Một cái gì đó như thế này:

desc "Sync" 
namespace :deploy do 

    desc "Sync remote by default" 
    task :default do 
    remote.default 
    end 

    namespace :remote do 

     desc "Sync to remote server" 
     task :default do 
      `rsync -avz "/path/to/webapp" "#{remote_host}:#{remote_root}/path/to/webapp"` 
     end 
    end 
end 

Tôi chắc chắn bạn có thể thay thế rsync bằng bất kỳ chương trình ftp nào và nó sẽ hoạt động tốt.

+5

Núi ftp với curlftpfs, rsync như hệ thống tập tin địa phương, unmount: 'curlftpfs ftp: // # {đăng nhập}: {# mật khẩu} @ # {} remote_host/path/mnt/mount_point && rsync -ruv - delete/project_path/mnt/mount_point && fusermount -u/mnt/mount_point' – r92

2

Tôi đã không thử nó với capistrano, nhưng trong kịch bản shell của riêng tôi, tôi đã luôn luôn sử dụng weex

(http://weex.sourceforge.net/)

để triển khai các trang web qua FTP. Hãy tưởng tượng bạn có thể hack nó lên với capistrano quá.

Nó giữ bộ nhớ cache cục bộ trạng thái của máy chủ FTP sao cho nó chỉ có thể tải lên các tệp đã thay đổi. Điều này là tốt, ồ ạt tăng tốc độ mọi thứ ... nhưng (rõ ràng?), Nó sẽ đi sai nếu mã của bạn/công cụ khác được thay đổi thông qua một số phương tiện khác. Vì vậy, nó có thể được thực hiện không làm điều này nếu cần thiết.

Các vấn đề liên quan