Thứ tư, 26/02/2014 | 00:00 GMT+7

Cách tự động hóa quy trình triển khai ứng dụng PHP bằng Capistrano trên Ubuntu 13

Việc phát triển ứng dụng web hiện đại chủ yếu dựa vào các khuôn khổ. Những bộ thư viện được chuẩn bị sẵn này làm cho việc lập trình thực tế trở nên dễ dàng hơn rất nhiều, không giống như những ngày trước. Họ cung cấp các công cụ khác nhau, từ xác thực đến mã hóa, xử lý cookie và phiên đến tải file lên.


Bất chấp sự phổ biến của ngôn ngữ lập trình PHP và nhiều khung công tác tuyệt vời của nó, vẫn có những thách thức tốn thời gian khiến các nhà phát triển không còn những điều thú vị khi tạo ra trang web (hoặc API) mà họ mơ ước.

Trong bài viết DigitalOcean này, tiếp theo Dòng công cụ tự động hóa Capistrano của ta , ta sẽ xem cách giới thiệu một khuôn khổ (hoặc công cụ) nhỏ khác, lần này để giúp bạn đẩy mã lên server của bạn mà không cần xử lý với trình quản lý file SFTP - một cách tự động!

Bảng chú giải


1. Capistrano Trong Tóm tắt


2. Lấy Ruby Interpreter And Capistrano


  1. Trình thông dịch viên Ruby
  2. Capistrano

3. Chuẩn bị Server Triển khai


  1. Tạo user và group triển khai
  2. Tạo Thư mục Triển khai Ứng dụng
  3. Cài đặt PHP và Nginx

4. Chuẩn bị các ứng dụng PHP để triển khai tự động


  1. Khởi tạo Git
  2. Khởi tạo Capistrano
  3. Cấu hình triển khai Capistrano
  4. Cấu hình production với Capistrano
  5. Triển khai tới server production

5. Khắc phục sự cố


Lưu ý: Mặc dù ta sẽ thấy cách download và cài đặt các phụ thuộc cần thiết cho Capistrano (ví dụ: Ruby 2.1.0 ) để tự động hóa quá trình triển khai, bài viết này giả định bạn đã có sẵn server triển khai của bạn với cài đặt trang web đang hoạt động, trực tuyến trên server cloud Ubuntu 13.

Capistrano Trong Tóm tắt


Capistrano là một công cụ quản lý server (hoặc triển khai) dựa trên ngôn ngữ lập trình Ruby. Sử dụng Capistrano, các chức năng và thủ tục tùy ý có thể được thực hiện trên server ảo mà không bị can thiệp trực tiếp bằng cách để Capistrano thực thi một tập lệnh (tức là một công thức) với tất cả các hướng dẫn được liệt kê. Theo nghĩa chung, công cụ này có thể được coi là một trợ lý triển khai rất riêng của nhà phát triển, giúp thực hiện hầu hết mọi thứ từ việc lấy mã trên máy từ xa đến khởi động toàn bộ quy trình trực tuyến.

Ban đầu được viết để giúp triển khai khung công tác Rails, với version mới nhất của nó, Capistrano 3 hiện được dùng với (và cho) hầu hết mọi thứ, bao gồm cả PHP.

Lưu ý: Nếu bạn muốn tìm hiểu thêm về Capistrano và Ruby, hãy xem bài viết của ta về chủ đề: Cách sử dụng Capistrano để triển khai tự động: Bắt đầu .

Bắt phiên dịch viên Ruby và Capistrano


Trình thông dịch viên Ruby


Trên máy phát triển PHP của bạn , bạn cần phải có trình thông dịch Ruby mới nhất để chạy Capistrano. Hướng dẫn bên dưới, giải thích cách tải Ruby trên VPS Ubuntu, thực sự là một bản tóm tắt nhanh về hướng dẫn chi tiết của ta : Chuẩn bị server Ubuntu 13 để chạy Ruby 2.1.0 .

