Làm thế nào để mọi người triển khai/phiên bản cronjobs kiểm soát sản xuất? Tôi tò mò về quy ước/tiêu chuẩn mọi người sử dụng hơn bất kỳ giải pháp cụ thể, nhưng tôi xảy ra được sử dụng git cho kiểm soát sửa đổi, và cronjob đang chạy một kịch bản python/django.Làm thế nào để bạn triển khai các công việc cron vào sản xuất?
Trả lời
Nếu bạn đang sử dụng Fabric cho deploment bạn có thể thêm một chức năng chỉnh sửa crontab của bạn.
def add_cronjob():
run('crontab -l > /tmp/crondump')
run('echo "@daily /path/to/dostuff.sh 2> /dev/null" >> /tmp/crondump')
run('crontab /tmp/crondump')
Điều này sẽ nối thêm một công việc vào crontab của bạn (từ chối trách nhiệm: hoàn toàn chưa được kiểm chứng và không phải là rất đáng giá).
Lưu crontab vào tempfile.
Nối một dòng vào tệp tmpfile.
Viết lại crontab.
Đây không phải là chính xác những gì bạn muốn làm nhưng dọc theo những dòng bạn có thể nghĩ về kiểm tra crontab vào git và ghi đè lên máy chủ với mọi triển khai. (Nếu có một người sử dụng dành riêng cho dự án của bạn.)
Bạn có thể sử dụng một cái gì đó giống như cfengine/Chef cho việc triển khai (nó có thể triển khai tất cả mọi thứ - bao gồm các công việc cron)
Tuy nhiên, nếu bạn hỏi câu hỏi này - nó có thể là bạn có nhiều máy chủ sản xuất, mỗi máy chủ chạy số lượng lớn các công việc theo lịch trình. Nếu đây là trường hợp, bạn có thể muốn một công cụ không chỉ triển khai công việc mà còn theo dõi lỗi thành công, cho phép bạn dễ dàng xem nhật ký từ lần chạy cuối cùng, chạy thống kê, cho phép bạn dễ dàng thay đổi lịch biểu cho nhiều công việc và máy chủ cùng một lúc (do bảo trì theo kế hoạch ...), v.v.
Tôi sử dụng công cụ thương mại có tên "UC4". Tôi không thực sự khuyên bạn nên nó, vì vậy tôi hy vọng bạn có thể tìm thấy một chương trình tốt hơn có thể giải quyết cùng một vấn đề. Tôi chỉ nói rằng việc quản lý công việc không kết thúc khi bạn triển khai chúng.
Nếu bạn đang sử dụng Django, hãy xem jobs system from django-command-extensions.
Lợi ích là bạn có thể giữ công việc của mình bên trong cấu trúc dự án, với điều khiển phiên bản, viết mọi thứ bằng Python và chỉ định cấu hình crontab một lần.
Sử dụng Fabric, tôi muốn giữ phiên bản nguyên sơ của crontab tại địa phương, theo cách đó tôi biết chính xác những gì đang được sản xuất và có thể dễ dàng chỉnh sửa các mục nhập ngoài việc thêm chúng.
Các kịch bản tôi sử dụng vải trông giống như thế này (một số mã redacted ví dụ chăm sóc bản sao lưu):
def deploy_crontab():
put('crontab', '/tmp/crontab')
sudo('crontab < /tmp/crontab')
tôi sử dụng Buildout để quản lý các dự án Django của tôi. Với Buildout, tôi sử dụng z3c.recipe.usercrontab
để cài đặt các công việc cron khi triển khai hoặc cập nhật.
Có 3 tùy chọn triển khai thủ công crontab nếu bạn không thể kết nối hệ thống của mình với hệ thống quản lý cấu hình như cfengine/con rối.
Bạn chỉ có thể sử dụng crontab -u user -e nhưng bạn có nguy cơ bị lỗi khi sao chép/dán.
Bạn cũng có thể sao chép tệp vào thư mục cron nhưng không có kiểm tra cú pháp cho tệp và trong linux, bạn phải chạy chạm/var/spool/cron để thu thập các thay đổi.
Lưu ý Mọi người sẽ quên lệnh chạm tại một số điểm.
Theo kinh nghiệm của tôi, phương pháp này là cách thủ công yêu thích triển khai crontab của tôi.
diff /var/spool/cron/<user> /var/tmp/<user>.new
crontab -u <user> /var/tmp/<user>.new
Tôi nghĩ phương pháp tôi đã đề cập ở trên là tốt nhất vì bạn không gặp rủi ro sao chép/dán lỗi giúp bạn duy trì tính nhất quán với tệp được kiểm soát phiên bản của mình. Nó thực hiện kiểm tra cú pháp của các tác vụ cron bên trong tệp, và bạn sẽ không cần phải thực hiện lệnh cảm ứng như bạn muốn nếu bạn chỉ đơn giản là sao chép tệp.
Từ 'triển khai' có nghĩa là một quá trình hoàn toàn tự động. Không bao giờ nên có bất kỳ chạm tay thủ công nào, cũng không phải là sự khác biệt để kiểm tra những gì đang thay đổi. Một lệnh duy nhất làm toàn bộ điều, thời gian. (ví dụ: "triển khai dàn dựng fab: v1.23") –
Bạn cũng có thể có một cái nhìn tại địa chỉ:
http://django-fab-deploy.readthedocs.org/en/0.7.5/_modules/fab_deploy/crontab.html#crontab_update
mô-đun django-fab-triển khai có một số kịch bản thuận tiện bao gồm crontab_set và crontab_update
Có dự án của bạn dưới sự kiểm soát phiên bản, bao gồm mật khẩu crontab.txt, là những gì tôi thích. Sau đó, với Fabric, nó cũng đơn giản như thế này:
@task
def crontab():
run('crontab deployment/crontab.txt')
này sẽ cài đặt các nội dung của deployment/crontab.txt
để crontab của người dùng mà bạn kết nối với máy chủ. Nếu bạn không có dự án hoàn chỉnh của mình trên máy chủ, trước tiên bạn muốn put
tệp crontab.
- 1. Làm thế nào để bạn triển khai một ứng dụng Happstack để sản xuất?
- 2. Làm thế nào để triển khai API phun của tôi vào sản xuất?
- 3. Tại sao các nhà phát triển không thể triển khai trực tiếp vào sản xuất?
- 4. Cách thêm công việc cron vào linux
- 5. Làm thế nào để triển khai Rails trong chế độ sản xuất?
- 6. Các phương pháp hay nhất để triển khai các công cụ và tập lệnh vào sản xuất?
- 7. Làm thế nào để triển khai các ứng dụng PHP của bạn một cách chính xác?
- 8. Làm thế nào để triển khai sản xuất với mã khuôn khổ thực thể đầu tiên
- 9. Triển khai máy chủ Node.js sản xuất
- 10. Làm thế nào để bạn xử lý việc triển khai các ứng dụng đường ray với các mô-đun con?
- 11. Công ty của bạn triển khai phần mềm của công ty như thế nào?
- 12. Chạy một công việc Cron
- 13. Tạo công việc Cron trong C#
- 14. Công việc Cron không chạy (trong dev)
- 15. Làm thế nào để triển khai Scrum?
- 16. Công việc Cron trong symfony2
- 17. Làm thế nào để bạn triển khai các ứng dụng django cho các cửa sổ?
- 18. Việc triển khai các ứng dụng .NET so với việc triển khai các ứng dụng web Java như thế nào?
- 19. Làm thế nào để có được $ base_url của Drupal để làm việc trên một công việc cron?
- 20. Tôi làm cách nào để triển khai công cụ đề xuất?
- 21. Playframework 2.1.1 triển khai trên máy chủ sản xuất
- 22. Triển khai Django: Bạn làm như thế nào?
- 23. Làm thế nào để bạn triển khai một trang web cho máy chủ web của bạn?
- 24. Làm thế nào để đảm bảo triển khai TeamCity thông qua dịch vụ Triển khai Web?
- 25. Làm thế nào để triển khai mã bitbucket của tôi dễ dàng đến máy chủ sản xuất của tôi
- 26. Làm thế nào tôi có được một công việc cron để chạy mỗi 30 phút?
- 27. Rails: là hành khách độc lập phù hợp cho việc triển khai sản xuất?
- 28. công việc cron magento và bảng cron_scheduler
- 29. Bất kỳ đề xuất nào cho việc triển khai quy trình làm việc của đường ray?
- 30. Capistrano triển khai dàn dựng và sản xuất
Thực tế, sử dụng lệnh chắp thêm của Vải không phải là không có giá trị nếu bạn sửa đổi dòng cron. Bạn sẽ kết thúc với dòng cũ cộng với dòng mới. – Dave
Tôi đã phải thêm cú pháp để liệt kê crontab khi tạo/tmp/crondump, nếu không nó sẽ bị treo (trên Ubuntu atleast). (ví dụ: 'crontab -l>/tmp/crondump') – joet3ch
Tôi đang sử dụng phương pháp này để cài đặt crontab trên máy chủ sản xuất của mình nhưng nó không hoạt động. Nó không có gì, mặc dù khi tôi 'SSH' vào máy chủ và kiểm tra' crontab -l', mọi thứ có vẻ ổn. Tôi đã nhận thấy rằng nếu tôi chỉnh sửa nó với 'crontab -e', ngay cả khi tôi chỉ thêm một khoảng trống vô nghĩa, khi tôi lưu tệp, nó nói" cài đặt crontab mới "và sau đó nó bắt đầu hoạt động. Bất kỳ ý tưởng tại sao điều này xảy ra? –