Cách cài đặt và cấu hình Askbot với Nginx trên CentOS 7

theanh

Administrator
Nhân viên
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.

Những gì chúng ta sẽ làm​

  1. Cài đặt các dependency
  2. Cài đặt và cấu hình PostgreSQL
  3. Cài đặt và cấu hình Askbot
  4. Cài đặt và cấu hình uWSGI
  5. Cài đặt và cấu hình Nginx Webserver
  6. 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'
Sau đó, hãy cài đặt kho lưu trữ Epel.
Mã:
yum -y install epel-release
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.
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
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.
Mã:
postgresql-setup initdb
Tiếp theo, hãy khởi động postgres và cho phép nó tự động khởi chạy khi khởi động.
Mã:
systemctl start postgresql
systemctl enable postgresql
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.
Mã:
su - postgres
psql
Sau đó, hãy cấp cho người dùng postgres một mật khẩu mới.
Mã:
\password postgres
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.
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
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.
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
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.

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
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).
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/
Đi đến thư mục 'hakase-labs' và kích hoạt môi trường ảo để cài đặt Askbot.
Mã:
cd hakase-labs/
source bin/activate
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'.
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/
Đi đến thư mục myapp và chạy lệnh 'askbot-setup'.
Mã:
cd myapp/
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.
Mã:
python manage.py collectstatic
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.
Mã:
python manage.py syncdb
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ã:
python manage.py runserver 0.0.0.0:8080
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:


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
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'.
Mã:
mkdir -p /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.
Mã:
cd /etc/uwsgi/sites
vim askbot.ini
Dán cấu hình sau vào tệp.
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
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.
Mã:
cd /etc/systemd/system/
vim uwsgi.service
Dán cấu hình dịch vụ uWSGI sau vào tệp.
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
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.
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
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.
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;
 }
 }
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.
Mã:
nginx -t
Tiếp theo, hãy khởi động các dịch vụ Nginx và uWSGI.
Mã:
systemctl start nginx
systemctl start uwsgi
Và cho phép chúng tự động khởi động khi khởi động.
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.

Tham khảo​

 
Back
Bên trên