Askbot是一个基于Python Django框架创建问答论坛的开源软件。它基本上是一个问答系统,如StackOverflow、Yahoo Answers等。由Mike Chan和Sailing Cai于2009年创建,在Ubuntu和CentOS等Linux系统上易于安装和配置。许多大型开源软件项目,如Fedora和LibreOffice,都在使用它。
在本教程中,我们将向您展示如何在CentOS 7系统上使用uWSGI和Nginx web服务器安装Askbot Python Django应用程序。至于数据库,我们将使用PostgreSQL进行Askbot安装。
准备做什么
安装依赖项
安装并配置PostgreSQL
安装并配置Askbot
安装并配置uWSGI
安装并配置Nginx Web服务器
测试设置
条件
CentOS 7服务器
Root权限
步骤1-安装依赖项
在此步骤中,我们将安装一些成功安装Askbot所需的软件包。这些工具包括“开发工具”、Epel存储库和一些与python相关的工具(用于管理python包)。那么,让我们开始吧。
首先,使用下面的yum group命令安装CentOS的“开发工具”。
yum group install 'Development Tools'
然后安装Epel存储库。
yum -y install epel-release
最后安装python包,包括python pip、python devel和python six。
yum -y install python-pip python-devel python-six
![图片[1]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742808808935.png)
步骤2-安装和配置PostgreSQL
现在我们需要PostgreSQL数据库,它可以在CentOS存储库中找到。在本节中,我们将讨论如何安装PostgreSQL数据库,更改postgres密码用户,为Askbot安装创建新的用户和数据库,最后更改postgress身份验证配置。
因此,让我们从使用下面的yum命令从存储库安装PostgreSQL开始。
yum -y install postgresql-server postgresql-devel postgresql-contrib
安装完成后,我们需要初始化数据库,您可以使用下面的命令进行初始化。
postgresql-setup initdb
继续,启动postgres并使其在启动时自动启动。
systemctl start postgresql
systemctl enable postgresql
此时,应该安装PostgreSQL数据库。接下来,我们需要重置postgres用户密码。为此,首先以“postgres”用户身份登录并访问psql命令行工具。
su - postgres
psql
然后给postgres用户一个新密码。
\password postgres
现在,为Askbot创建一个新的数据库和用户。例如,我们想创建一个新用户“hakaselabs”,密码为“hakase123”,数据库名为“askbotdb”。以下postgres查询将帮助我们创建所有这些。
create database askbotdb;
create user hakaselabs with password 'hakase123';
grant all privileges on database askbotdb to hakaselabs;
现在,已经创建了Askbot安装的数据库和用户。下一步是编辑用于身份验证设置的postgres配置,您可以通过转到“pgsql/data”目录并使用vim编辑“pg_hba.conf”文件来完成。
cd /var/lib/pgsql/data/
vim pg_hba.conf
进入文件后,将所有身份验证更改为md5,如下所示。
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
现在,保存并退出该文件,然后重新启动postgres服务。
systemctl restart postgresql
至此,PostgreSQL数据库已经安装完毕;Askbot安装的数据库已经创建;postgres用户身份验证方法已更改为md5。
步骤3-安装和配置Askbot
在这一步中,我们将讨论Askbot的安装和配置。我们将在名为“Askbot”的用户下安装Askbot,并使用virtualenv python。那么,让我们开始吧。
首先,创建一个新用户“askbot”,并给用户一个新密码。
useradd -m -s /bin/bash askbot
passwd askbot
然后将“askbot”用户添加到“wheel”组以访问sudo命令(不确定“sudo”是什么?在此处了解更多信息)。
usermod -a -G wheel askbot
![图片[2]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809062328.png)
现在将pip升级到最新版本并安装python-virtualenv包。
pip install --upgrade pip
pip install virtualenv six
![图片[3]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809086902.png)
下一个。以askbot用户身份登录,使用virtualenv创建新的python虚拟环境hakaselabs。
su - askbot
virtualenv hakase-labs/
转到“hakase-labs”目录并激活Askbot安装的虚拟环境。
cd hakase-labs/
source bin/activate
现在,在“hakase-labs”虚拟环境中使用pip命令安装askbot和其他python包。
pip install six
pip install askbot psycopg2
![图片[4]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809142241.png)
接下来,为“Askbot”项目创建一个新目录。请确保您没有使用“askbot”作为目录名。例如,在我们的例子中,我们创建了一个名为“myapp”的新目录
mkdir myapp/
转到myapp目录并运行“askbot setup”命令。
cd myapp/
askbot-setup
“askbot setup”命令将询问您某些问题。例如,系统会询问您部署Askbot的目录路径,您可以键入“”然后按Enter键继续。同样,当被问及数据库引擎时,键入“1”以使用postgresql并按Enter键。有关数据库的详细信息,请输入数据库名称为“askbotdb”,数据库用户为“hakaselabs”,密码为“hagase123”。
![图片[5]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809186970.png)
因此,Askbot现在安装在“myapp”目录中。现在我们需要生成Askbot Django静态文件和数据库。
运行以下命令生成Askbot Django静态文件。
python manage.py collectstatic
当系统要求确认时,键入“yes”并按Enter键。
![图片[6]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809215219.png)
现在,要生成数据库,请按如下方式运行syncdb。
python manage.py syncdb
系统将询问您如何创建管理员用户和密码。因此,当被询问时,键入用户名、电子邮件和密码进行管理员配置。
![图片[7]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809256736.png)
至此,Askbot已安装,静态文件已生成,数据库配置已完成。
您可以使用下面的runserver命令测试Askbot安装。
python manage.py runserver 0.0.0.0:8080
打开Web浏览器并键入服务器IP地址,您应该会看到类似以下内容的页面:
![图片[8]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809291132.png)
步骤4-安装和配置uWSGI
我们将使用uWSGI作为Askbot Django项目的服务。具体来说,我们将使用uWSGI和Nginx web服务器进行Askbot安装。那么,让我们开始吧。
首先,使用pip命令安装uWSGI,如下所示。
sudo pip install uwsgi
安装完成后,为uWSGI虚拟主机文件创建一个新目录。例如,在我们的例子中,我们创建了“/etc/uwsgi/sites”。
mkdir -p /etc/uwsgi/sites
转到新创建的目录,使用vim创建新的askbot uWSGI配置。
cd /etc/uwsgi/sites
vim askbot.ini
将以下配置粘贴到文件中。
[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 = /run/uwsgi/askbot.sock
chmod-socket = 664
uid = askbot
gid = nginx
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:nginx /run/uwsgi'
ExecStart=/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all
[Install]
WantedBy=multi-user.target
保存并退出。
现在,重新加载systemd服务并启用uWSGI在启动时自动启动。
systemctl daemon-reload
systemctl enable uwsgi
![图片[9]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809470034.png)
因此,uWSGI已经安装,您应该看到它作为服务运行。
步骤5-安装并配置Nginx Web服务器
因此,Askbot现在已安装,并在uWSGI sock文件“Askbot.sock”下运行。在这一步中,我们将使用Nginx web服务器作为uWSGI应用程序“Askbot”的反向代理。
首先,使用yum命令安装Nginx。
yum -y install nginx
现在转到Nginx的conf.d目录,使用vim编辑器创建新的虚拟主机文件askbot.conf。
cd /etc/nginx/conf.d/
vim askbot.conf
![图片[10]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809517188.png)
将以下Askbot Nginx配置粘贴到文件中。
server {
listen 80;
server_name askbot.me www.askbot.me;
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/askbot.sock;
}
}
保存文件并退出编辑器。现在,测试配置以确保没有错误。
nginx -t
接下来,启动Nginx和uWSGI服务。
systemctl start nginx
systemctl start uwsgi
并使它们在启动时自动启动。
systemctl enable nginx
systemctl enable uwsgi
![图片[11]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809587560.png)
因此,Nginx现在被安装为uWSGI应用程序“Askbot”的反向代理。
步骤6-测试设置
打开您的网络浏览器,访问Askbot域名:Askbot.me,您将看到主页,如下所示。
![图片[12]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809613761.png)
这是Askbot用户登录页面:
![图片[13]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809629272.png)
Askbot用户仪表板:
![图片[14]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809645347.png)
Askbot管理员设置:
![图片[15]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809657996.png)
Askbot Django管理员登录:
![图片[16]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809671566.png)
Askbot Django管理仪表板:
![图片[17]_如何在CentOS 7上使用Nginx安装和配置Askbot_马特资源网](http://www.iamlz.com/wp-content/uploads/2025/03/1742809684284.png)
因此,问答系统应用程序“Askbot”已成功安装在CentOS 7服务器上的uWSGI和Nginx web服务器上。
暂无评论内容