Thứ ba, 14/04/2015 | 00:00 GMT+7

Cách triển khai một ứng dụng PHP cơ bản bằng Ansible trên Ubuntu 14.04

Hướng dẫn này trình bày quá trình cung cấp một ứng dụng PHP cơ bản bằng Ansible. Mục tiêu ở cuối hướng dẫn này là để web server mới của bạn phục vụ ứng dụng PHP cơ bản mà không cần kết nối SSH hoặc lệnh thủ công chạy trên Server đích.

Ta sẽ sử dụng khung Laravel làm ứng dụng PHP mẫu, nhưng các hướng dẫn này có thể dễ dàng sửa đổi để hỗ trợ các khung và ứng dụng khác nếu bạn đã có sẵn.

Yêu cầu

Đối với hướng dẫn này, ta sẽ sử dụng Ansible để cài đặt và cấu hình Nginx, PHP và các dịch vụ khác trên Ubuntu 14.04 Server. Hướng dẫn này dựa trên kiến thức Ansible cơ bản, vì vậy nếu bạn chưa quen với Ansible, bạn có thể đọc qua hướng dẫn cơ bản về Ansible này trước.

Để làm theo hướng dẫn này, bạn cần :

  • Một server Ubuntu 14.04 có kích thước bất kỳ mà ta sẽ sử dụng để cấu hình và triển khai ứng dụng PHP của ta . Địa chỉ IP của máy này sẽ được gọi là your_server_ip trong suốt hướng dẫn.

  • Một server Ubuntu 14.04 sẽ được sử dụng cho Ansible. Đây là Server mà bạn sẽ đăng nhập vào toàn bộ hướng dẫn này.

  • User không phải root Sudo được cấu hình cho cả Server.

  • Các SSH key cho Ansible Server để cho phép đăng nhập vào Server triển khai PHP, bạn có thể cài đặt khóa này theo hướng dẫn này trên Ansible Server của bạn .

Bước 1 - Cài đặt Ansible

Bước đầu tiên là cài đặt Ansible. Điều này có thể dễ dàng thực hiện bằng cách cài đặt PPA ( Repository cá nhân) và cài đặt gói Ansible với apt .

Đầu tiên, thêm PPA bằng cách sử dụng apt-add-repository .

  • sudo apt-add-repository ppa:ansible/ansible

Sau khi hoàn tất, hãy cập nhật bộ nhớ cache apt .

  • sudo apt-get update

Cuối cùng, cài đặt Ansible.

  • sudo apt-get install ansible

Sau khi Ansible được cài đặt, ta sẽ tạo một folder mới để làm việc và cài đặt cấu hình cơ bản. Theo mặc định, Ansible sử dụng một file server đặt tại /etc/ansible/hosts , chứa tất cả các server mà nó đang quản lý. Mặc dù file đó tốt cho một số trường hợp sử dụng, nhưng nó global , đó không phải là điều ta muốn ở đây.

Đối với hướng dẫn này, ta sẽ tạo một file server local và sử dụng file đó thay thế. Ta có thể thực hiện việc này bằng cách tạo một file cấu hình Ansible mới trong folder làm việc của bạn , file này ta có thể sử dụng để yêu cầu Ansible tìm kiếm file server trong cùng một folder .

Tạo một folder mới (mà ta sẽ sử dụng cho phần còn lại của hướng dẫn này).

  • mkdir ~/ansible-php

Di chuyển vào folder mới.

  • cd ~/ansible-php/

Tạo một file mới có tên ansible.cfg và mở nó để chỉnh sửa bằng nano hoặc editor yêu thích của bạn.

  • nano ansible.cfg

Thêm vào hostfile tùy chọn cấu hình với giá trị của hosts trong [defaults] group bằng cách sao chép những điều sau đây vào ansible.cfg file .

ansible.cfg
[defaults] hostfile = hosts 

