Cách cài đặt vps làm Web Server

1. Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên Ubuntu 20.04

Cài đặt Máy chủ Web Nginx

  • Chạy lệnh “sudo apt update” và “sudo apt install nginx”, khi được hỏi y/n chọn yes để cài đặt.
  • Lệnh trên đã cài xong Nginx, lúc này nếu truy cập trên trình duyệt web sẽ thấy được màn hình Welcome to nginx! xuất hiện. Nếu không thấy được màn hình này có thể do tường lửa chưa mở cổng 80:
    • Lệnh để kiểm tra các ứng dụng nào khả dụng trên tường lửa awf: sudo ufw app list
    • Lệnh cho phép http đi qua tường lửa: sudo ufw allow ‘Nginx HTTP’
    • Kiểm tra tường lửa đã cho http đi qua chưa: sudo ufw status

Cài đặt MySQL

  • Lệnh cài đặt: sudo apt install mysql-server sau đó chọn Y khi được hỏi.
  • Sau khi cài đặt xong chạy lệnh: sudo mysql_secure_installation để giúp bảo mật mysql, chọn y ở mỗi lần được hỏi và sau khi kết thúc gõ lệnh sudo mysql để xem có truy cập được mysql không và để thoát ra gõ exit.

Cài đặt PHP

  • Đánh lệnh sudo apt install php-fpm php-mysql và chọn Y khi được hỏi.

Cấu hình Nginx để hoạt động cùng PHP

  • Tạo thư mục chứa website: sudo mkdir /var/www/tinhocdao.com
  • Gõ lệnh sudo chown -R $USER:$USER /var/www/tinhocdao.com
  • Mở cấu hình site: sudo nano /etc/nginx/sites-available/tinhocdao.com
    • Cấu hình file vừa mở như sau:
server {
    listen 80;
    server_name tinhocdao.com www.tinhocdao.com;
    root /var/www/tinhocdao.com;

    index index.html index.htm index.php;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
     }

    location ~ /\.ht {
        deny all;
    }

}

Sau khi nhập xong gõ Ctrl + O, Enter, Ctrl + X

Kích hoạt cấu hinh bằng lệnh: sudo ln -s /etc/nginx/sites-available/tinhocdao.com /etc/nginx/sites-enabled/

Hủy liên kết: sudo unlink /etc/nginx/sites-enabled/default

Nếu trong quá trình cấu hình sai thì có thể di chuyển tới vị trí site-enable bằng lệnh cd /etc/nginx/sites-enabled sau đó liệt kê các site ra lằng lệnh ls, nếu muốn xóa bỏ site nào thì gõ sudo rm tên-site-gõ-nhầm, sau đó dùng lệnh sudo nginx -t để kiểm tra xem có lỗi nào không và sudo service nginx reload khởi động lại nginx

Bạn có thể mở file cấu hình web: nano /var/www/tinhocdao.com/index.html để thay đổi nội dung thử

Kiểm tra PHP có hoạt động không

  • Tạo 1 tệp php: nano /var/www/tinhocdao.com/info.php, sau đó nhập nội dung tệp
    1. <?php
    2. phpinfo();
  • Lưu tệp lại với phím Ctrl + O -> Enter -> Ctrl + X
  • Truy cập vào website theo tên miền (vd: tinhocdao.com/info.php) xem tệp có hoạt động không.
Kiểm tra file php.info xem có hoạt động không
Nội dung file php.info

2. Cài đặt và bảo mật cho phpMyAdmin

2.1 Cài đặt phpMyAdmin

Sử dụng lệnh sudo apt update sau đó chạy lệnh sudo apt install phpmyadmin để cài phpMyAdmin, khi được hỏi yes/no chọn Yes.

Sau đó khi được hỏi chọn cài máy chủ cùng ấn phím tab xuống Ok và ấn Enter

Kích chọn Ok đẻ tiếp tục cài phpMyadmin
Chọn Ok khi được hỏi để tiếp tục cài

Tiếp theo khi được hỏi chọn cấu hình dbconfig-common chọn Yes, sau đó là màn hình cảnh báo lỗi bạn chọn abort để dừng cài đặt.

Đánh lệnh mysql –> UNINSTALL COMPONENT “file://component_validate_password”; –> Exit

Tiếp theo nhập sudo apt install phpmyadmin để cài đặt lại, khi được hỏi bạn chọn Y, và sau đó Yes.

Sau khi cài đặt xong nhập lệnh: sudo ln -s /usr/share/phpmyadmin /var/www/tinhocdao.com/phpmyadmin

Khi nhập lệnh trên xong thì truy cập thử vào đường dẫn: http://13.54.10.70/phpmyadmin/ xem có thấy được giao diện của phpmyadmin hiện ra không.

2.2 Thay đổi tên của phpMyAdmin

  • Đổi tên giúp tăng cường bảo mật cho phpMyAdmin, bạn chỉ cần đăng nhập vào và đổi tên phpMyAdmin có trong thư mục chứa website thành 1 tên khác.
  • Sau khi đổi xong thì để truy cập vào phpMyAdmin sẽ bắt buộc phải truy cập theo tên vừa đổi, tên này chỉ có bạn biết nó sẽ giúp nâng cao bảo mật cho phpMyAdmin

2.3 Ngăn chặn việc đăng nhập vào phpMyAdmin bằng tài khoản gốc

<?php

# PhpMyAdmin Settings
# This should be set to a random string of at least 32 chars HLVjVH92IL6Ak05cN8DiTTLTmcJcDxqT
$cfg['blowfish_secret'] = 'e2sMqGaxZx1ySWJxetMjBoVcwy3NDJjz;

$i=0;
$i++;

$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['AllowRoot'] = false;

?>

Sau khi gõ xong lệnh trên ấn Ctrl + O -> Enter -> Ctrl + X

Sau bước trên tài khoản root sẽ không đăng nhập được, ta tiến hành tạo một tài khoản mới bằng cách gõ sudo mysql để truy cập vào mysql, sau đó gõ lần lượt 3 lệnh sau:

CREATE USER 'tenuser'@'localhost' IDENTIFIED BY 'mat khau';
GRANT ALL PRIVILEGES ON * . * TO 'ten user'@'localhost';
FLUSH PRIVILEGES;

3. Cài đặt wordpress trên server web

3.1 Tạo cơ sở dữ liệu cho wordpress

  • Gõ lệnh sudo mysql để vào cơ sở dữ liệu
  • Tạo cơ sở dữ liệu bằng lệnh CREATE DATABASE tencosodulieutao DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
  • Tạo tài khoản user cho cơ sở dữ liệu vừa tạo: CREATE USER ‘tentaikhoan’@’localhost’ IDENTIFIED BY ‘matkhau’;
  • Gán quyền cho tài khoản vừa tạo: GRANT ALL ON tentaikhoan.* TO ‘tencosodulieu’@’localhost’;
  • Cuối cùng thoát ra: exit

3.2 Cài đặt phần bổ sung cho php

  • Lệnh: sudo apt update
  • sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip
  • Sau khi hoàn tất gõ lệnh sudo systemctl restart php7.4-fpm để khởi động lại php

3.3 Cấu hình Nginx

  • Gõ lệnh: sudo nano /etc/nginx/sites-available/tenwebsite.com
  • Sau đó nhập vào nội dung như sau: nếu thấy nội dung đã có rồi thì bỏ qua
server {
    listen 80;
    server_name tenwebsite.com www.tenwebsite.com;
    root /var/www/tenwebsite.com;

    index index.html index.htm index.php;

    location / {
       # try_files $uri $uri/ =404;
	try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
     }

    location ~ /\.ht {
        deny all;
    }

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt { log_not_found off; access_log off; allow all; }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }

}

Khi hoàn thành bước trên gõ sudo nginx -t để kiểm tra lỗi, nếu thấy báo về successful là hoàn thành. Cuối cùng khởi động lại nginx bằng lệnh: sudo systemctl reload nginx

3.4 Cài đặt wordpress

  • Dùng SFTP tải mã nguồn wordpress lên thư mục /var/www/tenwebsite.com
  • Dùng lệnh cd /var/www/tenwebsite.com để truy cập thư mục chứa code
  • Cài đặt phần mềm giải nén: sudo apt-get install zip unzip
  • Giải nén mã nguồn: unzip wordpress-5.8.3-vi.zip
  • Sau khi giải nén di chuyển tất cả các thư mục ra ngoài thư mục gốc. Nếu hệ thống báo không cho phép di chuyển thì cần cấp lại quyền cho user đang kết nối SFTP: sudo chown -R user:user wordpress
  • Cài đặt cấp quyền cho nhóm người dùng www-data (nhóm này do nginx điều hành): sudo chown -R www-data:www-data /var/www/tenwebsite.com

Lúc này đã cấu hình xong bạn sẽ bắt đầu truy cập vào để cài đặt wordpress, nhưng trước hết hãy quan sát trong thư mục web file index.html được tạo để test thử nếu vẫn còn trong thư mục web thì hãy xóa nó đi

TÌm xóa file index.html khi cài
TÌm và xóa file index.html khi cai webserver

4. Cài đặt SSL trên Nginx bằng Let’s Crypt

4.1 Cài đặt Certbot

  • sudo apt install certbot python3-certbot-nginx
  • Kiểm tra cấu hình tên miền đã đúng chưa: sudo nano /etc/nginx/sites-available/tenwebsite
  • Nếu chưa đúng hãy chỉnh sửa lại và sau đó thoát ra, sử dụng lệnh sudo nginx -t để kiểm tra xem có sai ở đâu không và khởi động lại bằng lệnh sudo systemctl reload nginx

4.2 Cho phép https qua tường lửa

  • Xem tình trạng tường lửa sudo ufw status
  • Cho phép https bằng lệnh: sudo ufw allow ‘Nginx Full’
  • Xóa http bằng lệnh: sudo ufw delete allow ‘Nginx HTTP’

4.3 Lấy chứng chỉ SSL

sudo certbot –nginx -d tenwebsite -d www.tenwebsite

5. Cách cài đặt một chứng chỉ SSL trên Nginx

5.1 Gộp các file chứng chỉ thành 1 file

Sau khi tải các file chứng chỉ về ( của mình có 4 file là: 1 file .crt, 1 file .ca-bundle.crt, 1 file . p7b, 1 file .key.txt) ta sẽ gộp 3 file đầu tiên lại thành 1 file. Có 2 cách để làm điều này

  • Cách 1: Bạn tải 3 file này lên server và dùng lệnh cat 1 file .crt, 1 file .ca-bundle.crt, 1 file . p7b >> ssl-bundle.crt, cách này có thể có một lỗi phát sinh là làm mất các dòng –END CERTIFICATE–BEGIN CERTIFICATE—từ đó gây ra lỗi nginx fails to load ssl certificate khi chạy thử, nếu bạn gặp lỗi này hãy thử cách 2.
  • Cách 2: mở từng file ra và copy tất cả nội dung bên trong vào 1 file mới sau đó lưu lại với tên ssl-bundle.crt, sau đó tải file này lên server.

5.2 Sửa lại file cấu hình của Nginx

server {

listen 443;

ssl on;

ssl_certificate /etc/ssl/ssl-bundle.crt;

ssl_certificate_key /etc/ssl/file.key;

server_name ssl-tutorials.com;

access_log /var/log/nginx/nginx.vhost.access.log;

error_log /var/log/nginx/nginx.vhost.error.log;

location / {

root /var/www/;

index index.html;

}

}

Sau khi sửa file cấu hình nếu gặp phải lỗi “nginx the “ssl” directive is deprecated, use the “listen … ssl” bạn sửa lại listen 443 thành listen 443 ssl; và thêm dấu thăng vào dòng ssl on hoặc xóa hẳn dòng này đi.

5.3 Cấu hình để chuyển http về https

Thêm các dòng lệnh sau vào file cấu hình Nginx

server {
            listen   80;
            server_name tenwebsite.com;
            return 301 https://tenwebsite.com$request_uri;
}

Tham khảo thêm bài viết một số lệnh trên hệ điều hành ubuntu.

1 thought on “Cách cài đặt vps làm Web Server”

Leave a Comment