# Update the software sources list # And upgrade the dated applications:  aptitude    update aptitude -y upgrade  # Download and install the build-essential package: aptitude install -y build-essential  # And some additional, commonly used tools: aptitude install -y cvs subversion git-core libyaml-dev mercurial  # Get the Ruby Version Manager curl -L get.rvm.io | bash -s stable  # And to create a system environment with RVM: source /etc/profile.d/rvm.sh  # Download and install Ruby using RVM: rvm reload rvm install 2.1.0 

Capistrano


Sau khi Ruby được cài đặt, Capistrano có thể được cài đặt bằng trình quản lý gói RubyGems mặc định của Ruby.

Chạy lệnh sau để download và cài đặt Capistrano 3 bằng gem :

gem install capistrano --no-ri --no-rdoc 

Chuẩn bị Server Triển khai


Là một công cụ tự động hóa hoàn thiện, Capistrano được xây dựng với tính ổn định và bảo mật. Để sử dụng nó để triển khai các ứng dụng web PHP của bạn, trước tiên ta cần thực hiện một số công việc trên server triển khai, ví dụ: tạo một group user cho Capistrano sử dụng để kết nối với nó.

Tạo user và group triển khai


Thêm một group user mới:

# Usage: sudo addgroup [group name] sudo addgroup www 

Tạo user mới và thêm vào group này:

# Create a new user: # Usage: sudo adducer [user name] sudo adduser deployer  # Follow on-screen instructions to user-related # information such as the desired password.  # Add the user to an already existing group: # Usage: sudo adducer [user name] [group name] sudo adduser deployer www 

Chỉnh sửa /etc/sudoers bằng cách sử dụng editor nano để cho phép user deployer sudo cho các triển khai trong tương lai:

nano /etc/sudoers 

Cuộn xuống file và tìm nơi root được xác định:

..  # User privilege specification root    ALL=(ALL:ALL) ALL  .. 

Nối phần sau ngay sau root ALL=(ALL) ALL :

deployer ALL=(ALL:ALL) ALL 

Phần này của file /etc/sudoers bây giờ sẽ trông giống như sau:

..  # User privilege specification root     ALL=(ALL:ALL) ALL deployer ALL=(ALL:ALL) ALL  .. 

Nhấn CTRL + X và xác nhận với Y để lưu và thoát.

Lưu ý: Để tìm hiểu thêm về SSH và sudo, hãy xem các bài viết của cộng đồng DigitalOcean về Cơ bản về Linux .

Tạo Thư mục Triển khai Ứng dụng


Trên server triển khai, ta cũng cần xác định và tạo folder chứa cơ sở mã PHP để web server chạy ứng dụng.

Tạo folder ứng dụng web www bên trong /var :

sudo mkdir /var/www 

Và đặt các quyền để làm cho nó truy cập vào web server (tức là Nginx):

# Set the ownership of the folder to members of `www` group sudo chown -R :www  /var/www  # Set folder permissions recursively sudo chmod -R g+rwX /var/www  # Ensure permissions will affect future sub-directories etc. sudo chmod g+s      /var/www 

Cài đặt PHP và Nginx


Nhiệm vụ của Capistrano là tự động hóa việc triển khai. Ta vẫn cần cài đặt PHP và NGinx - hoặc bất kỳ kết hợp web-server & thông dịch viên nào khác - để ứng dụng web của ta hoạt động.

Để chuẩn bị đầy đủ server triển khai để chạy các ứng dụng web PHP, hãy xem các bài viết sau:

  • Nginx, PHP và MySQL:

Cách cài đặt ngăn xếp Linux, nginx, MySQL, PHP (LEMP)

  • phpMyAdmin:

Cách cài đặt phpMyAdmin trên server LEMP

Chuẩn bị các ứng dụng PHP để triển khai tự động


Sau khi cài đặt xong Ruby và Capistrano trên server phát triển của bạn và thêm user triển khai trên máy triển khai, ta có thể xem cách “khởi tạo” Capistrano để bắt đầu với công cụ.

