Thứ Bảy, 18 tháng 6, 2016

Thêm tên miền và database vào VVV và cài WordPress

Sau khi cài xong VVV trên Vagrant chúng ta đã có một máy ảo để chạy WordPress thật oách xà lách với một số website WordPress được cài mặc định. Trong bài hướng dẫn này mình sẽ hướng dẫn bạn chi tiết cách thêm một tên miền ảo vào máy ảo và cách thêm một database, cài WordPress dựa vào workflow của VVV.

Mặc định, thư mục /vvv-tut/config/nginx-config/ sẽ chứa các thiết lập NGINX, bao gồm các thiết lập tạo virtualhost (một cách nói khác chỉ việc thêm tên miền vào webserver). Trong đó, mọi thiết lập trong thư mục nginx-config/sites sẽ được tự động sử dụng nên chúng ta muốn thêm tên miền nào thì cứ tạo ra các tập tin cấu hình cho tên miền cần thêm vào ở đó là được.

Đầu tiên bạn hãy truy cập vào thư mục /vvv-tut/config/nginx-config/sites và copy tập tin local-nginx-example.conf-sample ra một tập tin khác và đổi tên thành tên_nào_đó.conf, ví dụ mình đặt là thachpham.local.conf để phân biệt với các tập tin khác là tập tin này sẽ dành cho việc cấu hình tên miền thachpham.local. Nói chung bạn có thể sử dụng bất kỳ tên nào, miễn là đuôi mở rộng phải là .conf.

them-domain-vvv-01

Sau đó mở tập tin đó lên và để ý đoạn code sau:

