如何在Ubuntu 16.04上安装和配置Askbot

在本教程中,我们将向您展示如何使用uWSGI和Nginx Web服务器一步一步安装Askbot Django App,我们将使用Ubuntu 16.04 X ...

如何在Ubuntu 16.04上安装和配置Askbot

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作为我们的主要操作系统。

我们将要做什么:

  1. 安装依赖关系
  2. 安装和配置PostgreSQL数据库
  3. 安装并配置Askbot
  4. 安装并配置uWSGI
  5. 安装并配置Nginx
  6. 测试

先决条件

  • Ubuntu 16.04
  • 根特权

第1步 - 安装依赖关系

我们必须做的第一步是安装Askbot安装所需的软件包。 那么我们开始吧。 使用SSH连接到您的Ubuntu服务器。

ssh root@AskbotServerIP

接下来,用下面的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 '和一个新用户' hakaselabs ',密码为' hakase123 '。

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

你将被问到关于创建管理员用户 - 输入'yes',然后键入你的管理员用户,电子邮件和密码。

Askbot现在安装在“askbot”用户虚拟环境下的系统上。 您可以通过运行下面的runserver命令来测试Askbot安装。

python manage.py runserver 0.0.0.0:8080

打开你的网络浏览器,输入端口8080的服务器IP,你将会看到'Askbot'页面,如下所示。

第4步 - 安装和配置uWSGI

uWSGI支持基于Python,Perl和Ruby的应用程序。 在本教程中,我们将使用带有Nginx Web服务器的uWSGI来安装我们的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 Web服务器作为uWSGI应用程序Askbot的反向代理。

使用以下apt命令从存储库安装Nginx。

apt install nginx

安装完成后,请进入nginx配置目录'/ etc / nginx /',并添加新的nginx虚拟主机文件'askbot'。

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设置。

Askbot Django管理员登录。

Askbot Django管理仪表板。

问答系统应用程序“Askbot”已经在Ubuntu 16.04服务器上安装了uWSGI和Nginx网络服务器。

参考

https://askbot.org/en/question/