Askbot là phần mềm nguồn mở để tạo diễn đàn Hỏi & Đáp dựa trên Python Django Framework. Về cơ bản, đây là hệ thống Hỏi & Đáp như StackOverflow, Yahoo Answers và các hệ thống khác. Được Mike Chan và Sailing Cai tạo ra vào năm 2009 và dễ dàng cài đặt và cấu hình trên các hệ thống Linux như Ubuntu và CentOS. Nhiều dự án phần mềm nguồn mở lớn như Fedora và LibreOffice đang sử dụng phần mềm này.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt ứng dụng Askbot Python Django bằng máy chủ web uWSGI và Nginx trên hệ thống CentOS 7. Đối với cơ sở dữ liệu, chúng ta sẽ sử dụng PostgreSQL để cài đặt Askbot.
Trước tiên, hãy cài đặt 'Development Tools' của CentOS bằng lệnh yum group bên dưới.
Sau đó, hãy cài đặt kho lưu trữ Epel.
Và cuối cùng, hãy cài đặt các gói python, bao gồm python pip, python-devel và python six.
Vì vậy, hãy bắt đầu bằng cách cài đặt PostgreSQL từ kho lưu trữ bằng lệnh yum bên dưới.
Sau khi cài đặt hoàn tất, chúng ta cần khởi tạo cơ sở dữ liệu, bạn có thể thực hiện việc này bằng lệnh bên dưới.
Tiếp theo, hãy khởi động postgres và cho phép nó tự động khởi chạy khi khởi động.
Tại thời điểm này, cơ sở dữ liệu PostgreSQL sẽ được cài đặt. Tiếp theo, chúng ta cần đặt lại mật khẩu người dùng postgres. Để thực hiện việc này, trước tiên hãy đăng nhập với tư cách là người dùng 'postgres' và truy cập công cụ dòng lệnh psql.
Sau đó, hãy cấp cho người dùng postgres một mật khẩu mới.
Bây giờ, hãy tạo một cơ sở dữ liệu và người dùng mới cho Askbot. Ví dụ, chúng ta muốn tạo một người dùng mới 'hakaselabs' với mật khẩu 'hakase123' và cơ sở dữ liệu có tên là 'askbotdb'. Các truy vấn postgres sau đây sẽ giúp chúng ta tạo ra tất cả những thứ này.
Vậy là cơ sở dữ liệu và người dùng để cài đặt Askbot đã được tạo. Bước tiếp theo là chỉnh sửa cấu hình postgres để thiết lập xác thực, bạn có thể thực hiện bằng cách vào thư mục 'pgsql/data' và chỉnh sửa tệp 'pg_hba.conf' bằng vim.
Khi đã vào trong tệp, hãy đổi tất cả xác thực thành md5, như hiển thị bên dưới.
Bây giờ, hãy lưu và thoát tệp, sau đó khởi động lại dịch vụ postgres.
Vậy là đến bây giờ, cơ sở dữ liệu PostgreSQL đã được cài đặt; cơ sở dữ liệu cho cài đặt Askbot đã được tạo; và phương thức xác thực người dùng postgres đã được thay đổi thành md5.
Đầu tiên, hãy tạo một người dùng mới 'askbot' và cấp cho người dùng một mật khẩu mới.
Sau đó thêm người dùng 'askbot' vào nhóm 'wheel' để truy cập lệnh sudo (không chắc 'sudo' là gì? Tìm hiểu thêm về nó tại đây).
Bây giờ hãy nâng cấp pip lên phiên bản mới nhất và cài đặt gói python virtualenv.
Tiếp theo. đăng nhập với tư cách là người dùng 'askbot' và tạo môi trường ảo python mới 'hakase-labs' với virtualenv.
Đi đến thư mục 'hakase-labs' và kích hoạt môi trường ảo để cài đặt Askbot.
Bây giờ hãy cài đặt askbot và các gói python khác bằng lệnh pip trên môi trường ảo 'hakase-labs'.
Tiếp theo, tạo một thư mục mới cho dự án 'Askbot'. Hãy đảm bảo rằng bạn không sử dụng 'askbot' làm tên thư mục. Trong trường hợp của chúng tôi, ví dụ, chúng tôi đã tạo một thư mục mới có tên là 'myapp'
Đi đến thư mục myapp và chạy lệnh 'askbot-setup'.
Lệnh 'askbot-setup' sẽ hỏi bạn một số điều nhất định. Ví dụ, bạn sẽ được hỏi về đường dẫn thư mục để triển khai Askbot - bạn có thể nhập '.' và nhấn Enter để tiếp tục. Tương tự, khi được hỏi về công cụ cơ sở dữ liệu, hãy nhập '1' để sử dụng postgresql và nhấn Enter. Đối với các chi tiết liên quan đến cơ sở dữ liệu, hãy nhập databasename là 'askbotdb', database user là 'hakaselabs' và password là 'hakase123'.
Vì vậy, Askbot hiện đã được cài đặt trên thư mục 'myapp'. Bây giờ chúng ta cần tạo các tệp tĩnh Askbot Django và cơ sở dữ liệu.
Chạy lệnh bên dưới để tạo các tệp tĩnh Askbot Django.
Khi được yêu cầu xác nhận, hãy nhập 'yes' và nhấn Enter.
Bây giờ, để tạo cơ sở dữ liệu, hãy chạy syncdb như bên dưới.
Bạn sẽ được yêu cầu tạo người dùng và mật khẩu quản trị viên. Vì vậy, khi được yêu cầu, hãy nhập tên người dùng, email và mật khẩu để cấu hình quản trị viên.
Bây giờ, Askbot đã được cài đặt, các tệp tĩnh đã được tạo và cấu hình cơ sở dữ liệu đã hoàn tất.
Bạn có thể kiểm tra cài đặt Askbot bằng lệnh runserver bên dưới.
Mở trình duyệt web của bạn và nhập địa chỉ IP của máy chủ, bạn sẽ thấy một trang tương tự như sau:
Đầu tiên, cài đặt uWSGI bằng lệnh pip, như được hiển thị bên dưới.
Sau khi cài đặt hoàn tất, hãy tạo một thư mục mới cho các tệp máy chủ ảo uWSGI. Ví dụ, trong trường hợp của chúng tôi, chúng tôi đã tạo '/etc/uwsgi/sites'.
Đi đến thư mục vừa tạo và tạo cấu hình askbot uWSGI mới bằng vim.
Dán cấu hình sau vào tệp.
Vậy là xong. Lưu tệp và thoát khỏi trình chỉnh sửa.
Tiếp theo, thêm tệp tập lệnh dịch vụ uWSGI mới vào thư mục '/etc/systemd/system'. Vào thư mục và tạo tệp 'uwsgi.service' bằng vim.
Dán cấu hình dịch vụ uWSGI sau vào tệp.
Lưu và thoát.
Bây giờ, hãy tải lại các dịch vụ systemd và cho phép uWSGI tự động khởi động khi khởi động.
Vậy là uWSGI đã được cài đặt và bạn sẽ thấy nó chạy như một dịch vụ.
Để bắt đầu, hãy cài đặt Nginx bằng lệnh yum.
Bây giờ hãy đến thư mục 'conf.d' của Nginx và tạo tệp máy chủ ảo mới 'askbot.conf' bằng trình soạn thảo vim.
Dán cấu hình Askbot Nginx sau vào tệp.
Lưu tệp và thoát khỏi trình soạn thảo. Bây giờ, hãy kiểm tra cấu hình để đảm bảo không có lỗi.
Tiếp theo, hãy khởi động các dịch vụ Nginx và uWSGI.
Và cho phép chúng tự động khởi động khi khởi động.
Vì vậy, Nginx hiện đã được cài đặt làm proxy ngược cho ứng dụng uWSGI 'Askbot'.
Đây là thông tin đăng nhập của người dùng Askbot trang:
Bảng điều khiển người dùng Askbot:
Cài đặt quản trị Askbot:
Đăng nhập quản trị Askbot Django:
Bảng điều khiển quản trị Askbot Django:
Vậy là ứng dụng hệ thống Hỏi & Đáp 'Askbot' đã được cài đặt thành công với máy chủ web uWSGI và Nginx trên máy chủ CentOS 7.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt ứng dụng Askbot Python Django bằng máy chủ web uWSGI và Nginx trên hệ thống CentOS 7. Đối với cơ sở dữ liệu, chúng ta sẽ sử dụng PostgreSQL để cài đặt Askbot.
Những gì chúng ta sẽ làm
- Cài đặt các dependency
- Cài đặt và cấu hình PostgreSQL
- Cài đặt và cấu hình Askbot
- Cài đặt và cấu hình uWSGI
- Cài đặt và cấu hình Nginx Webserver
- Kiểm tra thiết lập
Điều kiện tiên quyết
- Máy chủ CentOS 7
- Quyền root
Bước 1 - Cài đặt các dependency
Trong bước này, chúng ta sẽ cài đặt một số gói cần thiết để cài đặt Askbot thành công. Các gói này bao gồm 'Công cụ phát triển', kho lưu trữ Epel và một số công cụ liên quan đến python (để quản lý các gói Python). Vậy chúng ta hãy bắt đầu.Trước tiên, hãy cài đặt 'Development Tools' của CentOS bằng lệnh yum group bên dưới.
Mã:
yum group install 'Development Tools'
Mã:
yum -y install epel-release
Mã:
yum -y install python-pip python-devel python-six
Bước 2 - Cài đặt và cấu hình PostgreSQL
Bây giờ chúng ta cần cơ sở dữ liệu PostgreSQL, có sẵn trong kho lưu trữ CentOS. Trong phần này, chúng ta sẽ thảo luận về cách bạn có thể cài đặt cơ sở dữ liệu PostgreSQL, thay đổi mật khẩu người dùng postgres, tạo người dùng và cơ sở dữ liệu mới cho cài đặt Askbot và cuối cùng là thay đổi cấu hình xác thực postgres.Vì vậy, hãy bắt đầu bằng cách cài đặt PostgreSQL từ kho lưu trữ bằng lệnh yum bên dưới.
Mã:
yum -y install postgresql-server postgresql-devel postgresql-contrib
Mã:
postgresql-setup initdb
Mã:
systemctl start postgresql
systemctl enable postgresql
Mã:
su - postgres
psql
Mã:
\password postgres
Mã:
tạo cơ sở dữ liệu askbotdb;
tạo người dùng hakaselabs với mật khẩu 'hakase123';
cấp tất cả các quyền trên cơ sở dữ liệu askbotdb cho hakaselabs;
Vậy là cơ sở dữ liệu và người dùng để cài đặt Askbot đã được tạo. Bước tiếp theo là chỉnh sửa cấu hình postgres để thiết lập xác thực, bạn có thể thực hiện bằng cách vào thư mục 'pgsql/data' và chỉnh sửa tệp 'pg_hba.conf' bằng vim.
Mã:
cd /var/lib/pgsql/data/
vim pg_hba.conf
Mã:
local all all md5
# Kết nối cục bộ IPv4:
host all all 127.0.0.1/32 md5
# Kết nối cục bộ IPv6:
host all all ::1/128 md5
Bây giờ, hãy lưu và thoát tệp, sau đó khởi động lại dịch vụ postgres.
Mã:
systemctl restart postgresql
Bước 3 - Cài đặt và cấu hình Askbot
Trong bước này, chúng ta sẽ thảo luận về việc cài đặt và cấu hình Askbot. Chúng ta sẽ cài đặt Askbot dưới tên người dùng có tên là 'askbot' và sử dụng virtualenv python. Vậy chúng ta hãy bắt đầu.Đầu tiên, hãy tạo một người dùng mới 'askbot' và cấp cho người dùng một mật khẩu mới.
Mã:
useradd -m -s /bin/bash askbot
passwd askbot
Mã:
usermod -a -G wheel askbot
Bây giờ hãy nâng cấp pip lên phiên bản mới nhất và cài đặt gói python virtualenv.
Mã:
pip install --upgrade pip
pip install virtualenv six
Tiếp theo. đăng nhập với tư cách là người dùng 'askbot' và tạo môi trường ảo python mới 'hakase-labs' với virtualenv.
Mã:
su - askbot
virtualenv hakase-labs/
Mã:
cd hakase-labs/
source bin/activate
Mã:
pip install six
pip install askbot psycopg2
Tiếp theo, tạo một thư mục mới cho dự án 'Askbot'. Hãy đảm bảo rằng bạn không sử dụng 'askbot' làm tên thư mục. Trong trường hợp của chúng tôi, ví dụ, chúng tôi đã tạo một thư mục mới có tên là 'myapp'
Mã:
mkdir myapp/
Mã:
cd myapp/
askbot-setup
Vì vậy, Askbot hiện đã được cài đặt trên thư mục 'myapp'. Bây giờ chúng ta cần tạo các tệp tĩnh Askbot Django và cơ sở dữ liệu.
Chạy lệnh bên dưới để tạo các tệp tĩnh Askbot Django.
Mã:
python manage.py collectstatic
Bây giờ, để tạo cơ sở dữ liệu, hãy chạy syncdb như bên dưới.
Mã:
python manage.py syncdb
Bây giờ, Askbot đã được cài đặt, các tệp tĩnh đã được tạo và cấu hình cơ sở dữ liệu đã hoàn tất.
Bạn có thể kiểm tra cài đặt Askbot bằng lệnh runserver bên dưới.
Mã:
python manage.py runserver 0.0.0.0:8080
Bước 4 - Cài đặt và cấu hình uWSGI
Chúng tôi sẽ sử dụng uWSGI làm dịch vụ cho dự án Askbot Django. Cụ thể, chúng tôi sẽ sử dụng uWSGI với máy chủ web Nginx để cài đặt Askbot. Vậy chúng ta hãy bắt đầu.Đầu tiên, cài đặt uWSGI bằng lệnh pip, như được hiển thị bên dưới.
Mã:
sudo pip install uwsgi
Mã:
mkdir -p /etc/uwsgi/sites
Mã:
cd /etc/uwsgi/sites
vim askbot.ini
Mã:
[uwsgi]
# Thư mục dự án, thư mục Python
chdir = /home/askbot/hakase-labs/myapp
home = /home/askbot/hakase-labs/
static-map = /m=/home/askbot/hakase-labs/myapp/static
wsgi-file = /home/askbot/hakase-labs/myapp/django.wsgi
master = true
processes = 5
# Askbot sẽ chạy dưới tệp sock
socket = /run/uwsgi/askbot.sock
chmod-socket = 664
uid = askbot
gid = nginx
vacuum = true
# Tệp nhật ký uWSGI
logto = /var/log/uwsgi.log
Tiếp theo, thêm tệp tập lệnh dịch vụ uWSGI mới vào thư mục '/etc/systemd/system'. Vào thư mục và tạo tệp 'uwsgi.service' bằng vim.
Mã:
cd /etc/systemd/system/
vim uwsgi.service
Mã:
[Unit]
Description=uWSGI Emperor service
[Service]
ExecStartPre=/bin/bash -c 'mkdir -p /run/uwsgi; chown askbot:nginx /run/uwsgi'
ExecStart=/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all
[Cài đặt]
WantedBy=multi-user.target
Bây giờ, hãy tải lại các dịch vụ systemd và cho phép uWSGI tự động khởi động khi khởi động.
Mã:
systemctl daemon-reload
systemctl enable uwsgi
Vậy là uWSGI đã được cài đặt và bạn sẽ thấy nó chạy như một dịch vụ.
Bước 5 - Cài đặt và cấu hình máy chủ web Nginx
Vậy là Askbot đã được cài đặt và đang chạy dưới tệp sock uWSGI 'askbot.sock'. Trong bước này, chúng ta sẽ sử dụng máy chủ web Nginx làm proxy ngược cho ứng dụng uWSGI 'Askbot'.Để bắt đầu, hãy cài đặt Nginx bằng lệnh yum.
Mã:
yum -y install nginx
Mã:
cd /etc/nginx/conf.d/
vim askbot.conf
Dán cấu hình Askbot Nginx sau vào tệp.
Mã:
server {
listen 80;
server_name askbot.me www.askbot.me;
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/askbot.sock;
}
}
Mã:
nginx -t
Mã:
systemctl start nginx
systemctl start uwsgi
Mã:
systemctl enable nginx
systemctl enable uwsgi
Vì vậy, Nginx hiện đã được cài đặt làm proxy ngược cho ứng dụng uWSGI 'Askbot'.
Bước 6 - Kiểm tra thiết lập
Mở trình duyệt web của bạn và truy cập tên miền Askbot: askbot.me, bạn sẽ thấy trang chủ như được hiển thị bên dưới.Đây là thông tin đăng nhập của người dùng Askbot trang:
Bảng điều khiển người dùng Askbot:
Cài đặt quản trị Askbot:
Đăng nhập quản trị Askbot Django:
Bảng điều khiển quản trị Askbot Django:
Vậy là ứng dụng hệ thống Hỏi & Đáp 'Askbot' đã được cài đặt thành công với máy chủ web uWSGI và Nginx trên máy chủ CentOS 7.