server { # Determines the port number that nginx will listen to for this # server configuration. 80 is the default http port. listen 80; # Listen for HTTPS requests as well listen 443 ssl; # Tells nginx what domain name should trigger this configuration. If # you would like multiple domains or subdomains, they can be space # delimited here. See http://nginx.org/en/docs/http/server_names.html server_name testserver.com; # Tells nginx which directory the files for this domain are located root /srv/www/wordpress-local; # Includes a basic WordPress configuration to help with the common # rules needed by a web server to deal with WordPress properly. include /etc/nginx/nginx-wp-common.conf;}

Trong đó, dòng 12 và 15 là hai dòng mà bạn sẽ sửa lại. Cụ thể:

server_name: tên miền cần thêm vào. Bạn nên sử dụng một tên miền ảo, ví dụ: thachpham.localroot: Đường dẫn tới thư mục chứa website trên máy ảo. Lưu ý /srv/www/ tương ứng với thư mục /vvv/www/ trên máy tính của bạn.

Ví dụ mình muốn thêm tên miền thachpham.local và lưu code vào thư mục /vvv/www/thachpham.local thì sẽ sửa như sau:

server { # Determines the port number that nginx will listen to for this # server configuration. 80 is the default http port. listen 80; # Listen for HTTPS requests as well listen 443 ssl; # Tells nginx what domain name should trigger this configuration. If # you would like multiple domains or subdomains, they can be space # delimited here. See http://nginx.org/en/docs/http/server_names.html server_name thachpham.local; # Tells nginx which directory the files for this domain are located root /srv/www/thachpham.local; # Includes a basic WordPress configuration to help with the common # rules needed by a web server to deal with WordPress properly. include /etc/nginx/nginx-wp-common.conf;}

Cuối cùng bạn vào thư mục /vvv/www và tạo thêm một thư mục tương ứng với tên thư mục đã thiết lập ở root.

them-domain-vvv-02

Sau đó hãy mở tập tin /vvv-tut/www/vvv-hosts và thêm một dòng khai báo domain bạn cần thêm vào. Ví dụ: thachpham.local.

them-domain-vvv-03

Cuối cùng là gõ lệnh vagrant provision trong thư mục vvv-tut, bạn có thể sẽ đợi khoảng 5 – 10 phút để nó re-build lại VVV.

Ok, bây giờ thì hãy thử truy cập vào tên miền của bạn đi nào. Nếu nó ra trang lỗi 403 thì đã thành công, nó báo lỗi 403 là vì bạn chưa có tập tin index ở trong đó.

Có 2 cách để tạo database trong VVV tùy theo khả năng và nhu cầu của bạn.

Cách đơn giản nhất là bạn hãy vào phpMyAdmin theo đường dẫn http://vvv.dev/database-admin/ và đăng nhập với tài khoản root/root và tạo database ở đó.

them-database-vvv-01

Rồi bạn sử dụng thông tin database sau để kết nối:

Database host: localhostDatabase Name: $tên_databaseDatabase User:rootDatabase Password:root

Cách này chúng ta sẽ thiết lập một lệnh SQL để tạo database mỗi khi chúng ta gõ lệnh vagrant provision. Cách này sẽ có một lợi thế là linh hoạt hơn đối với những bạn biết sử dụng lệnh SQL.

Bạn copy tập tin /vvv/database/init-custom.sql.sample sang một tập tin init-custom.sql cùng thư mục theo cấu trúc /vvv/database/init-custom.sql.

Sau đó mình mở tập tin đó lên và khai báo lệnh tạo database:

CREATE DATABASE IF NOT EXISTS `thachpham_local`;GRANT ALL PRIVILEGES ON `thachpham_local`.* TO 'root'@'localhost' IDENTIFIED BY 'mật khẩu root (mặc định là root)';

Lệnh trên có nghĩa là nó sẽ kiểm tra xem server của bạn đã có database nào tên là thachpham_local chưa. Nếu chưa nó sẽ tạo ra database với tên đó và cấp quyền cho user root sở hữu nó (thực ra là user root có toàn quyền trên mọi database rồi hehe).

Bạn có thể thêm nhiều dòng như thế nếu cần tạo nhiều database khác nhau.

Sau đó lưu lại và chạy lệnh vagrant provision.

Bây giờ thì vào phpMyAdmin kiểm tra thử xem.

Bây giờ mình có domain riêng rồi, biết thư mục chứa dữ liệu của domain rồi, có thông tin database đầy đủ rồi, làm gì nữa? À chắc không làm gì đâu, để đó chơi vậy á. Giỡn chơi thôi, chứ bây giờ bạn đã có thể cài bất cứ ứng dụng PHP & MySQL vào rồi đó. Nhưng ở đây mình sẽ nói qua về cách sử dụng WP CLI để cài đặt WordPress nhanh, bạn nên học cách sử dụng WP CLI càng sớm càng tốt vì nó rất có lợi sau này.

Trước tiên truy cập lệnh vào thư mục website cần cài đặt:

$ wp core downloadDownloading WordPress 4.3.1 (en_US). Success: WordPress downloaded.

Sau đó tạo tập tin config với thông tin database của bạn.

$ wp core config --dbname=thachpham_local --dbuser=root --dbpass=root --skip-checkSuccess: Generated wp-config.php file.

Cuối cùng là cài đặt với các thông tin tùy chỉnh:

$ wp core install --url=http://thachpham.local --title="Thach Pham Local" --admin_user=admin --admin_password=123456 --admin_email=contact@thachpham.comSuccess: WordPress installed successfully.

Và nếu thích, mình thiết lập nó sang tiếng Việt luôn:

$ wp core language install vi && wp core language activate viSuccess: Language installed. Success: Language activated.

Và import dữ liệu mẫu cho nó oách. Nhưng trước tiên phải cài plugin WP Importer trước.

$ wp plugin install wordpress-importer --activate

Sau đó là tải tập tin dữ liệu mẫu xml rồi cho nó import vào.

$ curl -OL https://wpcom-themes.svn.automattic.com/demo/theme-unit-test-data.xml && wp import theme-unit-test-data.xml --authors=create && rm -rf theme-unit-test-data.xml

Sẵn tiện cài cái theme khác vào cho nó đẹp mắt nhỉ.

$ wp theme install hueman --activate

Ok, tạm thời bây giờ chúng ta đã có một website WordPress khá oke mà nãy giờ chúng ta còn chưa chạm tay vào bảng điều khiển của nó nữa. Sound interesting? Nhưng chưa hết, ở bài sau mình sẽ chia sẻ thêm về cách tạo một script tự động cài đặt website trong VVV theo ý muốn của mình. Ở đó bạn có thể tự thiết lập nó sửa tập tin hosts, tự tạo database và tự thực thi các lệnh wp-cli hoặc là dùng bất cứ gì để setup website.

Thạch Phạm Thạch Phạm

Đam mê với web và lập trình, thích viết và chia sẻ, nghiện cà phê và xăm mình, hứng thú với nhạc dân ca và nhạc không lời.

Xem thêm bài viết Subscribe .

Tạo script Auto Site Setup cho VVV

Auto Site Setup của VVV là một trong những tính năng đặc trưng của nó dẫn đến nhiều lập trình viên rất thích sử dụng. Nói một cách dễ hiểu, nó sẽ giúp bạn tự cấu hình một kịch bản bằng Bash Script để cài đặt website theo ý muốn của mình. Do VVV được thiết kế đặc thù cho WordPress cộng thêm việc kết hợp với WP-CLI nên bạn có thể làm rất nhiều việc với tính năng này.

Chẳng hạn bạn muốn tạo ra một script riêng cho mình để cài một website WordPress được thiết lập riêng dành cho bạn như cài sẵn theme nào, cài sẵn plugin nào, thêm dữ liệu mẫu, nhập dữ liệu database,….hầu như bạn có thể làm mọi thứ, chỉ là bạn có biết hay không mà thôi.

Trong bài viết này mình sẽ hướng dẫn cách tạo ra một Auto Site Setup script cho VVV, và mình sẽ lấy ví dụ là cài một website WordPress sử dụng WooCommerce và có thêm dữ liệu mẫu cho WooCommerce.

Trước tiên bạn sẽ cần truy cập vào thư mục /vvv-tut/www tạo ra một thư mục tên bất kỳ, ở đây mình đặt tên là woocommerce-test.

Tạo thư mục woocommerce-test Tạo thư mục woocommerce-test

Tiếp tục tại thư mục vừa tạo, bạn tạo thêm 3 tập tin như sau:

vvv-hosts: Khai báo tên miền tự động thêm vào tập tin hosts.vvv-nginx.conf: Khai báo cấu hình NGINX tự động thêm tên miền.vvv-init.sh: Bash Script cho quá trình cài đặt.

vvv-auto-site-setup-1

Ở tập tin này bạn chỉ cần đơn giản là khai báo tên miền mà bạn muốn nó tự động thêm vào tập tin hosts.

woocommerce-test.dev

Tập tin này sẽ chứa một đoạn thiết lập tên miền mới trong NGINX giống như cách chúng ta đã thêm tên miền vào VVV mà mình đã trình bày các bài viết trước.

server { listen 80; server_name woocommerce-test.dev; # The {vvv_path_to_folder} token gets replaced # with the folder containing this, e.g. if this # folder is /srv/www/foo/ and you have a root # value of `{vvv_path_to_folder}/htdocs` this # will be auto-magically transformed to # `/srv/www/foo/htdocs`. root {vvv_path_to_folder}; include /etc/nginx/nginx-wp-common.conf;}

Lưu ý, phần {vvv_path_to_folder} nó sẽ tượng trưng cho đường dẫn thư mục hiện tại mà tập tin này đang được lưu, tức là thư mục /vvv/www/woocommerce-test và bạn nên để nguyên nó. Phần còn lại là sửa lại server_name thành tên miền bạn cần thêm.

PS: Hãy tự gõ lại 100% vì copy và paste có thể sẽ gây lỗi cú pháp.

# Welcomeecho "Dang cai dat WooCommerce Test"# Tao databasemysql -u root -proot -e "CREATE DATABASE IF NOT EXISTS woocommerce_test"mysql -u root -proot -e "GRANT ALL PRIVILEGES ON woocommerce_test .* TO wp@localhost IDENTIFIED BY 'wp';"# Download WordPressecho "Download phien ban WordPress moi nhat"svn checkout http://svn.automattic.com/wordpress/trunk/ .# Configwp core config --allow-root --dbname="woocommerce_test" --dbuser=wp --dbpass=wp --dbhost="localhost"wp core install --allow-root --url=woocommerce-test.dev --title="Woocommerce Test" --admin_user=admin --admin_password=password --admin_email=contact@thachpham.com# Cai dat pluginwp plugin install wordpress-importer --allow-root --activatewp plugin install woocommerce --allow-root --activate# Import du lieu mauecho "Dang nap du lieu mau"wp import wp-content/plugins/woocommerce/dummy-data/dummy-data.xml --allow-root --authors=create# Ket thucecho "Ket thuc cai dat WooCommerce"

Bạn chịu khó đọc kỹ các comment của mình trong đó nhé.

Bây giờ hãy lưu lại và gõ lệnh vagrant provision để tái tạo lại và setup cái script của bạn đã khai báo.

Nếu nó chạy xong mà không gặp lỗi gì như bên dưới thì nó đã cài xong rồi.

vvv-auto-site-setup-2

Bây giờ bạn có thể thử truy cập vào website woocommerce-test.dev để xem thành quả nhé. Nếu vào mà không được thì kiểm tra lại kết quả output của lệnh vagrant provision xem có lỗi nào không, và kiểm tra tập tin hosts ở máy tính đã được khai báo tên miền woocommerce-test.dev chưa.

Nếu bạn lưu lại thư mục chứa script tự cài đặt của mình lại và gửi cho bạn bè, hoặc tái sử dụng sau này thì chỉ cần copy nó vào thư mục /vvv/www rồi chạy lệnh vagrant provision là được.

Thế bạn đã thấy chức năng này tiện lợi chưa nào? Nhưng nó có vẻ hơi rườm rà đúng không? và quan trọng là nó không hoạt động tốt ở Windows, nhưng không sao, ở bài sau mình sẽ hướng dẫn bạn thêm một công cụ khác dùng kèm với VVV để tạo website WordPress nhanh chóng trên máy ảo.

Thạch Phạm Thạch Phạm

Đam mê với web và lập trình, thích viết và chia sẻ, nghiện cà phê và xăm mình, hứng thú với nhạc dân ca và nhạc không lời.

Xem thêm bài viết Subscribe .