Tạo Mạng Xã Hội Trực Tuyến Với Elgg Trên Debian 9

theanh

Administrator
Nhân viên
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt và cấu hình phiên bản Elgg mới nhất trên Debian 9 để tạo mạng xã hội trực tuyến miễn phí.

Elgg là phần mềm khung công cụ xã hội nguồn mở miễn phí được viết bằng ngôn ngữ lập trình PHP. Khung Elgg có thể giúp các cá nhân hoặc tổ chức tạo ra các môi trường xã hội mạnh mẽ trong Linux dưới máy chủ web Apache/Nginx, hệ thống quản lý cơ sở dữ liệu PHP và MySQL/MariaDB, còn được gọi là ngăn xếp LAMP hoặc LEMP. Nó cũng có các tính năng tích hợp có thể cung cấp năng lượng cho việc chia sẻ tệp, viết blog, nhóm xã hội hoặc nền tảng giáo dục trên các mạng công cộng hoặc riêng tư.

Để triển khai thành công nền tảng Elgg tại cơ sở của bạn, bạn sẽ cần đáp ứng các yêu cầu sau.
  • Một máy ảo hoặc máy chủ riêng ảo chạy trên Debian 9, tốt nhất là cài đặt tối thiểu
  • Truy cập trực tiếp vào tài khoản gốc hoặc người dùng cục bộ có quyền gốc thông qua bảng điều khiển máy chủ hoặc quản lý từ xa qua SSH
  • Máy chủ cần có địa chỉ IP tĩnh được định cấu hình cho giao diện mạng bên ngoài để truy cập thông qua địa chỉ IP công khai của máy chủ đó cho khách truy cập
  • Bạn cũng có thể cần một tên miền công cộng hoặc riêng được định cấu hình cho máy chủ của mình để khách truy cập có thể truy cập nền tảng thông qua tên miền, chẳng hạn như www.yourdomain.com, mặc dù bạn vẫn có thể truy cập nền tảng thông qua địa chỉ IP máy chủ của mình.
  • Để sử dụng đăng ký trang web Elgg qua địa chỉ email hoặc sử dụng các tính năng nền tảng khác, bạn cần triển khai máy chủ thư tại cơ sở của mình hoặc sử dụng máy chủ thư công cộng.

Yêu cầu trước​

Bước đầu tiên, hãy đăng nhập vào máy chủ Debian 9 với quyền root hoặc với người dùng có quyền root và đưa ra lệnh sau để cập nhật hệ thống của bạn bằng các bản vá bảo mật, phần mềm và bản cập nhật hạt nhân mới nhất.
Mã:
apt update
Mã:
apt upgrade
Tiếp theo, hãy đảm bảo rằng bạn đã định cấu hình tên máy của mình bằng cách thực hiện các lệnh sau. Bạn nên thay thế biến hostname được sử dụng trong ví dụ này để khớp với tên miền của riêng bạn.
Mã:
hostnamectl set-hostname www.socialnet.org
Sau khi bạn đã cấu hình tên máy chủ, hãy xác minh xem máy chủ đã được cấu hình đúng chưa bằng cách kiểm tra tệp hosts bằng các lệnh sau.
Mã:
hostnamectl
Mã:
cat /etc/hostname
Mã:
hostname –s
Mã:
hostname –f
Cuối cùng, để áp dụng các bản cập nhật tên máy chủ và hạt nhân của máy, hãy khởi động lại hệ thống bằng cách đưa ra lệnh sau.
Mã:
systemctl reboot
Sau khi hệ thống khởi động lại, hãy đăng nhập lại vào bảng điều khiển và chạy lệnh sau để cài đặt một số tiện ích hệ thống giúp chúng ta tải xuống phần mềm qua internet và giải nén một số loại tệp lưu trữ
Mã:
apt install wget zip unzip curl

Cài đặt LAMP Stack​

