如何在 Ubuntu 16.04 上安装和配置 Askbot
在此页
- 先决条件
- 第 1 步 - 安装依赖项
- 第 2 步 - 安装和配置 PostgreSQL 数据库
- 第 3 步 - 安装和配置 Askbot Django 应用程序
- 第 4 步 - 安装和配置 uWSGI
- 第 5 步 - 安装和配置 Nginx
- 第 6 步 - 测试
- 参考资料
Askbot 是一款基于 Python Django Framework 创建问答论坛的开源软件。它类似于 StackOverflow 和 Yahoo Answers 等其他问答系统。该工具已被 Fedora 和 LibreOffice 等大型开源软件项目使用。 Askbot 由 Mike Chan 和 Sailing Cai 于 2009 年创建,在 Ubuntu 和 CentOS 等 Linux 系统上易于安装和配置。
在本教程中,我们将向您展示如何使用 uWSGI 和 Nginx Web 服务器逐步安装 Askbot Django App,我们将使用 Ubuntu 16.04 Xenial Xerus 作为我们的主要操作系统。
我们将要做什么:
- 安装依赖
- 安装和配置 PostgreSQL 数据库
- 安装和配置 Askbot
- 安装和配置 uWSGI
- 安装和配置 Nginx
- 测试
先决条件
- Ubuntu 16.04
- 根权限
第 1 步 - 安装依赖项
我们必须做的第一步是安装安装 Askbot 所需的软件包。那么让我们开始吧。使用 SSH 连接到您的 Ubuntu 服务器。
ssh
接下来,使用以下 apt 命令安装 python-dev、pip 等软件包。
apt install -y build-essential python-pip python-dev python-flup libpng12-dev zlib1g-dev libpng-dev libjpeg-dev python-setuptools
所有必需的软件包都已安装。
第 2 步 - 安装和配置 PostgreSQL 数据库
Askbot 支持许多数据库系统,如 MySQL、SQLite 和 PostreSQL。在本教程中,我们将使用 PostgreSQL 作为我们的数据库系统。
我们将安装 PostgreSQL,为本地用户配置身份验证,然后为 Askbot 安装创建一个新的数据库和用户。
使用以下 apt 命令安装 PostgreSQL 数据库。
apt install -y postgresql postgresql-contrib
现在使用 vim 编辑 pg_hba.conf 文件以配置本地用户身份验证。
vim /etc/postgresql/9.5/main/pg_hba.conf
使用 md5 更改所有本地用户身份验证,如下所示。
local all all md5

保存并退出。现在,重新启动 PostgreSQL 服务并使其在系统启动时自动启动。
systemctl restart postgresql
systemctl enable postgresql
接下来,我们需要为 Askbot 安装创建一个新的数据库和用户。对于我们的案例,我们将使用用户名 hakaselabs 和密码 hakase123 创建一个新的数据库 askbotdb。
以 postgres 用户身份登录并访问 PostgreSQL shell psql。
su - postgres
psql
使用您自己的密码更改 postgres 用户密码。
\password postgres
并使用以下查询创建新数据库 askbotdb 和密码为 hakase123 的新用户 hakaselabs。
create database askbotdb;
create user hakaselabs with password 'hakase123';
grant all privileges on database askbotdb to hakaselabs;
\q

已创建用于 Askbot 安装的新 PostgreSQL 数据库。
第 3 步 - 安装和配置 Askbot Django 应用程序
安装 Askbot 所需的所有软件包均已安装,并且已创建 PostgreSQL 数据库。现在,下一步是安装和配置 Askbot。
我们需要为 Askbot 安装创建一个新用户,因为我们不会为此使用 root 用户。创建一个名为 askbot 的新用户并为该用户指定一个新密码。
useradd -m -s /bin/bash askbot
passwd askbot
接下来,使用以下 usermod 命令将 askbot 用户添加到 sudo 组。
usermod -a -G sudo askbot

已创建新用户。现在我们需要更新 python-pip 并安装 virtualenv 包。使用以下 pip 命令安装这些包。
pip install --upgrade pip
pip install virtualenv

现在,使用 su 命令以 askbot 用户身份登录,然后安装 Askbot。
su - askbot
我们想为我们的 askbot 安装创建一个新的虚拟环境。使用 virtualenv 命令创建一个新的虚拟环境。
virtualenv hakase-labs
转到 hakase-labs 目录并激活 virtualenv。
cd hakase-labs/
source bin/activate

使用 pip 安装 Askbot Django 应用程序,包括用于 PostgreSQL 数据库连接的 psycopg2。
pip install askbot psycopg2
安装完成后,您将看到如下所示的结果。

