Cập nhật hệ thống và cài các gói cần thiết
root@ubuntu:~# apt-get update && apt-get upgrade -y
root@ubuntu:~# apt-get install nano net-tools wget zip unzip -y
1. Cài đặt NGINX
root@ubuntu:~# apt-get install nginx -y
Tiếp theo bạn sử dụng 3 lệnh sau để kích hoạt và khởi động nginx.
root@ubuntu:~# systemctl enable nginx
#Bật khởi động cùng hệ thống
root@ubuntu:~# systemctl start nginx
#Khởi động nginx
root@ubuntu:~# systemctl status nginx
#Kiểm tra trạng thái
Để kiểm tra phiên bản nginx được cài vào là phiên bản bao nhiêu bạn có thể sử dụng lệnh dưới để kiểm tra.:
root@ubuntu:~# nginx -v
Mở port 80, 443
Trường hợp nếu hệ thống bạn có cài firewall. Bạn hãy mở port 80 trên firewall để truy cập.
ufw allow 'Nginx HTTP'
Đối với iptables:
root@ubuntu:~# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
root@ubuntu:~# iptables -I INPUT -p tcp --dport 443 -j ACCEPT
2. Cài đặt máy chủ cơ sở dữ liệu MariaDB
Gỡ MariaDB hiện tại trên Ubuntu:
root@ubuntu:~# apt-get remove mariadb-server
Ở đây mình sử dụng MariaDB 10.2 làm máy chủ cơ sở dữ liệu. (bản này phù hợp cho các vps có cấu hình yếu, nên mình cài để có hiệu suất tối ưu nhất)
Để thêm MariaDB 10.2 repository vào Ubuntu 20.04, bạn có thể thực hiện các bước sau:
Thêm MariaDB APT Repository vào hệ thống của bạn:
Trước tiên, bạn cần tải xuống và cài đặt MariaDB Repo Signing Key để xác minh nguồn phân phối:
sudo apt-get install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
Tiếp theo, thêm MariaDB repository vào danh sách APT sources.list:
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.2/ubuntu focal main'
Đây là URL của repository MariaDB 10.2 cho Ubuntu 20.04. Nếu bạn muốn sử dụng một mirror khác, bạn có thể thay thế URL bằng URL của mirror bạn muốn sử dụng.
Cập nhật danh sách gói:
Sau khi thêm repository, cần cập nhật danh sách gói để máy chủ APT biết về các gói từ repository mới:
sudo apt-get update
Cài đặt MariaDB 10.2:
Bây giờ, bạn có thể cài đặt MariaDB 10.2 bằng cách sử dụng apt-get
:
sudo apt-get install mariadb-server-10.2
Hoặc Để cài đặt bản mới nhất thì bạn sử dụng lệnh sau:
apt-get install mariadb-server mariadb-client -y
Cài xong bạn kiểm tra dịch vụ cũng như bật khởi động cùng hệ thống.
root@ubuntu:~# systemctl enable mariadb
#Bật khởi động
root@ubuntu:~# systemctl start mariadb
#Khởi động dịch vụ
root@ubuntu:~# systemctl status mariadb
#Kiểm tra dịch vụ
Cấu hình MariaDB
Chạy lệnh dưới để bắt đầu và mới đầu thì chưa có password nên nhấn Enter khi nó hỏi password nhé:
root@ubuntu:~# mysql_secure_installation
Switch to unix_socket authentication [Y/n] nChange the root password? [Y/n] y #Thay đổi mật khẩu root mariaDB New password: Re-enter new password: Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y
Kiểm tra phiên bản MariaDB
root@ubuntu:~# mariadb --version
3. Cài đặt PHP
Cài phiên bản chỉ định là PHP 7.4:
apt install php7.4-fpm php7.4-common php7.4-mbstring php7.4-xmlrpc php7.4-soap php7.4-gd php7.4-xml php7.4-intl php7.4-mysql php7.4-cli php7.4-zip php7.4-curl
root@ubuntu:~# systemctl enable php7.4-fpm
#Bật khởi động cùng hệ thống
root@ubuntu:~# systemctl start php7.4-fpm
#Khởi động PHP
root@ubuntu:~# systemctl status php7.4-fpm
#Kiểm tra PHP
Kiểm tra lại phiên bản PHP php -v
Hoặc cài phiên bản PHP chỉ định là PHP8.1 thì bạn thay số tương ứng vào lệnh trên nhé!
Bây giờ ta đã cài đặt đủ các thành phần của LEMP stack. Nhưng vẫn cần phải thực hiện một số thay đổi về cấu hình để yêu cầu Nginx sử dụng PHP để xử lý nội dung.
Backup file config default: cp -a /etc/nginx/sites-available/default{,.orig}
Thư mục WinSCP: /etc/nginx/sites-available/
root@ubuntu:~# nano /etc/nginx/sites-available/default
Thay toàn bộ nội dung bên trong đó bằng nội dung sau:
server { listen 80; root /var/www/html; index index.php index.html index.htm; server_name _; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }
- Tham khảo thêm cách chặn truy cập từ bên ngoài: https://hoanggiangnam.com/cai-dat-lemp-tor…
Trong đó:
listen
: Xác định cổng Nginx lắng nghe. Trong trường hợp này là cổng 80 (mặc định của HTTP)root
: Xác định gốc lưu trữ các tệp của trang webindex
: thứ tự ưu tiên các file cấu hình, nếu chúng tồn tạiserver_name
: Xác định khối máy chủ nào được sử dụng. Nó trỏ đến tên miền hoặc IP public của bạnlocation /
: Kiểm tra sự tồn tại của các tệp khớp vớiuri
. Nếu nginx không thể tìm thấy tệp thích hợp, nó sẽ trả về 404location ~ .php$
: Khai báo nơi xử lý PHP bằng cách trỏ Nginx vào tệp cấu hìnhfastcgi-php.conf
và tệpphp7.4-fpm.sock
location ~ /.ht
: Xử lí các tệp.htaccess
mà Nginx không xử lí. Bằng cáchdeny all
chỉ thị, nếu bất kì tệp.htaccess
xảy ra để tìm đường vào tài liệu gốc thì chúng sẽ không được phục vụ cho khách truy cập.
Kiểm tra xem file cấu hình mới có lỗi gì không:
root@ubuntu:~# nginx -t
Nếu không có lỗi gì sẽ có thông báo tương tự như sau.
nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful
Nếu có lỗi thì sẽ có thông báo lỗi.
Reload Nginx:
root@ubuntu:~# systemctl reload nginx
Tạo file info.php để check phiên bản ở /var/www/html/
root@ubuntu:~# nano /var/www/html/info.php
Thêm vào nội dung sau:
<?phpphpinfo();?>
Gõ ip_vps vào thanh URL trong trình duyệt:
<ip_vps>/info.php
Khi xuất hiện màn hình tương tự như hình có nghĩa là đã cài PHP thành công.
Sau khi cài đặt xong, bạn nên xóa file info.php
, vì nó có thể cho người dùng trái phép một số gợi ý về cấu hình của trang web và giúp họ cố gắng đột nhập.
root@ubuntu:~# rm -rf /var/www/html/info.php
Trỏ domain của bạn về ip nữa là chạy web được rồi đấy.
Thư mục chính để chứa code là /var/www/html/
4. Cài TOR
root@ubuntu:~# apt install tor
Sau khi Tor được cài đặt, chúng ta cần chỉnh sửa nhanh tệp cấu hình Tor có tên là torrc, nó thường nằm trong /etc/tor/torrc. Hãy loại bỏ nó và bắt đầu mới. Thực hiện các lệnh sau.
root@ubuntu:~# rm -f /etc/tor/torrc
Copy và chạy 2 lệnh này 1 thời điểm nhé:
echo "HiddenServiceDir /var/lib/tor/hidden_service/" >> /etc/tor/torrcecho "HiddenServicePort 80 127.0.0.1:80" >> /etc/tor/torrc
Bây giờ bắt đầu Tor
root@ubuntu:~# service tor stop
root@ubuntu:~# service tor start
—-này sẽ tạo địa chỉ .onion mới!
root@ubuntu:~# service nginx reload
root@ubuntu:~# service tor status
—- sử dụng cái này để kiểm tra xem tor đã khởi động chính xác chưa.
root@ubuntu:~# cat /var/lib/tor/hidden_service1/hostname
—- để hiển thị tên miền tor
Bạn có thể biết Tor đang chạy đúng cách bằng cách sử dụng
root@ubuntu:~#
service tor status -l
nếu nó hiển thị bất kỳ lỗi nào và tor chưa khởi động, bạn cần thực hiện lại các bước của mình để tìm ra sự cố, đó có thể là một vấn đề đơn giản như sai thời gian đồng hồ trên máy chủ, hãy kiểm tra nhật ký Tor để biết chi tiết.
Nếu mọi thứ suôn sẻ, bạn sẽ có một tệp được tạo tự động có chứa tên máy chủ .onion của bạn, hãy làm
root@ubuntu:~# cat /var/lib/tor/hidden_service/hostname
và nhấn enter để hiển thị tên miền TOR của bạn.
Ví dụ ra tên miền: nhr2fiise3uc2ajygkjrgae3f5c.onion
Chạy nhiều trang web TOR trên 1 Server
Nếu bạn muốn thêm nhiều dịch vụ Tor, chỉ cần chạy lại hai lệnh dưới: (và thêm vhost nữa nhá)
echo "HiddenServiceDir /var/lib/tor/hidden_service/" >> /etc/tor/torrcecho "HiddenServicePort 80 127.0.0.1:80" >> /etc/tor/torrc
Nhưng thay đổi vị trí thư mục thành hidden_service1
, hidden_service2
, hidden_service3
echo "HiddenServiceDir /var/lib/tor/hidden_service2/" >> /etc/tor/torrc
Nếu bạn muốn thêm một cái khác, chỉ cần thay đổi lại thư mục và khởi động lại Tor. Bạn cũng có thể cần phải khởi động lại nginx để hiển thị trang web của mình.
root@ubuntu:~# service tor stop
root@ubuntu:~# service tor start
<———-này sẽ tạo địa chỉ .onion mới!
root@ubuntu:~# service nginx reload
root@ubuntu:~# cat /var/lib/tor/hidden_service2/hostname
<———- để hiển thị tên miền thứ 2 tor mới thêm
Sau khi ra tên miền mới rồi thì thêm vào vhost – làm bước 5 ở dưới nhé
5. Cấu hình vhost – thêm tên miền
Tạo thư mực /home/nhr2fiise3uc2ajygkjrgae3f5c.onion/public_html để chứa mã nguồn website. Ở đây mình sẽ tạo ở thư mục HOME/ cho dễ sử dụng nhé:
root@ubuntu:~# mkdir -p /home/nhr2fiise3uc2ajygkjrgae3f5c.onion/public_html
root@ubuntu:~# nano /home/nhr2fiise3uc2ajygkjrgae3f5c.onion/public_html/index.html
<html> <body> <center><h1>Hello nhr2fiise3uc2ajygkjrgae3f5c.onion</h1></center> </body></html>
Chmod – Phân quyền thư mục
root@ubuntu:~# chown -R www-data:www-data /home/*
— đây là chmod toàn bộ thư mục có trong /home/
Cấu hình nginx – nginx.conf
Đường dẫn các file cấu hình nginx ở thư mục này: /etc/nginx/sites-available/
Tạo file cấu hình nginx cho tên miền nhr2fiise3uc2ajygkjrgae3f5c.onion tại /etc/nginx/sites-available/nhr2fiise3uc2ajygkjrgae3f5c.onion bằng lệnh:
root@ubuntu:~# nano /etc/nginx/sites-available/nhr2fiise3uc2ajygkjrgae3f5c.onion
Nội dung:
server { listen 127.0.0.1:80; root /home/nhr2fiise3uc2ajygkjrgae3f5c.onion/public_html; index index.php index.html index.htm; server_name nhr2fiise3uc2ajygkjrgae3f5c.onion; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } location ~ /\.ht { deny all; } location / { # Uncomment the line below if using WordPress in a sub-folder (e.g., forums/sub-folder). # try_files $uri $uri/ /forums/index.php?$args; # Default behavior for handling requests. try_files $uri $uri/ /index.php?$args; } }
Nếu là domain bình thường thì để dạng như sau:
server { listen 80; listen [::]:80; root /home/hoanggiangnam.com/public_html; index index.php index.html index.htm; server_name hoanggiangnam.com www.hoanggiangnam.com; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location / { # Uncomment the line below if using WordPress in a sub-folder (e.g., forums/sub-folder). # try_files $uri $uri/ /forums/index.php?$args; # Default behavior for handling requests. try_files $uri $uri/ /index.php?$args; } }
Nhớ thay tên miền của bạn vào và sửa lại phiên bản php ở dòng này fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
Tạo một symbolic link để liên kết file /etc/nginx/sites-available/nhr2fiise3uc2ajygkjrgae3f5c.onion sang thư mục /etc/nginx/sites-enabled/. Nginx sẽ đọc các file cấu hình tại thư mục /etc/nginx/sites-enabled/
mỗi khi khởi động.
root@ubuntu:~# ln -s /etc/nginx/sites-available/nhr2fiise3uc2ajygkjrgae3f5c.onion /etc/nginx/sites-enabled/
root@ubuntu:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful
Sau đó reboot lại. Còn nếu bị lỗi như dưới
root@ubuntu:
~# nginx -tnginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 64nginx: configuration file /etc/nginx/nginx.conf test failed
thì fix bằng cách vào /etc/nginx/nginx.conf
và thêm dòng server_names_hash_bucket_size 128;
vào bên trên # server_names_hash_bucket_size 64;
server_names_hash_bucket_size 128;
# server_names_hash_bucket_size 64; # server_name_in_redirect off;
root@ubuntu:~# service nginx restart
- Nếu vẫn lỗi thì tăng
server_names_hash_bucket_size
theo các bước 128, 256, 512, v.v. (mỗi lần tăng 2 lần). ví dụ.server_names_hash_bucket_size 128;
- tham khảo thêm ở đây: https://stackoverflow.com/quest…
Khởi động lại Web Server bằng lệnh
root@ubuntu:~# systemctl restart nginx
root@ubuntu:~# nginx -t
Nếu ko xãy ra lỗi gì thì làm bước tiếp theo là cài TOR
(Thêm một tên miền khác vào nữa thì lặp lại các bước Chạy nhiều trang web TOR trên 1 Server + tạo VHOST )
6. Tạo Database
Xem thêm:
Một số bài tương tự:
- https://hoanggiangnam.com/cach-thiet-lap-va-luu-tru-nhieu-trang-web-dich-vu-an-tor-bang-vestacp/
- https://hoanggiangnam.com/huong-dan-cai-dat-lemp-stack-tren-ubuntu-20-cau-hinh-vhost-chuan-xac-nhat/
- https://hoanggiangnam.com/cai-dat-lemp-tor-voi-ten-mien-onion/