Để triển khai khung mạng xã hội Elgg trên máy chủ của chúng tôi, chúng tôi cần cài đặt các thành phần LAMP stack. Thành phần đầu tiên chúng tôi sẽ cài đặt là cơ sở dữ liệu - MariaDB - một nhánh của cơ sở dữ liệu MySQL phổ biến, làm cơ sở dữ liệu phụ trợ. Cơ sở dữ liệu MariaDB sẽ được ứng dụng sử dụng để lưu trữ người dùng, phiên, danh bạ, bài đăng, bình luận và thông tin khác. Để cài đặt máy chủ cơ sở dữ liệu MariaDB và phần mềm máy khách trong Debian 9 thông qua kho lưu trữ chính thức, hãy đưa ra lệnh bên dưới trong thiết bị đầu cuối.
Mã:
apt install mariadb-server mariadb-client
Sau khi quá trình cài đặt cơ sở dữ liệu hoàn tất, hãy đăng nhập vào bảng điều khiển MySQL và đưa ra các lệnh sau để bảo mật tài khoản gốc của cơ sở dữ liệu, có thể truy cập theo mặc định mà không cần cung cấp mật khẩu.
Mã:
mysql -h localhost
Mã:
Chào mừng đến với màn hình MariaDB. Các lệnh kết thúc bằng ; hoặc \g.

ID kết nối MariaDB của bạn là 2

Phiên bản máy chủ: 10.1.26-MariaDB-0+deb9u1 Debian 9.1



Bản quyền (c) 2000, 2017, Oracle, MariaDB Corporation Ab và những bên khác.



Nhập 'help;' hoặc '\h' để được trợ giúp. Nhập '\c' để xóa câu lệnh nhập hiện tại.
MariaDB [(none)]> sử dụng mysql;
Mã:
Đọc thông tin bảng để hoàn thành tên bảng và cột

Bạn có thể tắt tính năng này để khởi động nhanh hơn với -A



Cơ sở dữ liệu đã thay đổi
MariaDB [mysql]> cập nhật người dùng đặt plugin='' nơi người dùng='root';
Mã:
Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây)

Số hàng khớp: 1 Đã thay đổi: 1 Cảnh báo: 0
MariaDB [mysql]> xóa quyền;
Mã:
Truy vấn OK, 0 hàng bị ảnh hưởng (0,00 giây)
MariaDB [mysql]> thoát
Mã:
Tạm biệt
Sau khi hoàn tất các bước trên, hãy thực thi tập lệnh mysql_secure_installation do kho lưu trữ Debian stretch cung cấp để bảo mật hơn nữa cho máy chủ MariaDB và thiết lập mật khẩu mạnh cho tài khoản gốc của cơ sở dữ liệu. Về cơ bản, hãy trả lời "có" cho tất cả các câu hỏi được tập lệnh hỏi, chẳng hạn như: để thay đổi mật khẩu gốc của MySQL, để xóa người dùng ẩn danh, để vô hiệu hóa đăng nhập gốc từ xa và xóa cơ sở dữ liệu thử nghiệm, như minh họa trong đoạn trích tập lệnh bên dưới.
Mã:
mysql_secure_installation
Mã:
LƯU Ý: KHUYẾN NGHỊ CHẠY TẤT CẢ CÁC PHẦN CỦA TỪNG BÀI VIẾT NÀY CHO TẤT CẢ CÁC MÁY CHỦ

 MariaDB ĐANG SỬ DỤNG TRONG SẢN XUẤT! VUI LÒNG ĐỌC KỸ TỪNG BƯỚC!



Để đăng nhập vào MariaDB để bảo mật, chúng ta sẽ cần mật khẩu

hiện tại của người dùng gốc. Nếu bạn vừa cài đặt MariaDB và

bạn chưa đặt mật khẩu root, thì mật khẩu sẽ để trống,

do đó, bạn chỉ cần nhấn enter ở đây.



Nhập mật khẩu hiện tại cho root (nhập nếu không có):

OK, mật khẩu đã sử dụng thành công, tiếp tục...



Đặt mật khẩu root đảm bảo rằng không ai có thể đăng nhập vào MariaDB

người dùng root mà không có quyền thích hợp.



Bạn đã đặt mật khẩu root, do đó, bạn có thể trả lời 'n' một cách an toàn.

Đổi mật khẩu root? [Y/n] y

Mật khẩu mới:

Nhập lại mật khẩu mới:

Mật khẩu đã được cập nhật thành công!

Đang tải lại bảng đặc quyền..

... Thành công!



Theo mặc định, cài đặt MariaDB có một người dùng ẩn danh, cho phép bất kỳ ai

đăng nhập vào MariaDB mà không cần phải tạo tài khoản người dùng cho