Lưu file ansible.cfg . Tiếp theo, ta sẽ tạo file hosts , file này sẽ chứa địa chỉ IP của PHP Server nơi ta sẽ triển khai ứng dụng của bạn .

  • nano hosts

Sao chép phần bên dưới để thêm vào một phần cho php , thay thế your_server_ip bằng địa chỉ IP server của bạn và sammy bằng user không phải root có quyền sudo mà bạn đã tạo trong yêu cầu trên PHP Server của bạn .

server
[php] your_server_ip ansible_ssh_user=sammy 

Lưu file hosts . Hãy chạy một kiểm tra đơn giản đảm bảo Ansible có thể kết nối với server lưu trữ như mong đợi bằng cách gọi module ping trên group php mới.

  • ansible php -m ping

Bạn có thể nhận được kiểm tra xác thực server SSH, tùy thuộc vào việc bạn đã từng đăng nhập vào server đó chưa. Ping sẽ trở lại với một phản hồi thành công, trông giống như sau:

Đầu ra
111.111.111.111 | success >> {     "changed": false,     "ping": "pong" } 

Ansible hiện đã được cài đặt và cấu hình; ta có thể chuyển sang cài đặt web server của bạn .

Bước 2 - Cài đặt các gói bắt buộc

Trong bước này, ta sẽ cài đặt một số gói hệ thống bắt buộc bằng Ansible và apt . Đặc biệt, ta sẽ cài đặt git , nginx , sqlite3 , mcrypt và một vài php5-* .

Trước khi thêm module apt vào để cài đặt các gói ta muốn, ta cần tạo một playbook cơ bản. Ta sẽ xây dựng trên playbook này khi xem qua phần hướng dẫn. Tạo một playbook mới có tên là php.yml .

  • nano php.yml

Dán vào cấu hình sau. Hai dòng đầu tiên chỉ định group server mà ta muốn sử dụng ( php ) và đảm bảo nó chạy các lệnh với sudo theo mặc định. Phần còn lại thêm vào một module với các gói mà ta cần. Bạn có thể tùy chỉnh điều này cho ứng dụng của riêng mình hoặc sử dụng cấu hình bên dưới nếu bạn đang theo dõi cùng với ứng dụng Laravel mẫu.

--- - hosts: php   sudo: yes    tasks:    - name: install packages     apt: name={{ item }} update_cache=yes state=latest     with_items:       - git       - mcrypt       - nginx       - php5-cli       - php5-curl       - php5-fpm       - php5-intl       - php5-json       - php5-mcrypt       - php5-sqlite       - sqlite3 

Lưu file php.yml . Cuối cùng, chạy ansible-playbook để cài đặt các gói trên Server. Đừng quên sử dụng tùy --ask-sudo-pass nếu user sudo trên PHP Server yêu cầu password .

  • ansible-playbook php.yml --ask-sudo-pass

Bước 3 - Sửa đổi file cấu hình hệ thống

Trong phần này, ta sẽ sửa đổi một số file cấu hình hệ thống trên PHP Server. Tùy chọn cấu hình quan trọng nhất để thay đổi (ngoài các file của Nginx, sẽ được đề cập ở phần sau) là tùy chọn cgi.fix_pathinfo trong php5-fpm , vì giá trị mặc định là một rủi ro bảo mật.

Trước tiên, ta sẽ giải thích tất cả các phần mà ta sẽ thêm vào file này, sau đó bao gồm toàn bộ file php.yml để bạn sao chép và paste vào .

Mô-đun lineinfile được dùng đảm bảo giá trị cấu hình trong file chính xác như ta mong đợi. Điều này có thể được thực hiện bằng cách sử dụng một biểu thức chính quy chung chung để Ansible có thể hiểu hầu hết các dạng mà tham số có thể ở trong đó. Ta cũng cần khởi động lại php5-fpmnginx đảm bảo thay đổi có hiệu lực, vì vậy ta cần thêm hai trình xử lý cũng như trong phần handlers mới. Các trình xử lý là hoàn hảo cho việc này, vì chúng chỉ được kích hoạt khi nhiệm vụ thay đổi. Chúng cũng chạy ở cuối playbook, vì vậy nhiều tác vụ có thể gọi cùng một trình xử lý và nó sẽ chỉ chạy một lần.

