Cách triển khai ứng dụng Kohana PHP trên VPS Debian 7 / Ubuntu 13 với Nginx và PHP-FPM
Kohana xuất hiện dưới dạng một gói độc lập, với mỗi bản sao tạo thành một cơ sở mới cho một ứng dụng web mới, giúp mọi thứ khá dễ dàng để triển khai.Trong bài viết DigitalOcean này, tiếp theo những bài trước của ta về cài đặt và bắt đầu với Kohana, ta sẽ xem cách chuẩn bị một VPS để triển khai ứng dụng web PHP dựa trên Kohana - sử dụng Debian 7 / Ubuntu 13 làm hệ điều hành server của ta .
Lưu ý: Đây là bài viết thứ ba trong loạt bài Kohana của ta , tập trung vào việc triển khai các ứng dụng được xây dựng bằng framework. Để xem phần đầu tiên và tìm hiểu về cách cài đặt nó, hãy xem Bắt đầu với Kohana . Để tìm hiểu về cách hiểu các module của khung công tác để xây dựng một ứng dụng web, hãy xem phần Xây dựng ứng dụng web với HMVC PHP5 Framework Kohana .
Bảng chú giải
1. Triển khai ứng dụng web dựa trên PHP
2. Server Web
1. Nginx HTTP Server and Reverse-Proxy 2. Lighttpd 3. Apache
3. PHP processor
1. mod_php 2. FastCGI 3. PHP-FPM
4. Kohana trong Tóm tắt
5. Giới thiệu về triển khai của ta
6. Chuẩn bị hệ thống để triển khai ứng dụng Kohana
1. Updating the System 2. Installing Nginx 3. Installing MySQL 5 4. Installing PHP (PHP-FPM)
7. Cấu hình hệ thống
1. Configuring PHP 2. Configuring Nginx
8. Triển khai một ứng dụng web Kohana
1. Uploading the Code Base To The Server 2. Bootstrapping the Deployment (Installation)
Triển khai ứng dụng web dựa trên PHP
Có một vài phương pháp khác nhau để triển khai một ứng dụng web dựa trên PHP, với nhiều tùy chọn cấu hình con hơn có sẵn.
Yếu tố chính và khác biệt là sự lựa chọn của web server . Một số trong những cái phổ biến nhất là:
Server HTTP Nginx và Reverse-Proxy
Lighttpd (hoặc nhạt)
Apache
Ngoài ra còn có một số PHP processor khác nhau được dùng để các web server ở trên xử lý và phục vụ các file PHP:
mod_php
FastCGI
PHP-FPM
Server Web
Server HTTP Nginx và Reverse-Proxy
Nginx là một web server / (ngược) -proxy có hiệu suất rất cao. Nó đã trở nên phổ biến do trọng lượng nhẹ, tương đối dễ làm việc và dễ mở rộng (với các tiện ích bổ sung / trình cắm thêm). Nhờ kiến trúc của nó, nó có khả năng xử lý rất nhiều yêu cầu (hầu như không giới hạn), điều này - tùy thuộc vào tải ứng dụng hoặc trang web - có thể thực sự khó giải quyết bằng một số lựa chọn thay thế cũ hơn khác. Nó có thể được coi là công cụ để lựa chọn để phục vụ các file tĩnh như hình ảnh, script hoặc style-sheet.
Lighttpd
Lighttpd là một web server rất nhanh được cấp phép theo Giấy phép BSD cho phép . Nó hoạt động và vận hành theo cách gần với Nginx hơn Apache. Cách nó xử lý các yêu cầu rất thấp trên bộ nhớ và bản in chân CPU.
Apache
Apache là một web server cực kỳ mạnh mẽ đã được thử nghiệm và thử nghiệm từ lâu. Mặc dù nó có thể không còn phổ biến như cũ, Apache vẫn cung cấp nhiều thứ mà các đối thủ cạnh tranh mới của nó không có. Nó cũng đi kèm với rất nhiều module được dùng để mở rộng chức năng mặc định và có Apache phù hợp với nhu cầu triển khai cụ thể của bạn.
PHP processor
Các web server (hầu hết) không được cài đặt để xử lý các tập lệnh PHP - cũng không phải các server khác dựa trên các ngôn ngữ lập trình khác nhau. Để làm được điều này, chúng phụ thuộc vào các thư viện bên ngoài, mỗi thư viện hoạt động trông giống nhau nhưng thực tế lại rất khác nhau. Các web server khác nhau cung cấp mức độ tích hợp khác nhau với mỗi loại - và ta khuyên bạn là người chịu trách nhiệm triển khai ứng dụng, bạn nên thực hiện nghiên cứu kỹ để có ý tưởng tốt hơn về những gì họ làm và cách họ thực hiện.
mod_php
Trong một thời gian dài, mod_php vẫn là module Apache phổ biến nhất và là sự lựa chọn hàng đầu để triển khai các ứng dụng web PHP. Nó hoạt động bằng cách nhúng PHP processor vào bên trong Apache để chạy các tập lệnh PHP.
<b> Ưu điểm: </b>
Cực kỳ ổn định và được kiểm tra tốt.
Không có dependencies bên ngoài nào được tham gia để xử lý.
Rất hiệu quả.
Tải
php.ini
một lần.Hỗ trợ các cấu hình
.htaccess
.
FastCGI
FastCGI hoạt động bằng cách kết nối cài đặt PHP processor bên ngoài với web server thông qua các socket . Đó là một cách tiên tiến hơn để làm điều tương tự với CGI cũ của các bạn. FastCGI có thể được coi là an toàn hơn so với làm việc với mod_php vì nó tách bộ xử lý khỏi quy trình web server (và cách ly từng bộ xử lý khỏi các khai thác có hại có thể xảy ra).
<b> Ưu điểm: </b>
Loại bỏ nhu cầu liên quan đến PHP processor cho nội dung tĩnh.
Loại bỏ chi phí bộ nhớ khi sử dụng PHP processor cho mỗi quá trình Apache.
Mang đến một lớp bảo mật bổ sung bằng cách phân chia server và bộ xử lý.
PHP-FPM
PHP-FPM bao gồm một bản nâng cấp lên cách FastCGI để sử dụng PHP.Nó mang lại một số tính năng mới nhất định và một cách hoàn toàn mới để xử lý các yêu cầu - vì lợi ích của (đặc biệt) các trang web lớn hơn.
<b> Ưu điểm: </b>
Quá trình thích nghi sinh sản.
Quản lý bộ xử lý duyên dáng.
Dấu chân bộ nhớ nhỏ hơn so với FastCGI.
Có thể cấu hình nhiều hơn FastCGI.
Kohana trong Tóm tắt
Kohana là một khung HMVC (Hierarchical Model View Controller) cung cấp hầu như tất cả các công cụ cần thiết sẵn có để xây dựng một ứng dụng web hiện đại có thể được phát triển nhanh chóng, triển khai và bảo trì dễ dàng.
Là một khung công tác “nhẹ”, Kohana được tạo từ các file nằm rải rác trên các folder có cấu trúc cẩn thận bên trong một (ứng dụng) duy nhất - nghĩa là mỗi gói kohana có thể được coi là một ứng dụng web (trừ đi các phụ thuộc bên ngoài có thể có).
Cách Kohana được xây dựng, theo thiết kế, làm cho khung này cực kỳ thân thiện để triển khai.
Về triển khai của ta
Trong bài viết này, ta sẽ sử dụng Nginx cùng với PHP-FPM để triển khai vì các tính năng được cung cấp - và tính phổ biến của chúng. Database ta lựa chọn ở đây là MySQL; tuy nhiên, bạn nên chọn và sử dụng cái khác (ví dụ: MariaDB). Đừng quên rằng bạn cần phải di chuyển database của bạn - hãy xem phần cuối để biết chi tiết.
Chuẩn bị Hệ thống Triển khai Ứng dụng Kohana
Ta sẽ làm việc với một VPS Ubuntu 13 mới được chạy . Vì nhiều lý do khác nhau, bạn nên làm như vậy và thử mọi thứ trước khi thực hiện chúng trên một cài đặt server đã hoạt động và đang hoạt động.
Cập nhật hệ thống
Ta sẽ bắt đầu với việc cập nhật bộ công cụ ứng dụng mặc định của server ảo lên version mới nhất hiện có.
Chạy phần sau để thực hiện tác vụ này:
aptitude update aptitude -y upgrade
Cài đặt Nginx
Thực thi các bước sau để cài đặt Nginx bằng aptitude
quản lý gói:
aptitude -y install nginx
Chạy lệnh dưới đây để khởi động server :
service nginx start
Bạn có thể truy cập http://[your server's IP adde.]/
Để kiểm tra cài đặt Nginx. Bạn sẽ thấy màn hình chào mừng mặc định.
Cài đặt MySQL 5
Ta sẽ lại sử dụng trình quản lý gói aptitude
để cài đặt MySQL và các ứng dụng khác. Chạy lệnh dưới đây để download và cài đặt MySQL.
Lưu ý : Trong quá trình cài đặt, bạn sẽ được yêu cầu với một số câu hỏi liên quan đến mật khẩu root .
aptitude -y install mysql-server mysql-client
Khởi động mọi thứ bằng cách sử dụng mysql_secure_installation
:
# Run the following to start the process mysql_secure_installation # Enter the root password you have chosen during installation # Continue with answering the questions, confirming all. # Ex.: # Remove anonymous users? [Y/n] Y # Disallow root login remotely? [Y/n] Y # .. # .
Chạy lệnh dưới đây để khởi động lại và kiểm tra trạng thái cài đặt MySQL của bạn:
service mysql restart # mysql stop/waiting # mysql start/running, process 25012 service mysql status # mysql start/running, process 25012
Cài đặt PHP (PHP-FPM)
Để xử lý các trang PHP với Nginx, ta sẽ sử dụng PHP-FPM. Chạy phần sau để download và cài đặt gói ứng dụng:
aptitude -y install php5 php5-fpm php5-mysql
Điều này cũng sẽ cài đặt các commons PHP5 .
Cấu hình hệ thống
Sau khi cài đặt các công cụ cần thiết, đã đến lúc chuẩn bị cho server của ta sẵn sàng để triển khai ứng dụng web PHP bằng cách thực hiện các sửa đổi cấu hình cuối cùng.
Cấu hình PHP
Ta sẽ làm việc với file cấu hình PHP mặc định php.ini
và chỉnh sửa nó bằng editor nano
để thực hiện một vài thay đổi nhỏ.
Chạy như sau để mở file bằng nano:
nano /etc/php5/fpm/php.ini
Cuộn xuống tài liệu và tìm dòng ;cgi.fix_pathinfo=1
. Sửa đổi nó tương tự như sau để các đường dẫn ứng dụng được xử lý an toàn:
# Replace ;cgi.fix_pathinfo=1 with: cgi.fix_pathinfo=0
Lưu và thoát bằng cách nhấn CTRL + X và xác nhận với Y.
Cấu hình Nginx
Vì trong bài viết này, ta đang xem xét việc triển khai một ứng dụng web duy nhất, các lựa chọn sửa đổi và cấu hình của ta được thực hiện cho phù hợp. Để lưu trữ nhiều ứng dụng bằng Nginx, bạn cần tạo user các khối server . Để tìm hiểu thêm về chúng, hãy xem Cài đặt Server ảo Nginx (Khối server ) .
Hãy chỉnh sửa cấu hình trang web Nginx mặc định. Chạy như sau để mở file bằng nano:
nano /etc/nginx/sites-available/default
Copy paste nội dung dưới đây:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; # Set the default application path root # We are using my_app to host the application root /var/www/my_app; index index.php; # Replace the server_name with your own server_name localhost; location / { try_files $uri /index.php?$args; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; } } location ~ /\. { deny all; } location ~ \.php$ { try_files $uri = 404; 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 và thoát bằng cách nhấn CTRL + X và xác nhận với Y.
Tạo và nhập folder triển khai ứng dụng /var/www
:
mkdir /var/www cd /var/www
Kiểm tra các cấu hình và khởi động lại Nginx để có cơ hội có hiệu lực:
# Test the configurations nginx -t # Restart the server service nginx restart
Triển khai một ứng dụng web Kohana
Sau các cấu hình đã thực hiện, ta đã sẵn sàng triển khai ứng dụng của bạn . Quy trình sẽ bao gồm hai bước chính:
Tải cơ sở mã lên server
Sửa đổi
bootstrap.php
đảm bảo nó được đặt chính xác.
Tải cơ sở mã lên server
Bạn có thể sử dụng SFTP hoặc một công cụ đồ họa, chẳng hạn như FileZilla, để truyền và quản lý các file từ xa một cách an toàn.
Để tìm hiểu về cách làm việc với SFTP, hãy xem bài viết: Cách sử dụng SFTP .
Để tìm hiểu về FileZilla, hãy xem bài viết về chủ đề: Cách sử dụng FileZilla .
Lưu ý: Nếu bạn chọn sử dụng FileZilla, hãy đảm bảo đặt /var/www
làm folder mặc định (điều này sẽ giúp bạn tiết kiệm thời gian).
Trong ví dụ này, ta sẽ làm việc với ứng dụng Kohana (mẫu) mặc định.
Download và chuẩn bị Kohana:
# Remember: The following commands assume that your current # working directory is set as /var/www/ wget https://github.com/kohana/kohana/releases/download/v3.3.1/kohana-v3.3.1.zip # You might need to install *unzip* before extracting the files aptitude install -y unzip # Unzip and extract the files unzip kohana-v3.3.1.zip -d my_app # Remove the zip package rm -v kohana-v3.3.1.zip # Enter the application directory cd my_app
Khởi động Triển khai (Cài đặt)
Chạy phần sau để bắt đầu chỉnh sửa file cấu hình bằng nano:
nano application/bootstrap.php
Chỉnh sửa múi giờ của bạn:
# Find date_default_timezone_set and set your timezone date_default_timezone_set('Europe/London');
Đặt ngôn ngữ của bạn:
# Find setlocale and set your locale setlocale(LC_ALL, 'en_UK.utf-8');
Tìm cuối chỉnh sửa base_url
để phù hợp với cài đặt
# Find base_url and set the base application directory # Relative to the base Apache directory (i.e. /var/www/my_app) Kohana::init(array( 'base_url' => '/', ));
Đảm bảo bật tất cả các module cần thiết:
# Find Kohana::modules and uncomment them Kohana::modules(array( 'auth' => MODPATH.'auth', // Basic authentication 'cache' => MODPATH.'cache', // Caching with multiple backends 'codebench' => MODPATH.'codebench', // Benchmarking tool 'database' => MODPATH.'database', // Database access 'image' => MODPATH.'image', // Image manipulation 'orm' => MODPATH.'orm', // Object Relationship Mapping 'oauth' => MODPATH.'oauth', // OAuth authentication 'pagination' => MODPATH.'pagination', // Paging of results 'unittest' => MODPATH.'unittest', // Unit testing 'userguide' => MODPATH.'userguide', // User guide and API documentation ));
Lưu và thoát bằng cách nhấn CTRL + X và xác nhận với Y.
Đặt folder bộ nhớ cache và log có thể ghi:
sudo chmod -R a+rwx application/cache sudo chmod -R a+rwx application/logs
Và đó là nó! Đến đây bạn sẽ có ứng dụng web Kohana của bạn sẵn sàng chạy.
Hãy nhớ: Bạn không nên quên việc di chuyển dữ liệu ứng dụng của bạn (ví dụ: database server MySQL) sang server của bạn từ máy phát triển của bạn hoặc một server khác. Để tìm hiểu cách thực hiện việc này, hãy xem Cách di chuyển database MySQL giữa hai server và các comment liên quan để biết thêm thông tin.
<div class = “author”> Gửi bởi: <a
href = “https://twitter.com/ostezer”> Hệ điều hành Tezer </a> </div>
Các tin liên quan
Cách cài đặt và thiết lập Kohana, Khung phát triển ứng dụng web PHP2013-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