Cách Cài Đặt Linux, Nginx, Mysql, PHP (Lemp) Stack Trên Ubuntu 14.04

Cách Cài Đặt Linux, Nginx, Mysql, PHP (Lemp) Stack Trên Ubuntu 14.04

LEMP stack là một tập hợp phần mềm phổ biến được sử dụng để phục vụ các trang web động và ứng dụng web. Từ viết tắt này bao gồm hệ điều hành Linux, máy chủ web Nginx, cơ sở dữ liệu MySQL, và xử lý nội dung động bằng PHP.

Bạn đang tìm hiểu cách cài đặt Linux trên Ubuntu 14.04? Nếu muốn trải nghiệm hệ điều hành khác, hãy khám phá VPS Windows – giải pháp mạnh mẽ, dễ sử dụng cho các ứng dụng doanh nghiệp. Tìm hiểu thêm về VPS Windows để tối ưu hóa dự án của bạn ngay hôm nay!

Sau đây, DataOnline sẽ hướng dẫn bạn cách cài đặt LEMP stack trên máy chủ Ubuntu 14.04. Ubuntu sẽ đáp ứng yêu cầu đầu tiên về hệ điều hành, và chúng ta sẽ tiếp tục thiết lập và cấu hình các thành phần còn lại của LEMP để tạo thành một nền tảng hoàn chỉnh cho việc phát triển và triển khai các ứng dụng web động.

Yêu cầu tiên quyết

Trước khi hoàn thành hướng dẫn này, bạn cần có một tài khoản người dùng thường, không phải root trên máy chủ của mình với quyền sudo. Bạn có thể tìm hiểu cách thiết lập loại tài khoản này bằng cách hoàn thành các bước 1-4 trong hướng dẫn thiết lập máy chủ ban đầu trên ubuntu 14.04.

Sau khi đã có tài khoản, hãy đăng nhập vào máy chủ với tên người dùng đó. Bây giờ bạn đã sẵn sàng để bắt đầu các bước được nêu trong hướng dẫn này.

1. Cài đặt máy chủ Web Nginx

Để hiển thị các trang web cho khách truy cập, chúng ta sẽ sử dụng nginx, một máy chủ web hiện đại và hiệu quả.

Tất cả phần mềm cần thiết cho quy trình này sẽ được lấy trực tiếp từ kho lưu trữ gói mặc định của ubuntu. Điều này có nghĩa là chúng ta có thể sử dụng bộ quản lý gói apt để hoàn tất việc cài đặt.

Vì đây là lần đầu tiên chúng ta sử dụng apt cho phiên làm việc này, hãy bắt đầu bằng việc cập nhật chỉ mục gói cục bộ. Sau đó, cài đặt máy chủ:

sudo apt-get update
sudo apt-get install nginx

Trong ubuntu 14.04, nginx được cấu hình để tự động chạy ngay sau khi cài đặt.

Bạn có thể kiểm tra xem máy chủ có đang hoạt động hay không bằng cách truy cập tên miền hoặc địa chỉ IP công cộng của máy chủ trong trình duyệt web.

Nếu bạn không có tên miền trỏ về máy chủ và không biết địa chỉ IP công cộng của máy chủ, bạn có thể tìm nó bằng cách gõ một trong các dòng sau vào terminal:

<pre> ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s//.*$//’ </pre> <pre> <span class=”highlight”>111.111.111.111</span> <span class=”highlight”>fe80::601:17ff:fe61:9801</span> </pre>

Hoặc bạn có thể thử dùng:

<pre> curl http://icanhazip.com </pre> <pre> <span class=”highlight”>111.111.111.111</span> </pre>

Hãy thử một trong các dòng mà bạn nhận được trong trình duyệt. Nó sẽ đưa bạn đến trang mặc định của nginx.

Nếu bạn thấy trang như trên, bạn đã cài đặt nginx thành công.

2. Cài đặt MySQL để quản lý dữ liệu trang Web

Bây giờ, khi đã có máy chủ web, chúng ta cần cài đặt mysql, hệ quản trị cơ sở dữ liệu, để lưu trữ và quản lý dữ liệu cho trang web của mình.

Bạn có thể cài đặt mysql dễ dàng bằng cách gõ:

sudo apt-get install mysql-server

Bạn sẽ được yêu cầu cung cấp mật khẩu root (quản trị) để sử dụng trong hệ thống mysql.