Phần thực hiện ở trên sẽ như sau:

  - name: ensure php5-fpm cgi.fix_pathinfo=0     lineinfile: dest=/etc/php5/fpm/php.ini regexp='^(.*)cgi.fix_pathinfo=' line=cgi.fix_pathinfo=0     notify:       - restart php5-fpm       - restart nginx    handlers:     - name: restart php5-fpm       service: name=php5-fpm state=restarted      - name: restart nginx       service: name=nginx state=restarted 
Lưu ý: Lỗi Ansible version 1.9.1

Có một lỗi với Ansible version 1.9.1 ngăn không cho khởi động lại php5-fpm với module service , như ta đã sử dụng trong trình xử lý của bạn .

Cho đến khi bản sửa lỗi được phát hành, bạn có thể khắc phục sự cố này bằng cách thay đổi trình xử lý restart php5-fpm từ sử dụng lệnh service sang sử dụng lệnh shell , như sau:

    - name: restart php5-fpm       shell: service php5-fpm restart 

Điều này sẽ bỏ qua sự cố và khởi động lại php5-fpm một cách chính xác.

Tiếp theo, ta cũng cần đảm bảo module php5-mcrypt được bật. Điều này được thực hiện bằng cách chạy tập lệnh php5enmod với tác vụ shell và kiểm tra file 20-mcrypt.ini ở đúng vị trí khi nó được bật. Lưu ý ta đang nói với Ansible rằng tác vụ tạo ra một file cụ thể. Nếu file đó tồn tại, tác vụ sẽ không được chạy.

  - name: enable php5 mcrypt module     shell: php5enmod mcrypt     args:       creates: /etc/php5/cli/conf.d/20-mcrypt.ini 

Bây giờ, mở php.yml để chỉnh sửa lại.

  • nano php.yml

Thêm các việc và trình xử lý ở trên để file trùng với các việc bên dưới:

--- - hosts: php   sudo: yes    tasks:    - name: install packages     apt: name={{ item }} update_cache=yes state=latest     with_items:       - git       - mcrypt       - nginx       - php5-cli       - php5-curl       - php5-fpm       - php5-intl       - php5-json       - php5-mcrypt       - php5-sqlite       - sqlite3    - name: ensure php5-fpm cgi.fix_pathinfo=0     lineinfile: dest=/etc/php5/fpm/php.ini regexp='^(.*)cgi.fix_pathinfo=' line=cgi.fix_pathinfo=0     notify:       - restart php5-fpm       - restart nginx    - name: enable php5 mcrypt module     shell: php5enmod mcrypt     args:       creates: /etc/php5/cli/conf.d/20-mcrypt.ini    handlers:     - name: restart php5-fpm       service: name=php5-fpm state=restarted      - name: restart nginx       service: name=nginx state=restarted 

Cuối cùng, chạy playbook.

  • ansible-playbook php.yml --ask-sudo-pass

Hiện tại, Server đã cài đặt tất cả các gói cần thiết và cấu hình cơ bản đã được cài đặt và sẵn sàng hoạt động.

Bước 4 - Sao chép Kho lưu trữ Git

Trong phần này, ta sẽ sao chép repository framework Laravel vào Server của ta bằng Git. Giống như trong Bước 3, ta sẽ giải thích tất cả các phần mà ta sẽ thêm vào playbook, sau đó bao gồm toàn bộ file php.yml để bạn sao chép và paste vào .

Trước khi sao chép repository Git của bạn , ta cần đảm bảo /var/www tồn tại. Ta có thể làm điều này bằng cách tạo một tác vụ với module file .