họ. Điều này chỉ nhằm mục đích thử nghiệm và giúp quá trình cài đặt

dễ dàng hơn một chút. Bạn nên xóa những người dùng này trước khi chuyển sang

môi trường sản xuất.



Xóa người dùng ẩn danh? [Y/n] y

... Thành công!



Thông thường, root chỉ được phép kết nối từ 'localhost'. Điều này

đảm bảo rằng không ai có thể đoán được mật khẩu root từ mạng.



Không cho phép root đăng nhập từ xa? [Y/n] y

... Thành công!



Theo mặc định, MariaDB đi kèm với một cơ sở dữ liệu có tên là 'test' mà bất kỳ ai cũng có thể

truy cập. Cơ sở dữ liệu này cũng chỉ dành cho mục đích thử nghiệm và nên được xóa

trước khi chuyển sang môi trường sản xuất.



Xóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? [Y/n] y

- Đang xóa cơ sở dữ liệu thử nghiệm...

... Thành công!

- Đang xóa các đặc quyền trên cơ sở dữ liệu thử nghiệm...

... Thành công!



Tải lại các bảng đặc quyền sẽ đảm bảo rằng tất cả các thay đổi đã thực hiện cho đến nay

sẽ có hiệu lực ngay lập tức.



Tải lại các bảng đặc quyền ngay bây giờ? [Y/n] y

... Thành công!

Đang dọn dẹp...

Xong! Nếu bạn đã hoàn tất tất cả các bước trên, thì cài đặt MariaDB

của bạn hiện đã an toàn.

Cảm ơn bạn đã sử dụng MariaDB!
Để kiểm tra tính bảo mật của MariaDB, hãy thử đăng nhập vào cơ sở dữ liệu từ bảng điều khiển mà không có mật khẩu root. Quyền truy cập vào cơ sở dữ liệu sẽ bị từ chối nếu không cung cấp mật khẩu cho tài khoản root, như minh họa trong đoạn trích lệnh bên dưới:
Mã:
mysql -h localhost -u root
Mã:
ERROR 1045 (28000): Quyền truy cập bị từ chối đối với người dùng 'root'@'localhost' (sử dụng mật khẩu: KHÔNG)
Nếu mật khẩu được cung cấp, quy trình đăng nhập sẽ được cấp cho bảng điều khiển MySQL, như minh họa trong mẫu lệnh:
Mã:
mysql -h localhost -u root -p
Mã:
Nhập mật khẩu:

Chào mừng đến với màn hình MariaDB. Các lệnh kết thúc bằng ; hoặc \g.

ID kết nối MariaDB của bạn là 15

Phiên bản máy chủ: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

Bản quyền (c) 2000, 2017, Oracle, MariaDB Corporation Ab và những bên khác.

Nhập 'help;' hoặc '\h' để được trợ giúp. Nhập '\c' để xóa câu lệnh nhập hiện tại.

MariaDB [(none)]> thoát

Tạm biệt
Sau khi bạn đã cài đặt và bảo mật cơ sở dữ liệu MariaDB, đã đến lúc cài đặt các thành phần tiếp theo cần thiết để triển khai ứng dụng Elgg: Máy chủ HTTP Apache và cổng xử lý ngôn ngữ lập trình PHP. Để cài đặt máy chủ web Apache và trình thông dịch PHP cùng với tất cả các mô-đun PHP cần thiết mà máy chủ sẽ thực thi các tập lệnh ứng dụng, hãy thực hiện lệnh sau trong bảng điều khiển máy chủ của bạn.
Mã:
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-opcache php7.0-mbstring php7.0-xml php7.0-mysql
Tiếp theo, hãy mở và sửa đổi tệp cấu hình mặc định của PHP bằng cách thay đổi các biến PHP sau. Mở tệp /etc/php/7.0/apache2/php.ini để chỉnh sửa và thay đổi các dòng sau. đầu tiên, hãy sao lưu tệp cấu hình PHP.
Mã:
cp /etc/php/7.0/apache2/php.ini{,.backup}
Mã:
nano /etc/php/7.0/apache2/php.ini
Tìm kiếm, chỉnh sửa và thay đổi các biến sau trong tệp cấu hình php.ini:
Mã:
file_uploads = On
default_charset = UTF-8
memory_limit = 128M
upload_max_filesize = 100M
date.timezone = Europe/London
Tăng biến upload_max_file_size cho phù hợp để hỗ trợ các tệp đính kèm lớn cho ứng dụng của bạn. Ngoài ra, hãy thay đổi cài đặt múi giờ của PHP theo vị trí địa lý của hệ thống bằng cách tham khảo danh sách múi giờ do tài liệu PHP cung cấp tại liên kết sau http://php.net/manual/en/timezones.php

