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 .
[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 .
[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:
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-fpm
và nginx
đả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
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 local
và APP_DEBUG
thành true
. Ta muốn swap chúng cho production
và false
, 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.
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:
--- - 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.
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.042014-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