如何在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作为我们的主要操作系统。
我们将要做什么:
- 安装依赖关系
- 安装和配置PostgreSQL数据库
- 安装并配置Askbot
- 安装并配置uWSGI
- 安装并配置Nginx
- 测试
先决条件
- 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网络服务器。