Hướng dẫn cài LEMP (Nginx,Mysql,PHP) Stack trong Bash on Ubuntu on Windows

Trước đây để tạo môi trường phát triển web sử dụng PHP tương đồng với các máy chủ Linux thì thường các cụ thường phải sử dụng VMWare để tạo máy ảo, sau này thì có Docker, Vagrant hay mấy cái khác để các lão ảo hóa đủ thứ … Cơ mà trong Windows 10 nó có cái app mới đấy là “Bash on Ubuntu on Windows” đảm bảo lão nào dùng rồi sẽ phê lòi luôn , chạy Ubuntu ngay trong lõi Windows sử dụng ngang hàng toàn bộ tài nguyên HDD,RAM,CPU mà không bị cắt tài nguyên như cụ VMWare.

Làm sao để cài Bash on Ubuntu on Windows ?

Đầu tiên là các cụ phải kiểm tra xem máy có phải là Windows 10 64bit không, phần này chắc không phải hướng dẫn  đâu các cụ nhề .

Xong các cụ chạy lệnh này trong PowerShell để bật chức năng Windows subsystem for Linux lên

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Xong thì các cụ khởi động lại máy tính nếu nó hỏi nhé, đợi khởi động lại xong các cụ chạy tiếp lệnh sau trong cmd.exe ( Command Prompt ) để cài đặt

bash hoặc lxrun /install

 

nhập y xong ngồi đợi một tí để OS tự cài đặt các kiểu, khi nào nó bắt các cụ nhập username password thì các bác cứ nhập vào là xong.

Mở bash bằng cách vào cmd.exe ( Command Prompt )

CÀI ĐẶT nginx NHư thế nào?

Giờ là đến bước cài đặt Nginx, trước tiên các cụ chuyển về quyền root để cài

sudo su
sudo su -> nhập password của bạn

xong chạy tiếp lệnh này, khi nào nó hỏi thì chọn Y

apt-get update && apt-get install nginx

Xong kiểm tra xem Nginx đã được cài OK chưa

service nginx status

Nếu báo như hình thì ok nhé các cụ còn nếu nó báo là unrecognized service thì là fail rồi kéo lên trên xem lỗi lầm gì thì thả bình luận ở dưới để tui hỗ trợ cho.

Dưới đây là một số thư mục liên quan đến Nginx

+ /etc/nginx - Đây là chỗ lưu toàn bộ cấu hình của nginx
|--+ fastcgi.conf - File cấu hình tham số mặc định để truyền qua PHP-FPM 
|--+ nginx.conf - File cấu hình chính của nginx
|--+ sites-availalbe - Thư mục đặt những cấu hình cho từng website
|--+ sites-enable - Thư mục đặt những symlink từ bên sites-available
|--+ ... một số file cấu hình sẵn khác
+ /var/log/nginx - Đây là nơi lưu log 
+ /var/www/html - Đây là DOCUMENT_ROOT mặc định của Nginx

Bước tiếp theo là khởi động Nginx để chắc chắn rằng Nginx đã hoạt động tốt

service nginx start

OK truy cập http://localhost/ trên trình duyệt web của bạn ( Chrome / Firefox )

Một số lệnh để điều khiển service nginx cho các cụ  sử dụng

service nginx restart - Khởi động lại nginx
service nginx start - Khởi động Nginx
service nginx stop - Dừng Nginx
service nginx reload - Reload lại cấu hình 
service nginx force-reload - Bắt buộc toàn bộ worker reload lại cấu hình 
service nginx configtest - Test cấu hình xem có lỗi gì ko

CÀI đặt và cấu hình php-fpm 7.0 ?

Sử dụng apt-get để cài đặt gói php-fpm mới nhất , do Ubuntu on Windows sử dụng bản Ubuntu 16 nên bản php 7.0 sẽ được cài đặt vào . Nếu cụ nào muốn cài php5.6 thì add repo của Ondrej vào nhé, còn cụ nào mới thì cứ PHP mới mà dùng

apt-get install php-fpm

Kiểm tra xem php-fpm đã được cài và thêm vào service chưa

service php7.0-fpm status

ok rồi, nhưng đừng vội bật service lên vì nếu để php-fpm chạy với cấu hình mặc định thì sẽ php sẽ chạy bị chậm do sử dụng unix socket chứ không sử dụng tcp/ip, lí do thì tui đoán là do bản Ubuntu on Windows này nó chưa phải bản chính thức nên còn nhiều lỗi liên quan đến xử lí filesytem nên khi sử dụng unix socket thì bị chậm , giờ các cụ sửa file /etc/php/7.0/fpm/pool.d/www.conf

nano /etc/php/7.0/fpm/pool.d/www.conf

tìm dòng

listen = /run/php/php7.0-fpm.sock

sửa lại thành

listen = 9000

tham số 9000 là để php-fpm lắng nghe ở port 9000 nhận yêu cầu từ một chương trình khác như nginx, apache để xử lí mã nguồn php sau đó trả kết quả về .

xong các cụ ấn Ctrl + O rồi Ctrl + X để lưu và thoát khỏi trình chỉnh sửa file nano

sau đó cụ bắt đầu bật dịch vụ php-fpm lên được rồi, lệnh này chạy bật service xong kiểm tra luôn xem service chạy hay chưa

service php7.0-fpm start && service php7.0-fpm status

ok running là chạy rồi, giờ bước tiếp theo là các cụ cần cấu hình lại NGINX một chút, để NGINX bắt các request đến file có đuôi (extension) .php để gửi đến php-fpm xử lí và nhận kết quả trả về show ra browser

Các cụ mở file /etc/nginx/sites-available/default

nano /etc/nginx/sites-available/default

thay đổi đoạn, nếu không tìm thấy có thể bấm tổ hợp Ctrl + W rồi nhập đoạn dưới vào + Enter để tìm

index index.html index.htm index.nginx-debian.html;

thành

index index.php index.html index.htm index.nginx-debian.html;

để tự nhận file index.php là mặc định khi người dùng gửi yêu cầu đến thư mục, tiếp theo các cụ kéo xuống phía dưới một chút sẽ thấy đoạn này

#location ~ \.php$ {
#       include snippets/fastcgi-php.conf;
#
#       # With php7.0-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php7.0-fpm:
#       fastcgi_pass unix:/run/php/php7.0-fpm.sock;
#}

sửa nó thành như này là ok

location ~ \.php$ {
       include snippets/fastcgi-php.conf;
       fastcgi_pass 127.0.0.1:9000;
}

xong các cụ lại ấn Ctrl + O rồi Ctrl + X để lưu và thoát ra, giờ thì bật khởi động lại NGINX

service nginx restart

các cụ tạo 1 file index.php/var/www/html/ với nội dung như sau

<?php
phpinfo();

tạo xong file các cụ nhớ chmod vs chown lại file để tránh lỗi phân quyền nhé

#Thay đổi quyền cho file
chmod 0755 /var/www/html/index.php

#Thay đổi sở hữu cho file
chown www-data:www-data /var/www/html/index.php

truy cập vào http://localhost sẽ thấy PHP chạy ngon lành nhé hihi

hướng dẫn cài đặt mysql server và client ?

Đầu tiên các cụ chạy lệnh, nhập Y để cài đặt Mysql Server và Client bản 5.7

apt-get install mysql-server

Ngồi chơi xơi nước đợi nó tải các package cần thiết về cài xong, nó sẽ hỏi các bác nhập root password như này

các bác nhập pass vào rồi nó hỏi “Repeat …” thì nhập thêm lần nữa rồi Enter thôi

đợi tí là xong, tiếp theo các cụ lại chạy lệnh để kiểm tra xem đã có service mysql chưa

service mysql status

OK nếu thấy như hình là các cụ đã cài xong Mysql rồi, giờ các cụ bật nó lên

service mysql start

à ở đây gặp cái lỗi như này, nhiều lúc cài cũng hay bị

No directory, logging in with HOME=/

Lỗi này gặp phải do package cài mysql trên repo của ubuntu bị lỗi, khi thêm user mysql thì thằng package đã không chỉ định thư mục chính cho user đó, nên các cụ chỉ cần chạy lệnh sau để đặt lại thư mục chính cho user mysql

# Dừng dịch vụ mysql
service mysql stop 
# Thay đổi thư mục gốc cho tài khhoản mysql
usermod -d /var/lib/mysql/ mysql
# Chạy dịch vụ mysql
service mysql start

Kiểm tra lại một lần nữa bằng các sử dụng mysql-client kết nối tới mysql-server để chắc chắn rằng mysql-server đã hoạt động tốt

mysql -uroot -p -hlocalhost

Vậy là xong rồi , cũng đơn giản mà phải không các cụ, cụ nào mà mới mới không hiểu chỗ nào thì cứ comment nhé, mình sẽ hỗ trợ nhiệt tình .

Các cụ thấy hay thì chia sẻ cho tui lấy động lực viết tiếp phần 02.

“Hướng dẫn cài đặt WordPress trong Ubuntu on Windows” nhé