Lưu ý: Trong phần này, ta giả định mã nguồn ứng dụng web của bạn được đặt tại folder /home/developer1/my_app . Các lệnh sau cần được thực hiện từ bên trong .

# cd /path/to/your/app/on/dev/server cd /home/developer1/my_app 

Khởi tạo Git


Git là một hệ thống quản lý mã nguồn và công cụ xem lại thường được các nhà phát triển sử dụng. Capistrano kiểm soát và quản lý vòng đời ứng dụng cũng như quá trình triển khai của bạn thông qua repository Git.

Trong phần này, ta sẽ tạo một repository Git có thể truy cập tập trung, khởi tạo Git và tải lên dự án của bạn ở đó để Capistrano sử dụng trong quá trình triển khai.

Lưu ý: Để theo dõi phần này, bạn cần một account Github và một repository trống được tạo.

Thực thi các lệnh sau, tự giải thích bên trong folder chứa mã nguồn ứng dụng của bạn (ví dụ: my_app ) để khởi tạo một repository :

# !! These commands are to be executed on #    your development machine, from where you will #    deploy to your server. #    Instructions might vary slightly depending on #    your choice of operating system.  # Initiate the repository git init  # Add all the files to the repository git add .  # Commit the changes git commit -m "first commit"  # Add your Github repository link  # Example: git remote add origin git@github.com:[user name]/[proj. name].git git remote add origin git@github.com:user123/my_app.git  # Create an RSA/SSH key # Follow the on-screen instructions ssh-keygen -t rsa  # View the contents of the key and add it to your Github # by copy-and-pasting from the current remote session by # visiting: https://github.com/settings/ssh # To learn more about the process, # visit: https://help.github.com/articles/generating-ssh-keys cat /root/.ssh/id_rsa.pub  # Set your Github information # Username: # Usage: git config --global user.name "[your username]" # Email: # Usage: git config --global user.email "[your email]" git config --global user.name  "user123"     git config --global user.email "user123@domain.tld"  # Push the project's source code to your Github account git push -u origin master 

Lưu ý: Để tìm hiểu thêm về cách làm việc với Git, hãy xem hướng dẫn Cách sử dụng Git hiệu quả tại các trang cộng đồng DigitalOcean.

Khởi tạo Capistrano


Trong bước này, ta sẽ yêu cầu Capistrano tự động dàn dựng các file cấu hình và triển khai của nó bên trong folder dự án.

Chạy phần sau để bắt đầu (tức là cài đặt ) file Capistrano:

cap install  # mkdir -p config/deploy # create config/deploy.rb # create config/deploy/staging.rb # create config/deploy/production.rb # mkdir -p lib/capistrano/tasks # Capified 

Cấu hình triển khai Capistrano


Tệp config/deploy.rb chứa các đối số và cài đặt liên quan đến (các) server triển khai. Tại đây, ta sẽ cho Capistrano biết (các) server mà ta muốn kết nối và triển khai.

Chạy các bước sau để chỉnh sửa file bằng editor văn bản nano :

nano config/deploy.rb 

Thêm khối mã bên dưới, sửa đổi nó cho phù hợp với cài đặt của bạn :

# !! When editing the file (or defining the configurations), #    you can either comment them out or add the new lines. #    Make sure to **not** to have some example settings #    overriding the ones you are appending.  # Define the name of the application set :application, 'my_app'  # Define where can Capistrano access the source repository # set :repo_url, 'https://github.com/[user name]/[application name].git' set :scm, :git set :repo_url, 'https://github.com/user123/my_app.git'  # Define where to put your application code set :deploy_to, "/var/www/my_app"  set :pty, true  set :format, :pretty  # Set your post-deployment settings. # For example, you can restart your Nginx process # similar to the below example. # To learn more about how to work with Capistrano tasks # check out the official Capistrano documentation at: # http://capistranorb.com/  # namespace :deploy do #   desc 'Restart application' #   task :restart do #     on roles(:app), in: :sequence, wait: 5 do #       # Your restart mechanism here, for example: #       sudo "service nginx restart" #     end #   end # end 