Phần mềm cơ sở dữ liệu mysql đã được cài đặt, nhưng cấu hình của nó chưa hoàn toàn xong.

Đầu tiên, chúng ta cần yêu cầu mysql tạo cấu trúc thư mục cần thiết để lưu trữ cơ sở dữ liệu và thông tin của nó. Thực hiện điều này bằng cách gõ:

sudo mysql_install_db

Tiếp theo, bạn cần chạy một script bảo mật đơn giản sẽ nhắc bạn thay đổi một số mặc định không an toàn. Bắt đầu script bằng cách gõ:

sudo mysql_secure_installation

Bạn sẽ cần nhập mật khẩu root của mysql mà bạn đã chọn trong quá trình cài đặt.

Tiếp theo, script sẽ hỏi bạn có muốn thay đổi mật khẩu đó không. Nếu bạn hài lòng với mật khẩu hiện tại, hãy gõ “N” và nhấn “ENTER”. Sau đó, bạn sẽ được nhắc để xóa một số người dùng và cơ sở dữ liệu test. Bạn chỉ cần nhấn “ENTER” qua các bước nhắc này để loại bỏ các cài đặt mặc định không an toàn.

Sau khi chạy xong script, mysql đã sẵn sàng để hoạt động.

3. Cài đặt PHP để xử lý

Bây giờ, chúng ta đã cài đặt nginx để phục vụ các trang và mysql để lưu trữ và quản lý dữ liệu, nhưng chúng ta vẫn cần một thứ gì đó để kết nối hai phần này và tạo nội dung động. Chúng ta sẽ sử dụng php cho việc này.

Vì nginx không có xử lý php gốc như một số máy chủ web khác, chúng ta cần cài đặt php5-fpm (fastCGI process manager). Chúng ta sẽ cấu hình nginx chuyển các yêu cầu php đến phần mềm này để xử lý.

Chúng ta sẽ cài đặt module này và đồng thời lấy thêm một gói hỗ trợ cho phép php giao tiếp với backend cơ sở dữ liệu của chúng ta. Quá trình cài đặt sẽ tự động kéo các tệp lõi cần thiết của php. Thực hiện điều này bằng cách gõ:

sudo apt-get install php5-fpm php5-mysql

Cấu hình bộ xử lý PHP

Chúng ta đã cài đặt các thành phần php, nhưng cần thực hiện một thay đổi cấu hình nhỏ để làm cho thiết lập của chúng ta an toàn hơn.

Mở tệp cấu hình chính của php5-fpm với quyền root:

sudo nano /etc/php5/fpm/php.ini

Trong tệp này, ta cần tìm tham số thiết lập cgi.fix_pathinfo. Tham số này sẽ bị chú thích (bắt đầu bằng dấu chấm phẩy 😉 và được đặt mặc định là “1”.

Đây là một cài đặt vô cùng không an toàn vì nó cho phép php cố gắng thực thi tệp gần nhất nếu không tìm thấy tệp php khớp chính xác. Điều này cơ bản sẽ cho phép người dùng tạo các yêu cầu php theo cách mà cho phép họ thực thi các script mà họ không được phép.

Chúng ta sẽ thay đổi bằng cách bỏ chú thích dòng này và đặt nó thành “0” như sau:

cgi.fix_pathinfo=0

Lưu và đóng tệp khi hoàn thành.

Bây giờ, chỉ cần khởi động lại bộ xử lý php bằng cách gõ:

sudo service php5-fpm restart

Thao tác này sẽ áp dụng thay đổi mà chúng ta đã thực hiện.

4. Cấu hình Nginx để sử dụng bộ xử lý PHP của chúng ta

Bây giờ, tất cả các thành phần cần thiết đã được cài đặt. Thay đổi cấu hình cuối cùng cần thực hiện là thông báo cho nginx sử dụng bộ xử lý php để xử lý nội dung động.

Chúng ta sẽ làm điều này ở cấp độ server block (server blocks tương tự như virtual hosts của Apache).

Mở tệp cấu hình server block mặc định của nginx bằng cách gõ:

sudo nano /etc/nginx/sites-available/default

Hiện tại, sau khi loại bỏ các chú thích, tệp server block mặc định của nginx trông như sau:

<pre> 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;
}

} </pre>

Chúng ta cần thực hiện một số thay đổi trong tệp này cho trang web của mình:

● Đầu tiên, cần thêm tùy chọn index.php làm giá trị đầu tiên trong chỉ thị index để cho phép các tệp index php được phục vụ khi một thư mục được yêu cầu.