- name: create /var/www/ directory   file: dest=/var/www/ state=directory owner=www-data group=www-data mode=0700 

Như đã đề cập ở trên, ta cần sử dụng module Git để sao chép repository vào Server của ta . Quá trình này rất đơn giản vì tất cả những gì ta thường yêu cầu đối với git clone là repository nguồn. Trong trường hợp này, ta cũng sẽ xác định đích và yêu cầu Ansible không cập nhật repository nếu nó đã tồn tại bằng cách đặt update=no . Vì ta đang sử dụng Laravel nên URL repository git mà ta sẽ sử dụng là https://github.com/laravel/laravel.git .

Tuy nhiên, ta cần chạy tác vụ với quyền là user www-data đảm bảo rằng các quyền là chính xác. Để làm điều này, ta có thể yêu cầu Ansible chạy lệnh với quyền là một user cụ thể bằng cách sử dụng sudo . Nhiệm vụ cuối cùng sẽ như thế này:

- name: Clone git repository   git: >     dest=/var/www/laravel     repo=https://github.com/laravel/laravel.git     update=no   sudo: yes   sudo_user: www-data 

Lưu ý : Đối với repository dựa trên SSH, bạn có thể thêm accept_hostkey=yes để ngăn việc xác minh server lưu trữ SSH bị treo tác vụ.

Như trước đây, hãy mở file php.yml để chỉnh sửa.

  • nano php.yml

Thêm các nhiệm vụ trên vào playbook; phần cuối của file phải trùng với phần sau:

...    - name: enable php5 mcrypt module     shell: php5enmod mcrypt     args:       creates: /etc/php5/cli/conf.d/20-mcrypt.ini    - name: create /var/www/ directory     file: dest=/var/www/ state=directory owner=www-data group=www-data mode=0700    - name: Clone git repository     git: >       dest=/var/www/laravel       repo=https://github.com/laravel/laravel.git       update=no     sudo: yes     sudo_user: www-data    handlers:     - name: restart php5-fpm       service: name=php5-fpm state=restarted      - name: restart nginx       service: name=nginx state=restarted 

Lưu và đóng playbook, sau đó chạy nó.

  • ansible-playbook php.yml --ask-sudo-pass

Bước 5 - Tạo ứng dụng với Composer

Trong bước này, ta sẽ sử dụng Composer để cài đặt ứng dụng PHP và các phụ thuộc của nó.

Composer có lệnh create-project cài đặt tất cả các phần phụ thuộc và sau đó chạy các bước tạo dự án được xác định trong phần post-create-project-cmd của file composer.json . Đây là cách tốt nhất đảm bảo ứng dụng được cài đặt chính xác cho lần sử dụng đầu tiên.

Ta có thể sử dụng tác vụ Ansible sau đây để download và cài đặt Composer trên phạm vi global dưới dạng /usr/local/bin/composer . Sau đó, bất kỳ ai sử dụng Server, kể cả Ansible đều có thể truy cập được.

- name: install composer   shell: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer   args:     creates: /usr/local/bin/composer 

Khi cài đặt Composer, có một module Composer mà ta có thể sử dụng. Trong trường hợp của ta , ta muốn cho Composer biết dự án của ta đang ở đâu (sử dụng tham số working_dir ) và chạy lệnh create-project . Ta cũng cần thêm tham số optimize_autoloader=no , vì cờ này không được lệnh create-project hỗ trợ. Giống như git , ta cũng muốn chạy lệnh này với quyền là user www-data đảm bảo quyền hợp lệ. Kết hợp tất cả lại với nhau, ta nhận được nhiệm vụ này:

- name: composer create-project   composer: command=create-project working_dir=/var/www/laravel optimize_autoloader=no   sudo: yes   sudo_user: www-data 

Lưu ý : tác vụ create-project có thể mất một lượng thời gian đáng kể trên Server mới, vì Composer sẽ có bộ nhớ cache trống và cần download mọi thứ mới.

