Askbot là phần mềm diễn đàn hỏi đáp miễn phí, mã nguồn mở và có khả năng tùy chỉnh cao được viết bằng Python và Django. Nó đơn giản, nhẹ và rất giống với các phần mềm diễn đàn khác là StackOverflow và YahooAnswers. Askbot cung cấp rất nhiều tính năng bao gồm, Thẻ và danh mục, Thông báo qua email, hệ thống dựa trên karma, bỏ phiếu, kiểm duyệt nội dung và nhiều tính năng khác.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt phần mềm diễn đàn Askbot trên CentOS 8 với Let's Encrypt SSL.
Đầu tiên, hãy cài đặt "Công cụ phát triển" bằng lệnh sau:
Tiếp theo, hãy cài đặt kho lưu trữ EPEL và các phụ thuộc Python khác bằng lệnh sau:
Sau khi cài đặt tất cả các gói cần thiết, bạn có thể tiến hành bước tiếp theo.
Sau khi cài đặt, khởi tạo cơ sở dữ liệu bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Tiếp theo, hãy khởi động dịch vụ PostgreSQL và cho phép dịch vụ này khởi động sau khi hệ thống khởi động lại bằng lệnh sau:
Tiếp theo, hãy đăng nhập vào shell PostgreSQL với lệnh sau:
Đầu ra:
Tiếp theo, tạo cơ sở dữ liệu và người dùng cho Askbot bằng lệnh sau:
Tiếp theo, cấp tất cả các quyền cho askbot bằng lệnh sau:
Cuối cùng, thoát khỏi shell PostgreSQL bằng lệnh sau:
Tiếp theo, bạn sẽ cần cấu hình xác thực người dùng cục bộ cho PostgreSQL. Bạn có thể thực hiện bằng cách chỉnh sửa tệp pg_hba.conf:
Thay thế peer bằng md5 trong các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, khởi động lại dịch vụ PostgreSQL để áp dụng các thay đổi:
Tiếp theo, thêm người dùng Askbot vào nhóm wheel để truy cập lệnh sudo:
Tiếp theo, cài đặt gói python virtualenv bằng lệnh sau:
Sau khi cài đặt, hãy đổi tên người dùng thành askbot và tạo một môi trường ảo mới cho Askbot bằng lệnh sau:
Bạn sẽ thấy kết quả sau:
Tiếp theo, hãy thay đổi thư mục thành askbot và kích hoạt môi trường ảo bằng lệnh sau:
Đầu ra:
Tiếp theo, hãy cài đặt Askbot và các phụ thuộc bắt buộc khác bằng lệnh sau:
Tiếp theo, tạo một thư mục mới cho ứng dụng của bạn, thay đổi thư mục thành ứng dụng của bạn và thiết lập Askbot bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Nhập "." và nhấn Enter để tiếp tục. Bạn sẽ thấy kết quả đầu ra sau:
Gõ 1 để chọn công cụ cơ sở dữ liệu postgresql và nhấn Enter để tiếp tục. Bạn sẽ thấy kết quả đầu ra sau:
Cung cấp thông tin chi tiết về cơ sở dữ liệu Askbot của bạn và nhấn Enter. Sau khi quá trình cài đặt hoàn tất, bạn sẽ thấy kết quả đầu ra sau:
Tiếp theo, tạo các tệp tĩnh và cơ sở dữ liệu Askbot Django bằng lệnh sau:
Cung cấp tên người dùng, email và mật khẩu quản trị viên mong muốn của bạn như hiển thị bên dưới:
Sau khi cài đặt uWSGI, hãy tạo một thư mục mới cho uWSGI bằng lệnh sau:
Tiếp theo, hãy tạo một tệp cấu hình uWSGI mới như được hiển thị bên dưới:
Thêm các dòng sau:
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, tải lại daemon systemd bằng lệnh sau:
Trước tiên, hãy cài đặt máy chủ web Nginx bằng lệnh sau:
Sau khi cài đặt, hãy tạo tệp cấu hình máy chủ ảo mới cho Askbot:
Thêm các dòng sau:
Lưu và đóng tệp. Sau đó, khởi động dịch vụ Nginx và uWSGI và cho phép chúng khởi động sau khi khởi động lại hệ thống bằng lệnh sau:
Bạn có thể cài đặt máy khách Certbot bằng lệnh sau:
Tiếp theo, hãy lấy và cài đặt chứng chỉ SSL cho miền Askbot của bạn bằng lệnh sau:
Lệnh trên sẽ cài đặt tất cả các phụ thuộc cần thiết trên máy chủ của bạn trước. Sau khi cài đặt, bạn sẽ được yêu cầu cung cấp địa chỉ email và chấp nhận điều khoản dịch vụ như hiển thị bên dưới:
Tiếp theo, chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không như hiển thị bên dưới:
Nhập 2 và nhấn Enter để tiếp tục. Sau khi quá trình cài đặt hoàn tất, bạn sẽ thấy kết quả sau:
Theo mặc định, SELinux được bật trong CentOS 8. Bạn nên tắt nó để Askbot hoạt động bình thường. Bạn có thể vô hiệu hóa nó bằng cách chỉnh sửa tệp /etc/selinux/config:
Tìm dòng sau:
Và thay thế bằng dòng sau:
Lưu và đóng tệp. Sau đó, khởi động lại hệ thống của bạn để áp dụng các thay đổi:
Nhấp vào nút đăng nhập. Bạn sẽ thấy trang đăng nhập Askbot trong màn hình sau:
Cung cấp tên người dùng, mật khẩu quản trị Askbot của bạn và nhấp vào nút Đăng nhập vào. Bạn sẽ thấy bảng điều khiển Askbot trong màn hình sau:
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt phần mềm diễn đàn Askbot trên CentOS 8 với Let's Encrypt SSL.
Điều kiện tiên quyết
- Máy chủ chạy CentOS 8.
- Mật khẩu gốc được thiết lập trên máy chủ của bạn.
Cài đặt các phụ thuộc bắt buộc
Trước khi bắt đầu, bạn sẽ cần cài đặt một số phụ thuộc bắt buộc trong hệ thống của mình.Đầu tiên, hãy cài đặt "Công cụ phát triển" bằng lệnh sau:
Mã:
dnf group install 'Công cụ phát triển'
Mã:
dnf install epel-release -y
dnf install python2-pip python2-devel python2-six -y
Cài đặt và cấu hình PostgreSQL
Askbot sử dụng PostgreSQL để lưu trữ dữ liệu của họ. Vì vậy, bạn sẽ cần cài đặt nó trong hệ thống của mình. Bạn có thể cài đặt bằng lệnh sau:
Mã:
dnf install postgresql-server postgresql-devel postgresql-contrib -y
Mã:
postgresql-setup initdb
Mã:
CẢNH BÁO: sử dụng cú pháp đối số đã lỗi thời, hãy thử --helpCẢNH BÁO: đối số được chuyển đổi thành: postgresql-setup --initdb --unit postgresql * Đang khởi tạo cơ sở dữ liệu trong '/var/lib/pgsql/data' * Đã khởi tạo, nhật ký nằm trong /var/lib/pgsql/initdb_postgresql.log
Mã:
systemctl start postgresql
systemctl enable postgresql
Mã:
su - postgres
[postgres@centos8 ~]$ psql
Mã:
psql (10.6)Nhập "help" để được trợ giúp.postgres=#
Mã:
postgres=# create database askbot;
postgres=# create user askbot with password 'password';
Mã:
postgres=# grant all privileges on database askbot to askbot;
Mã:
postgres=# \q
Mã:
nano /var/lib/pgsql/data/pg_hba.conf
Mã:
local all all md5host all all 127.0.0.1/32 md5host all all ::1/128 md5
Mã:
systemctl restart postgresql
Cài đặt và cấu hình Askbot
Trước khi cài đặt Askbot, bạn sẽ cần tạo người dùng cho Askbot. Bạn có thể tạo một người dùng Askbot mới và đặt mật khẩu bằng lệnh sau:
Mã:
useradd -m -s /bin/bash askbot
passwd askbot
Mã:
usermod -a -G wheel askbot
Mã:
pip2 install virtualenv six
Mã:
su - askbot
virtualenv askbot
Mã:
created virtual environment CPython2.7.16.final.0-64 in 663ms creator CPython2Posix(dest=/home/askbot/askbot, clear=False, global=False) seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/tmp/tmp9YFr7B/seed-app-data/v1) activators PythonActivator,CShellActivator,FishActivator,PowerShellActivator,BashActivator
Mã:
cd askbot
source bin/activate
Mã:
(askbot) [askbot@centos8 askbot]$
Mã:
pip2 install six==1.10.0
pip2 install askbot psycopg2
Mã:
mkdir myapp
cd myapp
askbot-setup
Mã:
Triển khai Askbot - Ứng dụng diễn đàn Hỏi & Đáp DjangoCó vấn đề khi cài đặt? -> vui lòng gửi email đến [emailprotected]Để HỦY - nhấn Ctr-C bất kỳ lúc nàoNhập đường dẫn thư mục (tuyệt đối hoặc tương đối) để triển khaiaskbot. Để chọn thư mục hiện tại - nhập "."> .
Mã:
Vui lòng chọn công cụ cơ sở dữ liệu:1 - cho postgresql, 2 - cho sqlite, 3 - cho mysql, 4 - oraclegõ 1/2/3/4: 1
Mã:
Vui lòng nhập tên cơ sở dữ liệu (bắt buộc)> askbotVui lòng nhập người dùng cơ sở dữ liệu (bắt buộc)> askbotVui lòng nhập mật khẩu cơ sở dữ liệu (bắt buộc)> mật khẩu
Mã:
Đang sao chép tệp:* __init__.py* manage.py* urls.py* django.wsgiĐang tạo tệp cài đặtĐã tạo tệp cài đặtĐang sao chép thư mục: * doc* cron* upfilesXong. Vui lòng tìm hướng dẫn thêm tại http://askbot.org/doc/
Mã:
python manage.py collectstatic
python manage.py syncdb
Mã:
Bạn đã cài đặt hệ thống xác thực của Django và không có siêu người dùng nào được xác định.Bạn có muốn tạo một cái ngay bây giờ không? (có/không): cóTên người dùng (để trống để sử dụng 'askbot'): askbotadminĐịa chỉ email: [emailprotected]Mật khẩu:Mật khẩu (lặp lại):Siêu người dùng đã được tạo thành công.
Cài đặt và cấu hình uWSGI
Tiếp theo, bạn sẽ cần cài đặt uWSGI vào hệ thống của mình. uWSGI là một công cụ phần mềm được sử dụng để chạy các ứng dụng web dựa trên Python. Bạn có thể cài đặt nó bằng lệnh sau:
Mã:
pip2 install uwsgi
Mã:
mkdir -p /etc/uwsgi/sites
Mã:
nano /etc/uwsgi/sites/askbot.ini
Mã:
[uwsgi]chdir = /home/askbot/askbot/myapphome = /home/askbot/askbotstatic-map = /m=/home/askbot/askbot/myapp/staticwsgi-file = /home/askbot/askbot/myapp/django.wsgimaster = trueprocesses = 5# Askbot sẽ chạy dưới tệp socksocket = /run/uwsgi/askbot.sockchmod-socket = 664uid = askbotgid = nginxvacuum = true# Tệp nhật ký uWSGIogto = /var/log/uwsgi.log
Tạo tệp dịch vụ Systemd cho uWSGI
Tiếp theo, bạn sẽ cần tạo tệp dịch vụ systemd để quản lý dịch vụ uWSGI. Bạn có thể tạo tệp này bằng lệnh sau:
Mã:
nano /etc/systemd/system/uwsgi.service
Mã:
[Unit]Description=uWSGI service[Service]ExecStartPre=/bin/bash -c 'mkdir -p /run/uwsgi; chown askbot:nginx /run/uwsgi'ExecStart=/bin/uwsgi --emperor /etc/uwsgi/sitesRestart=alwaysKillSignal=SIGQUITType=notifyNotifyAccess=all[Install]WantedBy=multi-user.target
Mã:
systemctl daemon-reload
Cài đặt và cấu hình Nginx
Tiếp theo, bạn sẽ cần cài đặt và cấu hình Nginx để phục vụ ứng dụng Askbot của mình.Trước tiên, hãy cài đặt máy chủ web Nginx bằng lệnh sau:
Mã:
dnf install nginx -y
Mã:
nano /etc/nginx/conf.d/askbot.conf
Mã:
server { listen 80; server_name askbot.linuxbuz.com; location / { include uwsgi_params; uwsgi_pass unix:/run/uwsgi/askbot.sock; } }
Mã:
systemctl start nginx
systemctl enable nginx
systemctl start uwsgi
systemctl enable uwsgi
Bảo mật Askbot bằng Let's Encrypt SSL
Tiếp theo, bạn sẽ cần cài đặt tiện ích Certbot trong hệ thống của mình để tải xuống và cài đặt Let's Encrypt SSL cho miền Askbot.Bạn có thể cài đặt máy khách Certbot bằng lệnh sau:
Mã:
wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto
Mã:
certbot-auto --nginx -d askbot.linuxbuz.com
Mã:
Lưu nhật ký gỡ lỗi vào /var/log/letsencrypt/letsencrypt.logCác plugin đã chọn: Authenticator nginx, Installer nginxNhập địa chỉ email (dùng để gia hạn khẩn cấp và thông báo bảo mật) (Nhập 'c' đểhủy): [emailprotected]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Vui lòng đọc Điều khoản dịch vụ tạihttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Bạn phảiđồng ý để đăng ký với máy chủ ACME tạihttps://acme-v02.api.letsencrypt.org/directory- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(A)gree/(C)ancel: A- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Bạn có sẵn lòng chia sẻ địa chỉ email của mình với Electronic Frontier Foundation, đối tác sáng lập của dự án Let's Encrypt và tổ chức phi lợi nhuận phát triển Certbot không? Chúng tôi muốn gửi cho bạn email về công việc của chúng tôimã hóa web, tin tức EFF, các chiến dịch và các cách hỗ trợ tự do kỹ thuật số.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(C)ó/(K)o: CNhận chứng chỉ mớiThực hiện các thử thách sau:Thử thách http-01 cho askbot.linuxbuz.comĐang chờ xác minh...Đang dọn dẹp các thử tháchTriển khai chứng chỉ cho VirtualHost /etc/nginx/conf.d/askbot.conf
Mã:
Vui lòng chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không, xóa quyền truy cập HTTP.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1: Không chuyển hướng - Không thực hiện thêm bất kỳ thay đổi nào đối với cấu hình máy chủ web.2: Chuyển hướng - Chuyển hướng tất cả các yêu cầu đến quyền truy cập HTTPS an toàn. Chọn tùy chọn này chocác trang web mới hoặc nếu bạn tin tưởng rằng trang web của mình hoạt động trên HTTPS. Bạn có thể hoàn tácthay đổi này bằng cách chỉnh sửa cấu hình máy chủ web của mình.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Chọn số thích hợp [1-2] rồi [enter] (nhấn 'c' để hủy): 2
Mã:
Đang chuyển hướng tất cả lưu lượng truy cập trên cổng 80 sang ssl trong /etc/nginx/conf.d/askbot.conf- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xin chúc mừng! Bạn đã bật thành công https://askbot.linuxbuz.comBạn nên kiểm tra cấu hình của mình tại:https://www.ssllabs.com/ssltest/analyze.html?d=askbot.linuxbuz.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -LƯU Ý QUAN TRỌNG: - Xin chúc mừng! Chứng chỉ và chuỗi của bạn đã được lưu tại: /etc/letsencrypt/live/askbot.linuxbuz.com/fullchain.pem Tệp khóa của bạn đã được lưu tại: /etc/letsencrypt/live/askbot.linuxbuz.com/privkey.pem Chứng chỉ của bạn sẽ hết hạn vào ngày 2020-06-11. Để có phiên bản mới hoặc đã chỉnh sửa của chứng chỉ này trong tương lai, chỉ cần chạy lại certbot-auto với tùy chọn "certonly". Để gia hạn không tương tác *tất cả* chứng chỉ của bạn, hãy chạy "certbot-auto renew" - Nếu bạn thích Certbot, vui lòng cân nhắc hỗ trợ công việc của chúng tôi bằng cách: Quyên góp cho ISRG / Let's Encrypt: https://letsencrypt.org/donate Quyên góp cho EFF: https://eff.org/donate-le
Cấu hình Tường lửa và SELinux
Tiếp theo, bạn sẽ cần tạo một quy tắc tường lửa để cho phép dịch vụ HTTP và HTTPS từ các mạng bên ngoài. Bạn có thể cho phép bằng lệnh sau:
Mã:
firewall-cmd --permanent --add-service=http
Mã:
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Mã:
nano /etc/selinux/config
Mã:
SELINUX=enforcing
Mã:
SELINUX=disabled
Truy cập Askbot
Bây giờ, hãy mở trình duyệt web của bạn và nhập URL https://askbot.linuxbuz.com. Bạn sẽ được chuyển hướng đến màn hình sau:Nhấp vào nút đăng nhập. Bạn sẽ thấy trang đăng nhập Askbot trong màn hình sau:
Cung cấp tên người dùng, mật khẩu quản trị Askbot của bạn và nhấp vào nút Đăng nhập vào. Bạn sẽ thấy bảng điều khiển Askbot trong màn hình sau: