WordPress 2: cài đặt và thiết lập LAMP trên localhost

Bài viết đầu tiên này, chúng ta hãy cùng tìm hiểu cách cài đặt môi trường LAMP (để chạy WordPress) trên localhost.

Vì sao trên localhost?

  • Để bạn có thể test kết quả nhanh gọn lẹ trên chính máy tính của mình.
  • Để có thể xem được cập nhật nhanh nhất có thể sau mỗi lần chỉnh sửa (nếu thông qua server online thật, cache trình duyệt sẽ làm bạn phải xóa cache hoặc chờ rất lâu để thấy sự thay đổi).
  • Để bạn có lỡ xóa, mất dữ liệu hay làm gì đó cũng không ảnh hưởng đến dữ liệu trang web chính thức của bạn!

Cài LAMP trên localhost

Để có thể chỉnh sửa và dễ dàng trong việc thiết kế trang web WordPress, bạn cần có thể chạy nó trên máy tính cá nhân (localhost).

  • Mục tiêu: Có một trang web WordPress cơ bản chạy trên máy tính riêng ở địa chỉ dạng http://localhost/test (Bạn sẽ làm được đến đây ở Kỳ 3).
  • Cách làm tổng quát: Download một trình LAMP (Linux, Apache, MySQL, PHP) để tạo server local trên máy bạn (Kỳ này). Sau đó chúng ta download WordPress và cài trên server ấy (Kỳ 3). Có nhiều lựa chọn cho một trình LAMP, tôi sẽ đề cập cụ thể ở từng hệ điều hành. Một lựa chọn thay thế chung cho cả 3 hệ điều hành là XAMPP.

Trên Linux

Dùng những dòng lệnh và hướng dẫn trên trang DigitalOcean để cài LAMP. Trang này hướng dẫn khá chi tiết. Bên dưới là những dòng code ngắn gọn tôi đã trích xuất và dùng từ trang web của DigitalOcean cùng một số lưu ý khi tôi cài đặt, bạn cũng có thể xem ghi chú đầy đủ của tôi khi cài đặt dựa trên bài hướng dẫn trên, ghi chú của tôi ngắn gọn hơn.

Đầu tiên bạn cần cài Apache2 and Mysql server.
# Cập nhật hệ thống
sudo apt update

# Cài đặt apache2
sudo apt install apache2

# Điều chỉnh Firewall để Allow Web Traffic
sudo ufw app list
sudo ufw app info "Apache Full" # Giá trị trả về phải là port 80 và 443
sudo ufw allow in "Apache Full"
# Thử vào trang web http://localhost

# Cài đặt mysql
sudo apt install mysql-server

# Thiết đặt mysql (Chọn Y cho tất cả, thiết lập password nếu cần thiết)
sudo mysql_secure_installation
sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;
# Đổi 'testpass' với password của chính bạn!!!
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'testpass';
FLUSH PRIVILEGES;
# Hãy chắc rằng 'root' có 'mysql_native_password' trong mục 'plugin'
SELECT user,authentication_string,plugin,host FROM mysql.user;
exit

Trong quá trình cài đặt Apache2 và MySQL server, sau khi thiết lập password cho root user trong mysql, thay vì dùng sudo mysql, bạn phải dùng câu lệnh sau để có thể truy cập mysql bằng quyền root.

mysql -u root -p

Sau đó nhập password của bạn (testpass trong đoạn code ví dụ của Math2IT)!

Tiếp theo bạn cần phải cài PHP. Cũng lại là từ trang DO, ta có loạt code cơ bản sau.
# Cài đặt php
sudo apt install php libapache2-mod-php php-mysql

# Nói cho web server ưu tiên file có đuôi .php hơn
sudo gedit /etc/apache2/mods-enabled/dir.conf
# Tìm IfModule mod_dir.c và di chuyển index.php lên đầu tiên
# Khởi động lại apache webserver
sudo systemctl restart apache2

# Kiểm tra status apache2
sudo systemctl status apache2 # Nhấn Q để thoát

# Cài thêm một số modules phụ
apt search php- | less # Nhấn Q để thoát

Sau khi cài xong, tạo một file php trong thư mục /var/www/html/,

sudo gedit /var/www/html/info.php

Với nội dung,

<?php
phpinfo();
?>

Sau đó vào http://localhost/info.php để test thử xem được không.

Tiếp theo bạn cần cài MySQL,
# Cài phpmyadmin
sudo apt update
sudo apt install phpmyadmin php-mbstring php-gettext
# Chọn apache2 là mặc định nếu bạn được hỏi

# Kích hoạt mbstring PHP extension
sudo phpenmod mbstring

# Khởi động lại Apache để cho các thay đổi có tác dụng
sudo systemctl restart apache2
  • Nếu bạn gặp lỗi ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO), làm theo hướng dẫn này trên StackOverflow.
  • Nếu gặp lỗi Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’, làm theo cái này.

Nếu vẫn gặp lỗi, thử xóa và cài lại MySQL.

sudo apt-get remove --purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get install mysql-server mysql-client

Làm việc với MySQL
# Đăng nhập vào MySQL
mysql -u root -p

# Xem danh sách các users
# (trong môi trường mysql)
SELECT user,authentication_string,plugin,host FROM mysql.user;

# Tạo một user mới ("test") và gán cho người này một password thật mạnh (ở đây tôi dùng "testpass")
CREATE USER 'test'@'localhost' IDENTIFIED BY 'testpass';

# Sau đó trao quyền sinh sát cho user này
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' WITH GRANT OPTION;

Sau khi cài phpmyadmin, sẽ có một user tên phpmyadmin, nếu không, bạn cần tạo một user tên này giống như user test ở trên và cũng trao quyền cho nó như vậy.

Cuối cùng, vào thử http://localhost/phpmyadmin và đăng nhập bằng user đã tạo ở trên (test).

Trong trường hợp bạn muốn thay đổi đường dẫn mặc định của Apache2 (mặc định nó sẽ cài vào /var/www/html, hãy tải và làm theo hướng dẫn công cụ này. Tác giả cũng có một bài trả lời và hướng dẫn trên StackExchange.

Trên Windows

Trên Windows, trình LAMP được chọn là WampServer. Quá trình cài đặt và thiết lập rất ư đơn giản. bạn cứ download về, cài bình thường và để măc định tất cả (trang web của bạn sau này sẽ được đặt ở C:\wamp64\www). Sau đó bạn chạy WampServer, nếu thấy biểu tượng wp17 - Wordpress 2: cài đặt và thiết lập LAMP trên localhost có nghĩa là nó đang chạy thành công. Bạn vào http://localhost để xem thành quả.

Trên MacOS

Trên MacOS, trình LAMP được chọn là MAMP. Do tôi không có MacOS đê thực hành, mọi hướng dẫn được tham khảo từ trang của chị Tania.

Copy trang web có sẵn về localhost

Trong trường hợp bạn cần copy toàn bộ trang WordPress hiện tại về máy và chạy trên localhost, hãy xem cách bên dưới. Cách này có ưu điểm là bạn sẽ sử dụng toàn bộ dữ liệu của trang web hiện tại và chỉnh sửa trực tiếp trên nó trước khi áp dụng cho trang web chính.

Copy toàn bộ trang web về máy
  • Sử dụng plugin All-in-One WP Migration. Nhược điểm của nó là nếu bạn muốn xuất một file dung lượng lớn, bạn phải mua phiên bản Pro. Bạn cũng cần phải cài WordPress trước khi dùng plugin này. Tôi dùng plugin này để làm. Bạn có thể tham khảo hướng dẫn dùng ở đây (English) hoặc ở đây (tiếng Việt).
    • Kinh nghiệm trong quá trình sử dụng: Nếu trang của bạn quá lớn, bạn chỉ nên export data, không export media file. Sau khi bạn import, có thể dùng trình FTP để download tất cả file media trong thư mục wp-content/uploads về thư mục tương ứng trên localhost.
  • Sử dụng plugin Duplicator. Ưu điểm của nó là bạn không cần phải cài trước WordPress. Xem thêm video này để biết cách sử dụng. Tôi không dùng plugin này vì dung lượng database xuất ra quá lớn (trên 500 Mb), thậm chí tôi đã chọn tùy chọn chỉ xuất database mà không xuất media files nó vẫn không được chỗ nào đấy.

Kết

Do quá trình cài đặt và thiết lập tôi đã làm cách lúc hoàn tất bài này khá lâu, tôi chỉ dựa vào ghi chú và trí nhớ nên tất nhiên còn rất nhiều bước với tôi đơn giản nhưng có thể với bạn là cần thiết mà tôi không ghi ra tại đây. Nếu có bất cứ khó khăn nào, bạn cứ thoải mái comment bên dưới bài viết nhé.

Hết bài này, xem như bạn đã có cho mình một môi trường internet nằm gói gọn trong máy bạn. Ở bài tiếp theo, chúng ta sẽ tiến hành cài đặt WordPress và có được trang WP cơ bản đầu tiên.