{"id":41413,"date":"2026-05-31T13:35:39","date_gmt":"2026-05-31T06:35:39","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=41413"},"modified":"2026-05-31T13:35:39","modified_gmt":"2026-05-31T06:35:39","slug":"cach-cai-wordpress-tren-ubuntu-bang-lemp","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/","title":{"rendered":"C\u00e1ch c\u00e0i WordPress tr\u00ean Ubuntu b\u1eb1ng LEMP: H\u01b0\u1edbng d\u1eabn m\u1edbi nh\u1ea5t 2026"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed8I DUNG<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#Tom-tat-nhanh\" >T\u00f3m t\u1eaft nhanh<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#1-Chuan-bi-VPS-Ubuntu-va-cac-cau-hinh-ban-dau\" >1. Chu\u1ea9n b\u1ecb VPS Ubuntu v\u00e0 c\u00e1c c\u1ea5u h\u00ecnh ban \u0111\u1ea7u<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#2-Cai-dat-va-toi-uu-Web-Server-Nginx\" >2. C\u00e0i \u0111\u1eb7t v\u00e0 t\u1ed1i \u01b0u Web Server Nginx<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#3-Cai-dat-MariaDB-va-tao-Database-cho-WordPress\" >3. C\u00e0i \u0111\u1eb7t MariaDB v\u00e0 t\u1ea1o Database cho WordPress<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#4-Cau-hinh-PHP-83-FPM-de-bien-dich-ma-nguon\" >4. C\u1ea5u h\u00ecnh PHP 8.3-FPM \u0111\u1ec3 bi\u00ean d\u1ecbch m\u00e3 ngu\u1ed3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#5-Tai-va-thiet-lap-ma-nguon-WordPress-chuan-bao-mat\" >5. T\u1ea3i v\u00e0 thi\u1ebft l\u1eadp m\u00e3 ngu\u1ed3n WordPress chu\u1ea9n b\u1ea3o m\u1eadt<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#6-Tao-Server-Block-Nginx-de-nhan-dien-ten-mien\" >6. T\u1ea1o Server Block Nginx \u0111\u1ec3 nh\u1eadn di\u1ec7n t\u00ean mi\u1ec1n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#7-Cai-dat-chung-chi-SSL-Lets-Encrypt-mien-phi\" >7. C\u00e0i \u0111\u1eb7t ch\u1ee9ng ch\u1ec9 SSL Let&#8217;s Encrypt mi\u1ec5n ph\u00ed<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#Hoi-dap-nhanh-ve-loi-thuong-gap-FAQ\" >H\u1ecfi \u0111\u00e1p nhanh v\u1ec1 l\u1ed7i th\u01b0\u1eddng g\u1eb7p (FAQ)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#Tai-sao-website-WordPress-gap-loi-%E2%80%9CError-Establishing-a-Database-Connection%E2%80%9D\" >T\u1ea1i sao website WordPress g\u1eb7p l\u1ed7i &#8220;Error Establishing a Database Connection&#8221;?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#Tai-sao-WordPress-yeu-cau-tai-khoan-FTP-khi-cai-PluginTheme\" >T\u1ea1i sao WordPress y\u00eau c\u1ea7u t\u00e0i kho\u1ea3n FTP khi c\u00e0i Plugin\/Theme?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#Lam-the-nao-de-tang-dung-luong-upload-file-cho-WordPress-tren-LEMP\" >L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 t\u0103ng dung l\u01b0\u1ee3ng upload file cho WordPress tr\u00ean LEMP?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/interdata.vn\/blog\/cach-cai-wordpress-tren-ubuntu-bang-lemp\/#Checklist-ra-soat-an-toan-he-thong-truoc-khi-chay-chinh-thuc\" >Checklist r\u00e0 so\u00e1t an to\u00e0n h\u1ec7 th\u1ed1ng tr\u01b0\u1edbc khi ch\u1ea1y ch\u00ednh th\u1ee9c<\/a><\/li><\/ul><\/nav><\/div>\n<p>Vi\u1ec7c chuy\u1ec3n sang t\u1ef1 qu\u1ea3n tr\u1ecb VPS Ubuntu v\u1edbi LEMP (Nginx, MariaDB, PHP) ch\u00ednh l\u00e0 b\u01b0\u1edbc ngo\u1eb7t gi\u00fap website WordPress c\u1ee7a b\u1ea1n t\u1ea3i d\u01b0\u1edbi 1 gi\u00e2y. Kh\u00f4ng c\u1ea7n Control Panel n\u1eb7ng n\u1ec1, h\u1ec7 th\u1ed1ng s\u1ebd ch\u1ea1y m\u01b0\u1ee3t m\u00e0 v\u00e0 b\u1ea3o m\u1eadt t\u1ed1i \u0111a khi t\u1ef1 t\u1ed1i \u01b0u b\u1eb1ng tay.<\/p>\n<div class=\"info-box\">\n<h2><span class=\"ez-toc-section\" id=\"Tom-tat-nhanh\"><\/span>T\u00f3m t\u1eaft nhanh<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><em>B\u1ed9 khung th\u00f4ng s\u1ed1 k\u1ef9 thu\u1eadt chu\u1ea9n nh\u1ea5t cho LEMP stack c\u00e0i \u0111\u1eb7t WordPress trong n\u0103m 2026:<\/em><\/p>\n<ul>\n<li><strong>H\u1ec7 \u0111i\u1ec1u h\u00e0nh:<\/strong> Ubuntu 22.04 tr\u1edf l\u00ean.<\/li>\n<li><strong>Web Server:<\/strong>\u00a0Nginx (b\u1ea3n Stable m\u1edbi nh\u1ea5t).<\/li>\n<li><strong>Database:<\/strong>\u00a0MariaDB Server (b\u1ea3o m\u1eadt h\u01a1n MySQL truy\u1ec1n th\u1ed1ng).<\/li>\n<li><strong>PHP Engine:<\/strong>\u00a0PHP 8.3-FPM ho\u1eb7c 8.4-FPM (k\u00e8m module t\u1ed1i \u01b0u cache).<\/li>\n<li><strong>B\u1ea3o m\u1eadt b\u1eaft bu\u1ed9c:<\/strong>\u00a0SSL Let&#8217;s Encrypt (HTTPS) v\u00e0 ph\u00e2n quy\u1ec1n ch\u1eb7t ch\u1ebd cho user\u00a0<code>www-data<\/code>.<\/li>\n<\/ul>\n<\/div>\n<hr \/>\n<h2><span class=\"ez-toc-section\" id=\"1-Chuan-bi-VPS-Ubuntu-va-cac-cau-hinh-ban-dau\"><\/span>1. Chu\u1ea9n b\u1ecb VPS Ubuntu v\u00e0 c\u00e1c c\u1ea5u h\u00ecnh ban \u0111\u1ea7u<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>C\u00e0i WordPress b\u1eb1ng LEMP y\u00eau c\u1ea7u VPS ch\u1ea1y Ubuntu LTS, c\u00f3 quy\u1ec1n root (ho\u1eb7c sudo) v\u00e0 m\u1ed9t t\u00ean mi\u1ec1n \u0111\u00e3 tr\u1ecf b\u1ea3n ghi A v\u1ec1 IP VPS.<\/p>\n<div class=\"info-box\">\u0110\u1ec3 qu\u00e1 tr\u00ecnh c\u00e0i \u0111\u1eb7t di\u1ec5n ra su\u00f4n s\u1ebb, b\u1ea1n c\u1ea7n m\u1ed9t m\u00e1y ch\u1ee7 \u1ea3o c\u00f3 \u0111\u01b0\u1eddng truy\u1ec1n \u1ed5n \u0111\u1ecbnh v\u00e0 IP s\u1ea1ch. H\u00e3y c\u00e2n nh\u1eafc \u0111\u0103ng k\u00fd <strong><a href=\"https:\/\/interdata.vn\/thue-vps\/\" target=\"_blank\" rel=\"noopener\">VPS gi\u00e1 r\u1ebb<\/a><\/strong> t\u1ea1i InterData \u0111\u1ec3 s\u1edf h\u1eefu ngay h\u1ea1 t\u1ea7ng m\u00e1y ch\u1ee7 CPU \u0111\u1eddi m\u1edbi, SSD NVMe U.2, b\u0103ng th\u00f4ng l\u1edbn v\u00e0 h\u1ed7 tr\u1ee3 24\/7 tr\u01b0\u1edbc khi b\u1eaft \u0111\u1ea7u.<\/div>\n<p><strong>Thao t\u00e1c:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/interdata.vn\/blog\/cach-truy-cap-vps-linux-bang-ssh\/\" target=\"_blank\" rel=\"noopener\">SSH v\u00e0o VPS<\/a> qua Terminal\/MobaXterm\/PuTTY.<\/li>\n<li>C\u1eadp nh\u1eadt to\u00e0n b\u1ed9 package h\u1ec7 th\u1ed1ng \u0111\u1ec3 tr\u00e1nh xung \u0111\u1ed9t th\u01b0 vi\u1ec7n:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo apt update &amp;&amp; sudo apt upgrade -y\r\n<\/code><\/pre>\n<ul>\n<li>C\u00e0i \u0111\u1eb7t c\u00f4ng c\u1ee5 b\u1ed5 tr\u1ee3:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo apt install curl wget nano unzip -y\r\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"2-Cai-dat-va-toi-uu-Web-Server-Nginx\"><\/span>2. C\u00e0i \u0111\u1eb7t v\u00e0 t\u1ed1i \u01b0u Web Server Nginx<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Nginx l\u00e0 web server ho\u1ea1t \u0111\u1ed9ng theo c\u01a1 ch\u1ebf h\u01b0\u1edbng s\u1ef1 ki\u1ec7n (event-driven). Khi k\u1ebft h\u1ee3p v\u1edbi WordPress, n\u00f3 x\u1eed l\u00fd \u0111\u1ed3ng th\u1eddi h\u00e0ng ngh\u00ecn k\u1ebft n\u1ed1i m\u00e0 ti\u00eau th\u1ee5 RAM\/CPU c\u1ef1c th\u1ea5p so v\u1edbi Apache.<\/p>\n<p><strong>Thao t\u00e1c:<\/strong><\/p>\n<ul>\n<li>C\u00e0i \u0111\u1eb7t Nginx:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo apt install nginx -y\r\n<\/code><\/pre>\n<ul>\n<li>C\u1ea5u h\u00ecnh Firewall (UFW) cho ph\u00e9p HTTP v\u00e0 HTTPS:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo ufw allow 'Nginx Full'<\/code><\/pre>\n<p>Xem th\u00eam H\u01b0\u1edbng d\u1eabn <a href=\"https:\/\/interdata.vn\/blog\/cach-thiet-lap-tuong-lua-cho-vps\/\" target=\"_blank\" rel=\"noopener\"><strong>Thi\u1ebft L\u1eadp T\u01b0\u1eddng L\u1eeda Cho VPS<\/strong><\/a>, n\u1ebfu VPS c\u1ee7a b\u1ea1n ch\u01b0a thi\u1ebft l\u1eadp t\u01b0\u1eddng l\u1eeda UFW tr\u01b0\u1edbc \u0111\u00f3.<\/p>\n<ul>\n<li>Ki\u1ec3m tra tr\u1ea1ng th\u00e1i Nginx:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo systemctl status nginx\r\n<\/code><\/pre>\n<blockquote><p><strong>M\u1eb9o:<\/strong>\u00a0M\u1edf tr\u00ecnh duy\u1ec7t, truy c\u1eadp \u0111\u1ecba ch\u1ec9 IP VPS. N\u1ebfu th\u1ea5y trang ch\u00e0o m\u1eebng &#8220;Welcome to nginx!&#8221; l\u00e0 th\u00e0nh c\u00f4ng.<\/p><\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"3-Cai-dat-MariaDB-va-tao-Database-cho-WordPress\"><\/span>3. C\u00e0i \u0111\u1eb7t MariaDB v\u00e0 t\u1ea1o Database cho WordPress<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>MariaDB l\u00e0 nh\u00e1nh m\u00e3 ngu\u1ed3n m\u1edf t\u1eeb MySQL, cho t\u1ed1c \u0111\u1ed9 truy v\u1ea5n nhanh v\u00e0 b\u1ea3o m\u1eadt nghi\u00eam ng\u1eb7t h\u01a1n. \u0110\u00e2y l\u00e0 l\u1ef1a ch\u1ecdn t\u1ed1i \u01b0u nh\u1ea5t cho WordPress tr\u00ean VPS Linux.<\/p>\n<p><strong>Thao t\u00e1c:<\/strong><\/p>\n<ul>\n<li>C\u00e0i \u0111\u1eb7t MariaDB:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo apt install mariadb-server mariadb-client -y\r\n<\/code><\/pre>\n<ul>\n<li>Ch\u1ea1y script b\u1ea3o m\u1eadt (\u0110\u1eb7t m\u1eadt kh\u1ea9u root, x\u00f3a user \u1ea9n danh, t\u1eaft remote login root):<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo mysql_secure_installation\r\n<\/code><\/pre>\n<ul>\n<li>\u0110\u0103ng nh\u1eadp MariaDB v\u00e0 t\u1ea1o database cho WordPress:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo mysql -u root -p\r\n<\/code><\/pre>\n<p>Ch\u1ea1y tu\u1ea7n t\u1ef1 c\u00e1c l\u1ec7nh SQL (Nh\u1edb thay m\u1eadt kh\u1ea9u th\u1eadt ph\u1ee9c t\u1ea1p v\u00e0o\u00a0<code>mat_khau_bao_mat<\/code>):<\/p>\n<pre><code class=\"language-sql\">CREATE DATABASE wordpress_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\r\nCREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'mat_khau_bao_mat';\r\nGRANT ALL ON wordpress_db.* TO 'wp_user'@'localhost';\r\nFLUSH PRIVILEGES;\r\nEXIT;\r\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"4-Cau-hinh-PHP-83-FPM-de-bien-dich-ma-nguon\"><\/span>4. C\u1ea5u h\u00ecnh PHP 8.3-FPM \u0111\u1ec3 bi\u00ean d\u1ecbch m\u00e3 ngu\u1ed3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>PHP-FPM (FastCGI Process Manager) \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf ri\u00eang cho web server t\u1ea3i cao. N\u00f3 t\u00e1ch bi\u1ec7t x\u1eed l\u00fd script PHP kh\u1ecfi file t\u0129nh, gi\u00fap web kh\u00f4ng b\u1ecb qu\u00e1 t\u1ea3i khi truy c\u1eadp \u0111\u1ed9t bi\u1ebfn.<\/p>\n<p><strong>Thao t\u00e1c:<\/strong><\/p>\n<ul>\n<li>Th\u00eam PPA v\u00e0 c\u00e0i \u0111\u1eb7t PHP 8.3 c\u00f9ng c\u00e1c extension b\u1eaft bu\u1ed9c:<\/li>\n<\/ul>\n<p>Ch\u1ea1y l\u1ea7n l\u01b0\u1ee3t c\u00e1c l\u1ec7nh sau:<\/p>\n<pre><code class=\"language-bash\">sudo add-apt-repository ppa:ondrej\/php -y\r\nsudo apt update\r\nsudo apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-intl php8.3-mbstring php8.3-soap php8.3-xml php8.3-xmlrpc php8.3-zip -y\r\n<\/code><\/pre>\n<ul>\n<li>Tinh ch\u1ec9nh file\u00a0<code>php.ini<\/code>\u00a0\u0111\u1ec3 tr\u00e1nh l\u1ed7i c\u1ea1n ki\u1ec7t t\u00e0i nguy\u00ean ho\u1eb7c kh\u00f4ng upload \u0111\u01b0\u1ee3c file l\u1edbn. M\u1edf file\u00a0<code>\/etc\/php\/8.3\/fpm\/php.ini<\/code>\u00a0v\u00e0 s\u1eeda c\u00e1c d\u00f2ng sau:<\/li>\n<\/ul>\n<p>L\u1ec7nh m\u1edf file: <code>sudo nano \/etc\/php\/8.3\/fpm\/php.ini<\/code><\/p>\n<p>S\u1eeda c\u00e1c d\u00f2ng sau:<\/p>\n<pre><code class=\"language-ini\">upload_max_filesize = 64M\r\npost_max_size = 64M\r\nmemory_limit = 256M\r\nmax_execution_time = 300<\/code><\/pre>\n<p>B\u1ea1n c\u00f3 th\u1ec3 d\u00f9ng ph\u00edm t\u1eaft <code>Ctrl + W<\/code> \u0111\u1ec3 t\u00ecm ki\u1ebfm. Sau khi ch\u1ec9nh s\u1eeda xong, s\u1eed d\u1ee5ng ph\u00edm t\u1eaft <code>Ctrl + O<\/code> \u0111\u1ec3 l\u01b0u file &gt; Enter \u0111\u1ec3 x\u00e1c nh\u1eadn &gt; <code>Ctrl + X<\/code> \u0111\u1ec3 tho\u00e1t.<\/p>\n<ul>\n<li>Kh\u1edfi \u0111\u1ed9ng l\u1ea1i PHP-FPM:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo systemctl restart php8.3-fpm\r\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"5-Tai-va-thiet-lap-ma-nguon-WordPress-chuan-bao-mat\"><\/span>5. T\u1ea3i v\u00e0 thi\u1ebft l\u1eadp m\u00e3 ngu\u1ed3n WordPress chu\u1ea9n b\u1ea3o m\u1eadt<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>M\u00e3 ngu\u1ed3n WordPress b\u1eaft bu\u1ed9c ph\u1ea3i t\u1ea3i t\u1eeb trang ch\u1ee7 \u0111\u1ec3 tr\u00e1nh m\u00e3 \u0111\u1ed9c. Quy\u1ec1n s\u1edf h\u1eefu th\u01b0 m\u1ee5c ph\u1ea3i giao cho user\u00a0<code>www-data<\/code>\u00a0\u0111\u1ec3 c\u1eadp nh\u1eadt t\u1ef1 \u0111\u1ed9ng ho\u1ea1t \u0111\u1ed9ng m\u01b0\u1ee3t m\u00e0 m\u00e0 kh\u00f4ng l\u1ed9 quy\u1ec1n root.<\/p>\n<p><strong>Thao t\u00e1c:<\/strong><\/p>\n<ul>\n<li>Di chuy\u1ec3n \u0111\u1ebfn th\u01b0 m\u1ee5c web, t\u1ea3i v\u00e0 gi\u1ea3i n\u00e9n WordPress:<\/li>\n<\/ul>\n<p>Ch\u1ea1y l\u1ea7n l\u01b0\u1ee3t c\u00e1c l\u1ec7nh sau:<\/p>\n<pre><code class=\"language-bash\">cd \/var\/www\/\r\nsudo wget https:\/\/wordpress.org\/latest.tar.gz\r\nsudo tar -xvzf latest.tar.gz\r\nrm latest.tar.gz\r\n<\/code><\/pre>\n<ul>\n<li>T\u1ea1o file c\u1ea5u h\u00ecnh t\u1eeb file m\u1eabu:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">cd \/var\/www\/wordpress\r\nsudo cp wp-config-sample.php wp-config.php\r\n<\/code><\/pre>\n<ul>\n<li>Ch\u1ec9nh s\u1eeda\u00a0<code>wp-config.php<\/code>, \u0111i\u1ec1n th\u00f4ng tin database \u0111\u00e3 t\u1ea1o \u1edf B\u01b0\u1edbc 3, \u0111\u1ed3ng th\u1eddi truy c\u1eadp\u00a0<a href=\"https:\/\/api.wordpress.org\/secret-key\/1.1\/salt\/\" target=\"_blank\" rel=\"nofollow noopener\">API c\u1ee7a WordPress<\/a>\u00a0\u0111\u1ec3 l\u1ea5y m\u00e3 Salt thay th\u1ebf v\u00e0o ph\u1ea7n t\u01b0\u01a1ng \u1ee9ng.<\/li>\n<li>Ph\u00e2n quy\u1ec1n b\u1ea3o m\u1eadt t\u1ed1i \u0111a:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo chown -R www-data:www-data \/var\/www\/wordpress\r\nsudo find \/var\/www\/wordpress\/ -type d -exec chmod 755 {} \\;\r\nsudo find \/var\/www\/wordpress\/ -type f -exec chmod 644 {} \\;\r\n<\/code><\/pre>\n<div class=\"info-box\">Qu\u00e1 tr\u00ecnh x\u1eed l\u00fd PHP v\u00e0 Database \u0111\u00f2i h\u1ecfi VPS ph\u1ea3i c\u00f3 CPU\/RAM \u1ed5n \u0111\u1ecbnh v\u00e0 \u1ed5 c\u1ee9ng NVMe t\u1ed1c \u0111\u1ed9 cao. N\u1ebfu th\u01b0\u1eddng xuy\u00ean b\u1ecb qu\u00e1 t\u1ea3i, h\u00e3y s\u0103n ngay c\u00e1c <strong><a href=\"https:\/\/interdata.vn\/canhme\/\" target=\"_blank\" rel=\"noopener\">Deals VPS hi\u1ec7u n\u0103ng cao<\/a><\/strong> t\u1ea1i trang Canh Me c\u1ee7a InterData \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a h\u1ec7 th\u1ed1ng v\u1edbi chi ph\u00ed ti\u1ebft ki\u1ec7m nh\u1ea5t.<\/div>\n<h2><span class=\"ez-toc-section\" id=\"6-Tao-Server-Block-Nginx-de-nhan-dien-ten-mien\"><\/span>6. T\u1ea1o Server Block Nginx \u0111\u1ec3 nh\u1eadn di\u1ec7n t\u00ean mi\u1ec1n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Server Block \u0111\u1ecbnh tuy\u1ebfn l\u01b0u l\u01b0\u1ee3ng truy c\u1eadp. Khi c\u00f3 y\u00eau c\u1ea7u g\u1eedi t\u1edbi t\u00ean mi\u1ec1n, Nginx s\u1ebd \u0111\u1ecdc file n\u00e0y \u0111\u1ec3 bi\u1ebft c\u1ea7n l\u1ea5y m\u00e3 ngu\u1ed3n WordPress t\u1eeb th\u01b0 m\u1ee5c n\u00e0o \u0111\u1ec3 hi\u1ec3n th\u1ecb.<\/p>\n<p><strong>Thao t\u00e1c:<\/strong><\/p>\n<ul>\n<li>T\u1ea1o file c\u1ea5u h\u00ecnh m\u1edbi:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/yourdomain.com\r\n<\/code><\/pre>\n<ul>\n<li>D\u00e1n m\u1eabu c\u1ea5u h\u00ecnh chu\u1ea9n sau (thay\u00a0<code>yourdomain.com<\/code>\u00a0b\u1eb1ng t\u00ean mi\u1ec1n c\u1ee7a b\u1ea1n):<\/li>\n<\/ul>\n<pre><code class=\"language-nginx\">server {\r\n    listen 80;\r\n    server_name yourdomain.com www.yourdomain.com;\r\n    root \/var\/www\/wordpress;\r\n    index index.php index.html;\r\n\r\n    location \/ {\r\n        try_files $uri $uri\/ \/index.php?$args;\r\n    }\r\n\r\n    location ~ \\.php$ {\r\n        include snippets\/fastcgi-php.conf;\r\n        fastcgi_pass unix:\/run\/php\/php8.3-fpm.sock;\r\n    }\r\n\r\n    location ~* \\.(js|css|png|jpg|jpeg|gif|ico|svg)$ {\r\n        expires max;\r\n        log_not_found off;\r\n    }\r\n\r\n    # Ch\u1eb7n truy c\u1eadp file nh\u1ea1y c\u1ea3m\r\n    location ~ \/\\.(htaccess|htpasswd) { deny all; }\r\n    location ~ \/xmlrpc.php { deny all; }\r\n}\r\n<\/code><\/pre>\n<ul>\n<li>K\u00edch ho\u1ea1t c\u1ea5u h\u00ecnh v\u00e0 ki\u1ec3m tra:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/yourdomain.com \/etc\/nginx\/sites-enabled\/\r\nsudo nginx -t\r\nsudo systemctl reload nginx\r\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"7-Cai-dat-chung-chi-SSL-Lets-Encrypt-mien-phi\"><\/span>7. C\u00e0i \u0111\u1eb7t ch\u1ee9ng ch\u1ec9 SSL Let&#8217;s Encrypt mi\u1ec5n ph\u00ed<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>SSL m\u00e3 h\u00f3a d\u1eef li\u1ec7u truy\u1ec1n t\u1ea3i gi\u1eefa tr\u00ecnh duy\u1ec7t v\u00e0 VPS, tr\u00e1nh c\u1ea3nh b\u00e1o nguy hi\u1ec3m v\u00e0 t\u1ed1i \u01b0u th\u1ee9 h\u1ea1ng SEO. \u0110\u00e2y l\u00e0 ti\u00eau chu\u1ea9n b\u1eaft bu\u1ed9c cho m\u1ecdi website hi\u1ec7n \u0111\u1ea1i.<\/p>\n<p><strong>Thao t\u00e1c:<\/strong><\/p>\n<ul>\n<li>C\u00e0i \u0111\u1eb7t Certbot v\u00e0 plugin Nginx:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo apt install certbot python3-certbot-nginx -y\r\n<\/code><\/pre>\n<ul>\n<li>C\u1ea5p ph\u00e1t v\u00e0 t\u1ef1 \u0111\u1ed9ng c\u1ea5u h\u00ecnh SSL:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com\r\n<\/code><\/pre>\n<ul>\n<li>Thi\u1ebft l\u1eadp t\u1ef1 \u0111\u1ed9ng gia h\u1ea1n (SSL ch\u1ec9 c\u00f3 hi\u1ec7u l\u1ef1c 90 ng\u00e0y):<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">sudo crontab -e\r\n<\/code><\/pre>\n<p>Th\u00eam d\u00f2ng:\u00a0<code>0 3 * * * certbot renew --quiet<\/code><\/p>\n<hr \/>\n<h2><span class=\"ez-toc-section\" id=\"Hoi-dap-nhanh-ve-loi-thuong-gap-FAQ\"><\/span>H\u1ecfi \u0111\u00e1p nhanh v\u1ec1 l\u1ed7i th\u01b0\u1eddng g\u1eb7p (FAQ)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Tai-sao-website-WordPress-gap-loi-%E2%80%9CError-Establishing-a-Database-Connection%E2%80%9D\"><\/span>T\u1ea1i sao website WordPress g\u1eb7p l\u1ed7i &#8220;Error Establishing a Database Connection&#8221;?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>L\u1ed7i n\u00e0y do WordPress kh\u00f4ng k\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c t\u1edbi MariaDB. H\u00e3y ki\u1ec3m tra l\u1ea1i t\u00ean Database, User, M\u1eadt kh\u1ea9u v\u00e0 Hostname (<code>localhost<\/code>) trong file\u00a0<code>wp-config.php<\/code>. \u0110\u1ed3ng th\u1eddi \u0111\u1ea3m b\u1ea3o d\u1ecbch v\u1ee5 MariaDB \u0111ang ch\u1ea1y:\u00a0<code>sudo systemctl status mariadb<\/code>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tai-sao-WordPress-yeu-cau-tai-khoan-FTP-khi-cai-PluginTheme\"><\/span>T\u1ea1i sao WordPress y\u00eau c\u1ea7u t\u00e0i kho\u1ea3n FTP khi c\u00e0i Plugin\/Theme?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>L\u1ed7i n\u00e0y do Nginx kh\u00f4ng c\u00f3 quy\u1ec1n ghi v\u00e0o th\u01b0 m\u1ee5c WordPress. Ch\u1ea1y l\u1ec7nh sau \u0111\u1ec3 ph\u00e2n quy\u1ec1n l\u1ea1i:\u00a0<code>sudo chown -R www-data:www-data \/var\/www\/wordpress<\/code>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Lam-the-nao-de-tang-dung-luong-upload-file-cho-WordPress-tren-LEMP\"><\/span>L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 t\u0103ng dung l\u01b0\u1ee3ng upload file cho WordPress tr\u00ean LEMP?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>B\u1ea1n c\u1ea7n s\u1eeda \u1edf 2 n\u01a1i:<\/p>\n<ol>\n<li>T\u0103ng\u00a0<code>upload_max_filesize<\/code>\u00a0v\u00e0\u00a0<code>post_max_size<\/code>\u00a0trong file\u00a0<code>php.ini<\/code>\u00a0c\u1ee7a PHP-FPM, r\u1ed3i kh\u1edfi \u0111\u1ed9ng l\u1ea1i PHP.<\/li>\n<li>Th\u00eam d\u00f2ng\u00a0<code>client_max_body_size 64M;<\/code>\u00a0v\u00e0o block\u00a0<code>http<\/code>\u00a0ho\u1eb7c\u00a0<code>server<\/code>\u00a0c\u1ee7a c\u1ea5u h\u00ecnh Nginx, r\u1ed3i reload l\u1ea1i Nginx.<\/li>\n<\/ol>\n<hr \/>\n<h2><span class=\"ez-toc-section\" id=\"Checklist-ra-soat-an-toan-he-thong-truoc-khi-chay-chinh-thuc\"><\/span>Checklist r\u00e0 so\u00e1t an to\u00e0n h\u1ec7 th\u1ed1ng tr\u01b0\u1edbc khi ch\u1ea1y ch\u00ednh th\u1ee9c<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tr\u01b0\u1edbc khi \u0111\u01b0a website l\u00ean m\u00f4i tr\u01b0\u1eddng production, h\u00e3y \u0111\u1ea3m b\u1ea3o b\u1ea1n \u0111\u00e3 ho\u00e0n th\u00e0nh c\u00e1c m\u1ee5c sau:<\/p>\n<ol class=\"contains-task-list\">\n<li class=\"task-list-item\"><input disabled=\"disabled\" type=\"checkbox\" \/>\u00a0\u0110\u00e3 t\u1eaft quy\u1ec1n \u0111\u0103ng nh\u1eadp tr\u1ef1c ti\u1ebfp b\u1eb1ng t\u00e0i kho\u1ea3n\u00a0<code>root<\/code>\u00a0qua SSH?<\/li>\n<li class=\"task-list-item\"><input disabled=\"disabled\" type=\"checkbox\" \/>\u00a0\u0110\u00e3 b\u1eadt t\u01b0\u1eddng l\u1eeda UFW v\u00e0 ch\u1ec9 m\u1edf c\u00e1c c\u1ed5ng c\u1ea7n thi\u1ebft (22, 80, 443)?<\/li>\n<li class=\"task-list-item\"><input disabled=\"disabled\" type=\"checkbox\" \/>\u00a0M\u1eadt kh\u1ea9u database v\u00e0 t\u00e0i kho\u1ea3n Admin WordPress \u0111\u00e3 \u0111\u1ee7 ph\u1ee9c t\u1ea1p (tr\u00ean 12 k\u00fd t\u1ef1 g\u1ed3m ch\u1eef, s\u1ed1, k\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t)?<\/li>\n<li class=\"task-list-item\"><input disabled=\"disabled\" type=\"checkbox\" \/>\u00a0\u0110\u00e3 thi\u1ebft l\u1eadp c\u01a1 ch\u1ebf sao l\u01b0u (backup) c\u01a1 s\u1edf d\u1eef li\u1ec7u v\u00e0 m\u00e3 ngu\u1ed3n \u0111\u1ecbnh k\u1ef3 cho VPS?<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Vi\u1ec7c chuy\u1ec3n sang t\u1ef1 qu\u1ea3n tr\u1ecb VPS Ubuntu v\u1edbi LEMP (Nginx, MariaDB, PHP) ch\u00ednh l\u00e0 b\u01b0\u1edbc ngo\u1eb7t gi\u00fap website WordPress c\u1ee7a b\u1ea1n t\u1ea3i d\u01b0\u1edbi 1 gi\u00e2y. Kh\u00f4ng c\u1ea7n Control Panel n\u1eb7ng n\u1ec1, h\u1ec7 th\u1ed1ng s\u1ebd ch\u1ea1y m\u01b0\u1ee3t m\u00e0 v\u00e0 b\u1ea3o m\u1eadt t\u1ed1i \u0111a khi t\u1ef1 t\u1ed1i \u01b0u b\u1eb1ng tay. T\u00f3m t\u1eaft nhanh B\u1ed9 khung th\u00f4ng<\/p>\n","protected":false},"author":2,"featured_media":41419,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[161],"tags":[],"class_list":["post-41413","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-huong-dan-chung"],"_links":{"self":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/41413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/comments?post=41413"}],"version-history":[{"count":5,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/41413\/revisions"}],"predecessor-version":[{"id":41420,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/41413\/revisions\/41420"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/41419"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=41413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=41413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=41413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}