Cách cài đặt Laravel với web server Nginx trên Ubuntu 14.04
Laravel là một khung công tác PHP open-souce hiện đại dành cho các nhà phát triển web. Nó nhằm mục đích cung cấp một cách dễ dàng, thanh lịch cho các nhà phát triển để có được một ứng dụng web đầy đủ chức năng đang chạy một cách nhanh chóng.Trong hướng dẫn này, ta sẽ thảo luận về cách cài đặt Laravel trên Ubuntu 14.04. Ta sẽ sử dụng Nginx làm web server của bạn và sẽ làm việc với version mới nhất của Laravel tại thời điểm viết bài này, version 4.2.
Cài đặt các thành phần backend
Điều đầu tiên mà ta cần làm để bắt đầu với Laravel là cài đặt ngăn xếp sẽ hỗ trợ nó. Ta có thể thực hiện việc này thông qua các repository mặc định của Ubuntu.
Đầu tiên, ta cần cập nhật index gói local của bạn đảm bảo rằng ta có một danh sách mới các gói có sẵn. Sau đó, ta có thể cài đặt các thành phần cần thiết:
sudo apt-get update sudo apt-get install nginx php5-fpm php5-cli php5-mcrypt git
Điều này sẽ cài đặt Nginx làm web server của ta cùng với các công cụ PHP cần thiết để thực sự chạy mã Laravel. Ta cũng cài đặt git
vì công cụ composer
, trình quản lý phụ thuộc cho PHP mà ta sẽ sử dụng để cài đặt Laravel, sẽ sử dụng nó để kéo các gói xuống.
Sửa đổi cấu hình PHP
Bây giờ ta đã cài đặt các thành phần của bạn , ta có thể bắt đầu cấu hình chúng. Ta sẽ bắt đầu với PHP, tương đối dễ hiểu.
Điều đầu tiên ta cần làm là mở file cấu hình PHP chính cho PHP processor -fpm mà Nginx sử dụng. Mở cái này với quyền sudo trong editor của bạn:
sudo nano /etc/php5/fpm/php.ini
Ta chỉ cần sửa đổi một giá trị trong file này. Tìm kiếm tham số cgi.fix_pathinfo
. Điều này sẽ được comment và đặt thành “1”. Ta cần bỏ ghi chú điều này và đặt nó thành “0”:
cgi.fix_pathinfo=0
Điều này yêu cầu PHP không cố gắng thực thi một tập lệnh có tên tương tự nếu không tìm thấy tên file được yêu cầu. Điều này rất quan trọng vì cho phép kiểu hành vi này có thể cho phép kẻ tấn công tạo ra một yêu cầu được thiết kế đặc biệt để cố gắng lừa PHP thực thi mã mà nó không nên.
Khi bạn hoàn tất, hãy lưu file .
Phần quản trị PHP cuối cùng mà ta cần làm là bật rõ ràng phần mở rộng MCrypt, phần mở rộng mà Laravel phụ thuộc vào. Ta có thể làm điều này bằng cách sử dụng lệnh php5enmod
, cho phép ta dễ dàng kích hoạt các module tùy chọn:
sudo php5enmod mcrypt
Bây giờ, ta có thể khởi động lại dịch vụ php5-fpm
để áp dụng các thay đổi mà ta đã thực hiện:
sudo service php5-fpm restart
PHP của ta hiện đã được cấu hình hoàn chỉnh và ta có thể tiếp tục.
Cấu hình Nginx và Gốc web
Mục tiếp theo mà ta nên giải quyết là web server . Điều này thực sự sẽ bao gồm hai bước riêng biệt.
Bước đầu tiên là cấu hình cấu trúc folder và root tài liệu mà ta sẽ sử dụng để chứa các file Laravel. Ta sẽ đặt các file của ta trong một folder có tên /var/www/laravel
.
Đến đây, chỉ cấp cao nhất của đường dẫn này ( /var
) được tạo. Ta có thể tạo toàn bộ đường dẫn trong một bước bằng cách chuyển cờ -p
vào mkdir
của ta . Điều này hướng dẫn tiện ích tạo bất kỳ phần tử đường dẫn mẹ cần thiết nào cần thiết để tạo một đường dẫn nhất định:
sudo mkdir -p /var/www/laravel
Bây giờ ta đã có một vị trí dành riêng cho các thành phần Laravel, ta có thể chuyển sang chỉnh sửa các khối server Nginx.
Mở file cấu hình khối server mặc định với quyền sudo:
sudo nano /etc/nginx/sites-available/default
Khi cài đặt, file này sẽ có khá nhiều chú thích giải thích, nhưng cấu trúc cơ bản sẽ như thế này:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm; server_name localhost; location / { try_files $uri $uri/ =404; } }
Điều này tạo cơ sở tốt cho những thay đổi mà ta sẽ thực hiện.
Điều đầu tiên ta cần thay đổi là vị trí của root tài liệu. Laravel sẽ được cài đặt trong folder /var/www/laravel
mà ta đã tạo.
Tuy nhiên, các file cơ sở được sử dụng để điều khiển ứng dụng được lưu giữ trong một folder con bên trong được gọi là public
. Đây là nơi ta sẽ đặt tài liệu root của ta . Ngoài ra, ta sẽ yêu cầu Nginx phân phát bất kỳ index.php
nào trước khi tìm kiếm bản sao HTML của chúng khi yêu cầu vị trí folder :
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 localhost; location / { try_files $uri $uri/ =404; } }
Tiếp theo, ta nên đặt chỉ thị server_name
để tham chiếu đến domain thực của server của ta . Nếu bạn chưa có domain , hãy sử dụng địa chỉ IP của server của bạn.
Ta cũng cần sửa đổi cách mà Nginx sẽ xử lý các yêu cầu. Điều này được thực hiện thông qua chỉ thị try_files
. Ta muốn nó cố gắng phân phát yêu cầu dưới dạng file trước. Nếu nó không thể tìm thấy một file có tên chính xác, nó sẽ cố gắng cung cấp file index mặc định cho một folder phù hợp với yêu cầu. Không thực hiện được, nó sẽ chuyển yêu cầu đến index.php
dưới dạng tham số truy vấn.
Những thay đổi được mô tả ở trên có thể được thực hiện như sau:
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 server_domain_or_IP; location / { try_files $uri $uri/ /index.php?$query_string; } }
Cuối cùng, ta cần tạo một khối xử lý việc thực thi thực tế của các file PHP nào. Điều này sẽ áp dụng cho các file nào kết thúc bằng .php
. Nó sẽ thử chính file và sau đó cố gắng chuyển nó dưới dạng tham số cho index.php
.
Ta sẽ đặt các chỉ thị fastcgi_*
để đường dẫn của các yêu cầu được phân chia chính xác để thực thi và đảm bảo Nginx sử dụng socket mà php5-fpm
đang sử dụng để giao tiếp và index.php
được sử dụng làm index cho các hoạt động này .
Sau đó, ta sẽ đặt tham số SCRIPT_FILENAME
để PHP có thể định vị chính xác các file được yêu cầu. Khi ta hoàn thành, file hoàn thành sẽ giống như sau:
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 server_domain_or_IP; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri /index.php =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 khi bạn hoàn tất.
Bởi vì ta đã sửa đổi file khối server default
, file này đã được bật, ta chỉ cần khởi động lại Nginx để các thay đổi cấu hình của ta được thực hiện:
sudo service nginx restart
Tạo file swap (Tùy chọn)
Trước khi ta bắt đầu cài đặt Composer và Laravel, bạn nên bật một số swap trên server của bạn để quá trình xây dựng hoàn thành chính xác. Điều này thường chỉ cần thiết nếu bạn đang hoạt động trên một server không có nhiều bộ nhớ (như Server 512mb).
Không gian swap sẽ cho phép hệ điều hành tạm thời di chuyển dữ liệu từ bộ nhớ vào đĩa khi lượng thông tin trong bộ nhớ vượt quá không gian bộ nhớ vật lý có sẵn. Điều này sẽ ngăn các ứng dụng hoặc hệ thống của bạn gặp sự cố với ngoại lệ hết bộ nhớ (OOM) khi thực hiện các việc đòi hỏi nhiều bộ nhớ.
Ta có thể dễ dàng cài đặt một số không gian swap để cho phép hệ điều hành của ta trộn một số không gian này vào đĩa khi cần thiết. Như đã nói ở trên, điều này có lẽ chỉ cần thiết nếu bạn có dung lượng ram ít hơn 1GB.
Đầu tiên, ta có thể tạo một file trống 1GB bằng lệnh :
sudo fallocate -l 1G /swapfile
Ta có thể định dạng nó thành không gian swap bằng lệnh :
sudo mkswap /swapfile
Cuối cùng, ta có thể kích hoạt không gian này để kernel bắt đầu sử dụng nó bằng lệnh :
sudo swapon /swapfile
Hệ thống sẽ chỉ sử dụng không gian này cho đến lần khởi động lại tiếp theo, nhưng thời gian duy nhất mà server có khả năng vượt quá bộ nhớ khả dụng là trong quá trình xây dựng, vì vậy đây không phải là vấn đề.
Cài đặt Composer và Laravel
Bây giờ, ta cuối cùng đã sẵn sàng để cài đặt Composer và Laravel. Ta sẽ cài đặt Composer trước. Sau đó, ta sẽ sử dụng công cụ này để xử lý cài đặt Laravel.
Di chuyển đến folder mà bạn có quyền ghi (như folder chính của bạn), sau đó download và chạy tập lệnh trình cài đặt từ dự án Composer:
cd ~ curl -sS https://getcomposer.org/installer | php
Thao tác này sẽ tạo một file có tên composer.phar
trong folder chính của bạn. Đây là một repository PHP và nó có thể được chạy từ dòng lệnh.
Tuy nhiên, ta muốn cài đặt nó ở một vị trí có thể truy cập global . Ngoài ra, ta muốn đổi tên thành composer
(không có phần mở rộng file ). Ta có thể thực hiện việc này trong một bước bằng lệnh :
sudo mv composer.phar /usr/local/bin/composer
Đến đây bạn đã cài đặt Composer, ta có thể sử dụng nó để cài đặt Laravel.
Lưu ý , ta muốn cài đặt Laravel vào folder /var/www/laravel
. Để cài đặt version mới nhất của Laravel, có thể chạy lệnh:
sudo composer create-project laravel/laravel /var/www/laravel
Tại thời điểm viết bài này, version mới nhất là 4.2. Trong trường hợp các thay đổi trong tương lai đối với dự án ngăn không cho quy trình cài đặt này hoàn tất chính xác, bạn có thể buộc version ta đang sử dụng trong hướng dẫn này bằng cách thay vào đó nhập:
sudo composer create-project laravel/laravel /var/www/laravel 4.2
Bây giờ, tất cả các file đều được cài đặt trong folder /var/www/laravel
của ta , nhưng chúng hoàn toàn thuộc quyền sở hữu của account root
của ta . User web cần quyền sở hữu và quyền một phần để phân phát nội dung một cách chính xác.
Ta có thể cấp quyền sở hữu group đối với cấu trúc folder Laravel của ta cho group web bằng lệnh :
sudo chown -R :www-data /var/www/laravel
Tiếp theo, ta có thể thay đổi quyền của folder /var/www/laravel/app/storage
để cho phép quyền ghi group web. Điều này là cần thiết để ứng dụng hoạt động chính xác:
sudo chmod -R 775 /var/www/laravel/app/storage
Đến đây bạn đã cài đặt xong Laravel và sẵn sàng hoạt động. Bạn có thể xem trang đích mặc định bằng cách truy cập domain hoặc địa chỉ IP của server trong trình duyệt web :
http://server_domain_or_IP
Đến đây bạn có mọi thứ bạn cần để bắt đầu xây dựng ứng dụng với khung công tác Laravel.
Kết luận
Đến đây bạn sẽ có Laravel lên và chạy trên server của bạn . Laravel là một khung công tác khá linh hoạt và nó bao gồm nhiều công cụ có thể giúp bạn xây dựng một ứng dụng theo cách có cấu trúc.
Để tìm hiểu cách sử dụng Laravel để xây dựng một ứng dụng, hãy xem tài liệu về Laravel .
Các tin liên quan
Cách cài đặt gpEasy CMS với NGINX và PHP5-FPM trên Debian 72014-06-03
Cách sử dụng Nginx làm Giám đốc lưu lượng toàn cầu trên Debian hoặc Ubuntu
2014-05-30
Cách sử dụng HAProxy làm bộ cân bằng tải lớp 7 cho WordPress và Nginx trên Ubuntu 14.04
2014-05-27
Cách cung cấp tệp mật khẩu KeePass2 với Nginx trên server Ubuntu 14.04
2014-05-16
Cách cài đặt WordPress với Nginx trên Ubuntu 14.04
2014-05-15
Cách tạo chứng chỉ SSL trên Nginx cho Ubuntu 14.04
2014-05-09
Cách tạo chứng chỉ SSL trên Nginx cho Ubuntu 14.04
2014-05-09
Cách cài đặt Nginx trên Ubuntu 14.04 LTS
2014-04-29
Cách thiết lập server block Nginx (server ảo) trên Ubuntu 14.04 LTS
2014-04-25
Cách tùy chỉnh tên server Nginx của bạn sau khi biên dịch từ nguồn trong CentOS
2014-02-11