Bây giờ, mở file php.yml để chỉnh sửa.

  • nano php.yml

Thêm các nhiệm vụ ở trên vào cuối phần tasks , phía trên các handlers , để phần cuối của playbook trùng với những điều sau:

...    - name: Clone git repository     git: >       dest=/var/www/laravel       repo=https://github.com/laravel/laravel.git       update=no     sudo: yes     sudo_user: www-data    - name: install composer     shell: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer     args:       creates: /usr/local/bin/composer    - name: composer create-project     composer: command=create-project working_dir=/var/www/laravel optimize_autoloader=no     sudo: yes     sudo_user: www-data    handlers:     - name: restart php5-fpm       service: name=php5-fpm state=restarted      - name: restart nginx       service: name=nginx state=restarted 

Cuối cùng, chạy playbook.

  • ansible-playbook php.yml --ask-sudo-pass

Điều gì sẽ xảy ra nếu ta chạy lại Ansible bây giờ? composer create-project sẽ chạy lại và trong trường hợp của Laravel, điều này nghĩa là APP_KEY mới. Vì vậy, những gì ta muốn thay vào đó là đặt tác vụ đó chỉ chạy sau một bản sao mới. Ta có thể đảm bảo nó chỉ được chạy một lần bằng cách đăng ký một biến với kết quả của tác vụ git clone , và sau đó kiểm tra các kết quả đó trong composer create-project . Nếu tác vụ git clone đã được Thay đổi , thì ta chạy composer create-project , nếu không, nó sẽ bị bỏ qua.

Lưu ý: Có vẻ như có một lỗi trong một số version của module Ansible composer và nó có thể xuất ra OK thay vì Changed , vì nó bỏ qua rằng các tập lệnh đã được thực thi mặc dù không có phụ thuộc nào được cài đặt.

Mở file php.yml để chỉnh sửa.

  • nano php.yml

Tìm tác vụ git clone . Thêm tùy chọn register để lưu kết quả của nhiệm vụ vào biến cloned , như sau:

- name: Clone git repository   git: >     dest=/var/www/laravel     repo=https://github.com/laravel/laravel.git     update=no   sudo: yes   sudo_user: www-data   register: cloned 

Tiếp theo, tìm composer create-project . Thêm tùy chọn when để kiểm tra biến được sao cloned để xem nó có thay đổi hay không.

- name: composer create-project   composer: command=create-project working_dir=/var/www/laravel optimize_autoloader=no   sudo: yes   sudo_user: www-data   when: cloned|changed 

Lưu playbook và chạy nó:

  • ansible-playbook php.yml --ask-sudo-pass

Bây giờ Composer sẽ ngừng thay đổi APP_KEY mỗi khi nó được chạy.

Bước 6 - Cập nhật các biến môi trường

Trong bước này, ta sẽ cập nhật các biến môi trường cho ứng dụng của bạn .

Laravel đi kèm với một file .env mặc định đặt APP_ENV thành localAPP_DEBUG thành true . Ta muốn swap chúng cho productionfalse , tương ứng. Điều này có thể được thực hiện đơn giản bằng cách sử dụng module lineinfile với các việc sau.

- name: set APP_DEBUG=false   lineinfile: dest=/var/www/laravel/.env regexp='^APP_DEBUG=' line=APP_DEBUG=false  - name: set APP_ENV=production   lineinfile: dest=/var/www/laravel/.env regexp='^APP_ENV=' line=APP_ENV=production 

Mở file php.yml để chỉnh sửa.

  • nano php.yml

Thêm nhiệm vụ này vào playbook; phần cuối của file phải trùng với phần sau:

...    - name: composer create-project     composer: command=create-project working_dir=/var/www/laravel optimize_autoloader=no     sudo: yes     sudo_user: www-data     when: cloned|changed    - name: set APP_DEBUG=false     lineinfile: dest=/var/www/laravel/.env regexp='^APP_DEBUG=' line=APP_DEBUG=false    - name: set APP_ENV=production     lineinfile: dest=/var/www/laravel/.env regexp='^APP_ENV=' line=APP_ENV=production    handlers:     - name: restart php5-fpm       service: name=php5-fpm state=restarted      - name: restart nginx       service: name=nginx state=restarted 

Lưu và chạy playbook:

  • ansible-playbook php.yml --ask-sudo-pass

Mô-đun lineinfile rất hữu ích để điều chỉnh nhanh các file văn bản nào và nó rất tốt đảm bảo các biến môi trường như thế này được đặt chính xác.

Bước 7 - Cấu hình Nginx

Trong phần này, ta sẽ cấu hình một Nginx để phục vụ ứng dụng PHP.

Nếu bạn truy cập Server trong trình duyệt web của bạn ngay bây giờ (tức là http:// your_server_ip / ), bạn sẽ thấy trang mặc định Nginx thay vì trang dự án mới Laravel. Điều này là do ta vẫn cần cấu hình web server Nginx của bạn để phục vụ ứng dụng từ folder /var/www/laravel/public . Để thực hiện việc này, ta cần cập nhật cấu hình mặc định Nginx của bạn với folder đó và thêm hỗ trợ cho php-fpm , để nó có thể xử lý các tập lệnh PHP.

Tạo một file mới có tên nginx.conf :

  • nano nginx.conf

Lưu khối server này trong file đó. Bạn có thể xem Bước 4 của hướng dẫn này để biết thêm chi tiết về cấu hình Nginx này; những sửa đổi dưới đây được quy định cụ thể nơi folder công cộng Laravel là và đảm bảo Nginx sử dụng hostname ta đã xác định trong hosts file như các server_name với inventory_hostname biến.

nginx.conf
server {     listen 80 default_server;     listen [::]:80 default_server ipv6only=on;      root /var/www/laravel/public;     index index.php index.html index.htm;      server_name {{ inventory_hostname }};      location / {         try_files $uri $uri/ =404;     }      error_page 404 /404.html;     error_page 500 502 503 504 /50x.html;     location = /50x.html {         root /var/www/laravel/public;     }      location ~ \.php$ {         try_files $uri =404;         fastcgi_split_path_info ^(.+\.php)(/.+)$;         fastcgi_pass unix:/var/run/php5-fpm.sock;         fastcgi_index index.php;         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;         include fastcgi_params;     } } 

Lưu file nginx.conf .

Bây giờ, ta có thể sử dụng module mẫu để đẩy file cấu hình mới của ta qua. Mô-đun template có thể trông và nghe rất giống với module copy , nhưng có một sự khác biệt lớn. copy sẽ sao chép một hoặc nhiều file mà không thực hiện bất kỳ thay đổi nào , trong khi template sao chép một file duy nhất và sẽ giải quyết tất cả các biến trong file . Vì ta đã sử dụng {{ inventory_hostname }} trong file cấu hình của bạn , ta sử dụng module template để nó được phân giải thành địa chỉ IP mà ta đã sử dụng trong file hosts . Bằng cách này, ta không cần phải mã hóa các file cấu hình mà Ansible sử dụng.

Tuy nhiên, như thường lệ khi viết các việc , ta cần xem xét những gì sẽ xảy ra trên Server. Vì ta đang thay đổi cấu hình Nginx, ta cần khởi động lại Nginx và php-fpm . Điều này được thực hiện bằng cách sử dụng các tùy chọn notify .

- name: Configure nginx   template: src=nginx.conf dest=/etc/nginx/sites-available/default   notify:     - restart php5-fpm     - restart nginx 

Mở file php.yml của bạn:

  • nano php.yml

Thêm nhiệm vụ nginx này vào cuối phần nhiệm vụ. Toàn bộ file php.yml bây giờ sẽ giống như sau:

php.yml
--- - hosts: php   sudo: yes    tasks:    - name: install packages     apt: name={{ item }} update_cache=yes state=latest     with_items:       - git       - mcrypt       - nginx       - php5-cli       - php5-curl       - php5-fpm       - php5-intl       - php5-json       - php5-mcrypt       - php5-sqlite       - sqlite3    - name: ensure php5-fpm cgi.fix_pathinfo=0     lineinfile: dest=/etc/php5/fpm/php.ini regexp='^(.*)cgi.fix_pathinfo=' line=cgi.fix_pathinfo=0     notify:       - restart php5-fpm       - restart nginx    - name: enable php5 mcrypt module     shell: php5enmod mcrypt     args:       creates: /etc/php5/cli/conf.d/20-mcrypt.ini    - name: create /var/www/ directory     file: dest=/var/www/ state=directory owner=www-data group=www-data mode=0700    - name: Clone git repository     git: >       dest=/var/www/laravel       repo=https://github.com/laravel/laravel.git       update=no     sudo: yes     sudo_user: www-data     register: cloned    - name: install composer     shell: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer     args:       creates: /usr/local/bin/composer    - name: composer create-project     composer: command=create-project working_dir=/var/www/laravel optimize_autoloader=no     sudo: yes     sudo_user: www-data     when: cloned|changed    - name: set APP_DEBUG=false     lineinfile: dest=/var/www/laravel/.env regexp='^APP_DEBUG=' line=APP_DEBUG=false    - name: set APP_ENV=production     lineinfile: dest=/var/www/laravel/.env regexp='^APP_ENV=' line=APP_ENV=production    - name: Configure nginx     template: src=nginx.conf dest=/etc/nginx/sites-available/default     notify:       - restart php5-fpm       - restart nginx    handlers:     - name: restart php5-fpm       service: name=php5-fpm state=restarted      - name: restart nginx       service: name=nginx state=restarted 

Lưu và chạy lại playbook:

  • ansible-playbook php.yml --ask-sudo-pass

Sau khi hoàn tất, hãy quay lại trình duyệt của bạn và làm mới. Đến đây bạn sẽ thấy trang dự án mới của Laravel!

Kết luận

Hướng dẫn này bao gồm việc triển khai một ứng dụng PHP với một repository công khai. Mặc dù nó là lựa chọn hoàn hảo để tìm hiểu cách hoạt động của Ansible, nhưng không phải lúc nào bạn cũng làm việc trên các dự án open-souce hoàn toàn với repository mở. Điều này nghĩa là bạn cần xác thực git clone ở Bước 3 với repository riêng tư của bạn . Điều này có thể được thực hiện rất dễ dàng bằng cách sử dụng các SSH key .

Ví dụ: khi bạn đã tạo và đặt khóa triển khai SSH trên repository của bạn , bạn có thể sử dụng Ansible để sao chép và cấu hình chúng trên server của bạn trước tác vụ git clone :

- name: create /var/www/.ssh/ directory   file: dest=/var/www/.ssh/ state=directory owner=www-data group=www-data mode=0700  - name: copy private ssh key   copy: src=deploykey_rsa dest=/var/www/.ssh/id_rsa owner=www-data group=www-data mode=0600 

Điều đó sẽ cho phép server xác thực chính xác và triển khai ứng dụng của bạn.


Bạn vừa triển khai một ứng dụng PHP cơ bản trên web server Nginx dựa trên Ubuntu bằng Composer để quản lý các phần phụ thuộc! Tất cả đã được hoàn thành mà không cần đăng nhập trực tiếp vào PHP Server và chạy một lệnh thủ công.


Tags:

Các tin liên quan

Cách chia sẻ các phiên PHP trên nhiều server Memcached trên Ubuntu 14.04
2014-07-22
Cách sử dụng Framework PHP miễn phí béo
2014-03-06
Cách tự động hóa quy trình triển khai ứng dụng PHP bằng Capistrano trên Ubuntu 13
2014-02-26
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