Nhấn CTRL + X và xác nhận với Y để lưu và thoát.

Cấu hình production với Capistrano


Lưu ý: Tương tự như config/deploy.rb , bạn cần thực hiện một số sửa đổi đối với file config/production.rb . Tốt hơn bạn nên sửa đổi mã thay vì nối thêm khối bên dưới.

Chạy các bước sau để chỉnh sửa file bằng editor văn bản nano:

nano config/deploy/production.rb 

Nhập cài đặt server của bạn, tương tự như bên dưới:

# Define roles, user and IP address of deployment server # role :name, %{[user]@[IP adde.]} role :app, %w{deployer@162.243.74.190}  # Define server(s) # Example: # server '[your server's IP addr]', user: '[the deployer user]', roles: %w{[role names as defined above]} # server '162.243.74.190', user: 'deployer', roles: %w{app} server '162.243.74.190', user: 'deployer', roles: %w{app}  # SSH Options # See the example commented out section in the file # for more options. set :ssh_options, {     forward_agent: false,     auth_methods: %w(password),     password: 'user_deployers_password',     user: 'deployer', } 

Nhấn CTRL + X và xác nhận với Y để lưu và thoát.

Triển khai tới server production


Khi ta đã hoàn tất các cài đặt, đã đến lúc triển khai.

Chạy mã sau trên máy phát triển của bạn để triển khai tới server production . Như đã định nghĩa trong các file trên, Capistrano sẽ:

  • Kết nối với server triển khai

  • Download nguồn ứng dụng

  • Thực hiện các hành động triển khai

Khi tất cả các cài đặt đã hoàn tất, bạn có thể chạy lệnh sau để Capistrano triển khai nguồn ứng dụng của bạn từ server phát triển của bạn đến máy triển khai:

cap production deploy 

Và đó là nó! Bây giờ, bạn có thể xem Capistrano lấy mã của bạn trực tuyến và theo dõi cơ sở mã mới nhất của bạn.

Xử lý sự cố


Làm việc với Capistrano không phải lúc nào cũng dễ dàng như người ta tưởng. Thật không may, công cụ này thích phàn nàn thay vì hướng dẫn và tài liệu, ở giai đoạn hiện tại, có một chút hạn chế.

Để mọi thứ hoạt động trơn tru, hãy cố gắng:

  • Trùng với folder và tên repository .

  • Nhập mọi thứ một cách chính xác.

  • Đảm bảo rằng server phát triển và triển khai của bạn chứa tất cả các công cụ cần thiết (ví dụ: sqlite3, thư viện, v.v.).

  • Đảm bảo kiểm tra tất cả các hoạt động và thực thi theo cách thủ công trước khi yêu cầu Capistrano thực hiện chúng.

  • Cân nhắc triển khai phương pháp xác thực an toàn hơn theo các tài liệu chính thức của Capistrano.

Để tìm hiểu thêm về Capistrano và những gì nó có thể làm, hãy xem xét việc đọc [tài liệu Capistrano] (capistranorb.com/documentation).

<div class = “author”> Gửi bởi: <a
href = “https://twitter.com/ostezer”> Hệ điều hành Tezer </a> </div>


Tags:

Các tin liên quan

Cách triển khai ứng dụng Kohana PHP trên VPS Debian 7 / Ubuntu 13 với Nginx và PHP-FPM
2013-12-30
Cách cài đặt và thiết lập Kohana, Khung phát triển ứng dụng web PHP
2013-12-30
Cách tùy chỉnh MediaWiki bằng tệp LocalSettings.php
2013-09-16
Bắt đầu với Yii PHP Framework - Phần 2
2013-08-12
Cách lưu trữ các phiên PHP trong Memcached trên CentOS VPS
2013-08-05
Cách sử dụng Gmail hoặc Yahoo với chức năng PHP mail ()
2013-08-02
Cách tạo plugin Nagios với PHP trên Ubuntu 12.10
2013-04-29
Cách tạo plugin Nagios với PHP trên CentOS 6
2013-04-29