Bật plugin OPCache có sẵn cho PHP7 để tăng tốc độ tải trang web bằng cách thêm các cài đặt OPCache sau vào cuối tệp cấu hình trình thông dịch PHP, bên dưới câu lệnh [opcache], như được mô tả chi tiết bên dưới:
Mã:
opcache.enable=1 
opcache.enable_cli=1 
opcache.interned_strings_buffer=8 
opcache.max_accelerated_files=10000 
opcache.memory_consumption=128 
opcache.save_comments=1
opcache.revalidate_freq=1
Sau khi bạn đã thực hiện tất cả các thay đổi trên, hãy lưu và đóng tệp cấu hình php.ini, khởi động lại máy chủ web Apache để áp dụng các thay đổi của trình thông dịch PHP bằng cách đưa ra lệnh bên dưới.
Mã:
systemctl restart apache2

Cấu hình Tường lửa​

Để thêm các quy tắc ứng dụng tường lửa UFW cần thiết để cho phép lưu lượng HTTP đi qua tường lửa hệ thống, hãy đưa ra các lệnh sau trong bảng điều khiển máy chủ.
Mã:
ufw allow WWW
hoặc
Mã:
ufw allow 80/tcp
Trong trường hợp bạn được kết nối từ xa với máy chủ của mình qua SSH, hãy thêm quy tắc bên dưới để mở cổng SSH 22 trong tường lửa của bạn.
Mã:
ufw allow 22/tcp
Nếu bạn quản lý các quy tắc tường lửa trong máy chủ Debian của mình thông qua các quy tắc thô iptables, hãy thêm các quy tắc sau để cho phép lưu lượng truy cập vào cổng 80 và 22 vượt qua tường lửa để các máy khách bên ngoài có thể truy cập ứng dụng. Chỉ mở cổng 22/TCP nếu bạn kết nối từ xa với máy chủ qua SSH.
Mã:
apt-get install -y iptables-persistent
Mã:
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
Mã:
iptables -I INPUT -p tcp --destination-port 22 -j ACCEPT
Mã:
netfilter-persistent save
Mã:
systemctl restart netfilter-persistent
Mã:
systemctl status netfilter-persistent
Mã:
systemctl enable netfilter-persistent.service

Cấu hình Máy chủ Web Apache​

Ở bước tiếp theo, hãy bật mô-đun ghi đè Apache cần thiết để thay đổi cấu hình máy chủ web trên bay qua tệp .htacccess và mô-đun TLS cần thiết để bảo mật các giao dịch HTTP, bằng cách phát hành lệnh bên dưới.
Mã:
a2enmod rewrite ssl
Mã:
a2ensite default-ssl.conf
Tiếp theo, mở tệp cấu hình trang web SSL mặc định của Apache để chỉnh sửa bằng trình soạn thảo văn bản yêu thích của bạn và thêm các quy tắc viết lại URL sau sau lệnh DocumentRoot:
Mã:
[I]nano /etc/apache2/sites-enabled/default-ssl.conf[/I]
Trích đoạn tệp cấu hình trang web SSL:
Mã:
 Options +FollowSymlinks
 AllowOverride All
 Require all granted
Ngoài ra, hãy thực hiện thay đổi được hiển thị bên dưới đối với dòng VirtualHost để làm cho nó trông giống như nội dung được hiển thị trong đoạn trích sau:
Mã:
Thêm những thay đổi tương tự vào tệp cấu hình mặc định của Apache bằng cách mở tệp /etc/apache2/sites-enabled/000-default.conf để chỉnh sửa. Chèn các dòng mã sau vào sau câu lệnh DocumentRoot như trong ví dụ bên dưới.
Mã:
 Options +FollowSymlinks
 AllowOverride All
 Require all granted
 
Back
Bên trên