接下来,为 Askbot Django 应用程序创建一个新目录 - 我们将使用名称 myapp。创建目录并在其中安装 Askbot。
mkdir myapp/
cd myapp
使用以下命令安装 Askbot。
askbot-setup
当系统询问 Askbot 安装目录时,只需提供单个 .然后按 Enter。同样,对于数据库配置,通过选择数字 1 选择 PostgreSQL。输入数据库名称 askbotdb,用户名 hakaselabs 和密码 hakase123。

现在,使用以下命令生成静态文件目录。
python manage.py collectstatic
输入 yes 并按 Enter 键继续。

使用 syncdb 选项生成 PostgreSQL 数据库。
python manage.py syncdb
系统将询问您是否创建管理员用户 - 输入是,然后输入您的管理员用户、电子邮件和密码。

Askbot现在安装在askbot用户虚拟环境下的系统上。您可以通过运行下面的 runserver 命令来测试 Askbot 安装。
python manage.py runserver 0.0.0.0:8080
打开您的网络浏览器并输入端口为 8080 的服务器 IP,您将看到 Askbot 页面,如下所示。

第 4 步 - 安装和配置 uWSGI
uWSGI 支持基于 Python、Perl 和 Ruby 的应用程序。在本教程中,我们将使用 uWSGI 和 Nginx 网络服务器来安装 Askbot。使用以下 pip 命令安装 uWSGI。
sudo pip install uwsgi
现在为 uWSGI 站点配置创建一个新目录 /etc/uwsgi/sites。
mkdir -p /etc/uwsgi/sites
/etc/uwsgi/sites
将新的 uWSGI 配置文件 askbot.ini 添加到 sites 目录并使用 vim 编辑它。
vim askbot.ini
在那里,粘贴以下 uWSGI 配置。
[uwsgi]
# Project directory, Python directory
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 will running under the sock file
socket = /home/askbot/hakase-labs/myapp/askbot.sock
chmod-socket = 664
uid = askbot
gid = www-data
vacuum = true
# uWSGI Log file
logto = /var/log/uwsgi.log
就是这样。保存并退出。

接下来,我们需要为 uWSGI 创建一个新的服务文件。转到 /etc/systemd/system/ 目录并使用 vim 创建一个新的 uwsgi.service 文件。
cd /etc/systemd/system/
vim uwsgi.service
将以下 uWSGI 服务配置粘贴到那里。
[Unit]
Description=uWSGI Emperor service
[Service]
ExecStartPre=/bin/bash -c 'mkdir -p /run/uwsgi; chown askbot:www-data /run/uwsgi'
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all
[Install]
WantedBy=multi-user.target
保存并退出。然后,重新加载 systemd 服务。
systemctl daemon-reload
现在,启动 uWSGI 服务并让它在系统启动时自动启动。
systemctl start uwsgi
systemctl enable uwsgi

uWSGI 已经为我们的 Askbot 应用程序安装和配置,并且它作为系统服务运行。
第 5 步 - 安装和配置 Nginx
Askbot 现已安装,并在 uWSGI sock 文件 askbot.sock 下运行。在这一步中,我们将使用 Nginx 网络服务器作为 uWSGI 应用程序 Askbot 的反向代理。
使用以下 apt 命令从存储库安装 Nginx。
apt install nginx
安装完成后,进入nginx配置目录/etc/nginx/,添加新的nginx虚拟主机文件askbot.conf。
cd /etc/nginx
vim sites-available/askbot
粘贴以下 askbot nginx 虚拟主机配置。
server {
listen 80;
server_name askbot.me www.askbot.me;
location / {
include uwsgi_params;
uwsgi_pass unix:/home/askbot/hakase-labs/myapp/askbot.sock;
}
}
保存并退出。
现在通过为 askbot 文件创建一个指向 sites-enabled 目录的符号链接来启用 Askbot 虚拟主机文件并测试 nginx 配置。
ln -s /etc/nginx/sites-available/askbot /etc/nginx/sites-enabled/
nginx -t

Askbot 虚拟主机已启用。现在重新启动 nginx 服务并使其在系统启动时自动启动。
systemctl restart nginx
systemctl enable nginx
Nginx配置完成,运行在80端口,使用netstat命令查看,如下图。
netstat -plntu
现在通过使用以下 netstat 命令检查 uWSGI sock 文件来检查 askbot。
netstat -pl | grep askbot

已为 Askbot Python Django 应用程序安装和配置 Nginx Web 服务器。
第 6 步 - 测试
打开您的网络浏览器并访问 Askbot 域名:askbot.me,您应该会看到如下所示的主页。

Askbot 用户登录。

Askbot 用户仪表板。

询问机器人设置。

Askbot Django 管理员登录。

Askbot Django 管理仪表板。

问答系统应用 Askbot 已在 Ubuntu 16.04 服务器上安装了 uWSGI 和 Nginx Web 服务器。