● Cần sửa chỉ thị server_name để trỏ đến tên miền hoặc địa chỉ IP công cộng của máy chủ.

● Tệp cấu hình hiện có bao gồm một số dòng bị chú thích định nghĩa các quy trình xử lý lỗi. Chúng ta sẽ bỏ chú thích các dòng đó để bao gồm chức năng đó.

● Đối với xử lý php thực tế, cần bỏ chú thích một phần của một khối khác. Cần thêm chỉ thị try_files để đảm bảo nginx không chuyển các yêu cầu không hợp lệ cho bộ xử lý php.

Các thay đổi cần thực hiện được đánh dấu bằng màu đỏ trong văn bản dưới đây:

<pre> server { listen 80 default_server; listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index <span class="highlight">index.php</span> index.html index.htm;

server_name <span class="highlight">server_domain_name_or_IP</span>;

location / {
    try_files $uri $uri/ =404;
}

<span class="highlight">error_page 404 /404.html;</span>
<span class="highlight">error_page 500 502 503 504 /50x.html;</span>
<span class="highlight">location = /50x.html {</span>
    <span class="highlight">root /usr/share/nginx/html;</span>
<span class="highlight">}</span>

<span class="highlight">location ~ \.php$ {</span>
    <span class="highlight">try_files $uri =404;</span>
    <span class="highlight">fastcgi_split_path_info ^(.+\.php)(/.+)$;</span>
    <span class="highlight">fastcgi_pass unix:/var/run/php5-fpm.sock;</span>
    <span class="highlight">fastcgi_index index.php;</span>
    <span class="highlight">fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;</span>
    <span class="highlight">include fastcgi_params;</span>
<span class="highlight">}</span>

} </pre>

Khi bạn đã thực hiện các thay đổi trên, lưu và đóng tệp.

Khởi động lại nginx để áp dụng các thay đổi cần thiết:

sudo service nginx restart

5. Tạo tệp PHP để kiểm tra cấu hình

LEMP stack của bạn bây giờ đã được thiết lập hoàn chỉnh. Chúng ta vẫn cần kiểm tra để đảm bảo nginx có thể chuyển đúng các tệp .php cho bộ xử lý php của chúng ta.

Chúng ta có thể làm điều này bằng cách tạo một tệp php test trong document root. Mở một tệp mới có tên info.php trong document root bằng trình soạn thảo:

sudo nano /usr/share/nginx/html/info.php

Gõ vào tệp mới nội dung php hợp lệ dưới đây, nội dung này sẽ trả về thông tin định dạng về máy chủ:

<?php
phpinfo();
?>

Khi bạn đã xong, lưu và đóng tệp.

Bây giờ, bạn có thể truy cập tệp này trong trình duyệt bằng cách truy cập tên miền hoặc địa chỉ IP công cộng của máy chủ theo sau bởi /info.php:

<pre> http://<span class="highlight">server_domain_name_or_IP</span>/info.php </pre>

Bạn sẽ thấy một trang web được tạo ra bởi php hiển thị thông tin về máy chủ của bạn

Nếu bạn thấy trang như vậy, bạn đã cấu hình xử lý php với nginx thành công. Sau khi kiểm tra, tốt nhất bạn nên xóa tệp mà bạn vừa tạo vì nó có thể cung cấp cho người dùng trái phép một số thông tin về cấu hình của bạn, giúp họ cố gắng tấn công. Bạn luôn có thể tạo lại tệp này nếu cần.

Để xóa tệp, gõ:

sudo rm /usr/share/nginx/html/info.php

Kết luận

Bây giờ, khi LEMP stack đã được cấu hình trên máy chủ Ubuntu 14.04, bạn có một nền tảng mạnh mẽ và linh hoạt để phục vụ nội dung web và triển khai các ứng dụng web cho khách truy cập. Với sự kết hợp giữa Linux, Nginx, MySQL, và PHP, bạn có thể dễ dàng phát triển và quản lý các trang web động, đáp ứng nhu cầu của mọi ứng dụng web hiện đại.

Sau khi cài đặt Linux trên Ubuntu 14.04, bạn cần môi trường ổn định để triển khai? Thuê máy chủ VPS là lựa chọn lý tưởng, cung cấp tài nguyên linh hoạt và hiệu suất cao. Khám phá các gói thuê máy chủ VPS để đảm bảo dự án của bạn vận hành mượt mà!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *