Askbot es un software de código abierto para crear un foro de preguntas y respuestas basado en Python Django Framework. Es similar a otros sistemas de preguntas y respuestas como StackOverflow y Yahoo Answers. La herramienta ha sido utilizada por grandes proyectos de software de código abierto como Fedora y LibreOffice. Askbot fue creado por Mike Chan y Sailing Cai en 2009 y es fácil de instalar y configurar en sistemas Linux como Ubuntu y CentOS.
En este tutorial, le mostraremos cómo instalar la aplicación Askbot Django paso a paso usando uWSGI y el servidor web Nginx, y usaremos Ubuntu 16.04 Xenial Xerus como nuestro sistema operativo principal.
Qué haremos:
- Instalar dependencias
- Instalar y configurar la base de datos PostgreSQL
- Instalar y configurar Askbot
- Instalar y configurar uWSGI
- Instalar y configurar Nginx
- Pruebas
Requisitos
- Ubuntu 16.04
- Privilegios de raíz
Paso 1 - Instalar dependencias
El primer paso que debemos hacer es instalar los paquetes necesarios para la instalación de Askbot. Así que empecemos. Conéctese a su servidor Ubuntu mediante SSH.
ssh [email protected]
A continuación, instale paquetes como python-dev, pip, etc. con el siguiente comando apt.
apt install -y build-essential python-pip python-dev python-flup libpng12-dev zlib1g-dev libpng-dev libjpeg-dev python-setuptools
Todos los paquetes requeridos han sido instalados.
Paso 2:instalar y configurar la base de datos PostgreSQL
Askbot ofrece soporte para muchos sistemas de bases de datos como MySQL, SQLite y PostreSQL. En este tutorial, usaremos PostgreSQL como nuestro sistema de base de datos.
Instalaremos PostgreSQL, configuraremos la autenticación para el usuario local y luego crearemos una nueva base de datos y un nuevo usuario para la instalación de Askbot.
Instale la base de datos PostgreSQL usando el siguiente comando apt.
apt install -y postgresql postgresql-contrib
Ahora edite el pg_hba.conf archivo con vim para configurar la autenticación de usuario local.
vim /etc/postgresql/9.5/main/pg_hba.conf
Cambie toda la autenticación de usuario local usando md5 como se muestra a continuación.
local all all md5
Guardar y Salir. Ahora, reinicie los servicios de PostgreSQL y habilítelos para que se inicien automáticamente al arrancar el sistema.
systemctl restart postgresql
systemctl enable postgresql
A continuación, debemos crear una nueva base de datos y un nuevo usuario para la instalación de Askbot. Para nuestro caso, crearemos una nueva base de datos 'askbotdb ' con nombre de usuario 'hakaselabs ' y contraseña 'hakase123 '.
Inicie sesión como postgres usuario y acceda al shell de PostgreSQL 'psql'.
su - postgres
psql
Cambiar el postgres contraseña de usuario con su propia contraseña.
\password postgres
Y cree una nueva base de datos 'askbotdb ' y un nuevo usuario 'hakaselabs ' con contraseña 'hakase123 ' usando las siguientes consultas.
create database askbotdb;
create user hakaselabs with password 'hakase123';
grant all privileges on database askbotdb to hakaselabs;
\q
Se ha creado una nueva base de datos PostgreSQL para la instalación de Askbot.
Paso 3:instalar y configurar la aplicación Askbot Django
Se han instalado todos los paquetes necesarios para la instalación de Askbot y se ha creado la base de datos PostgreSQL. Ahora, el siguiente paso es instalar y configurar Askbot.
Necesitamos crear un nuevo usuario para la instalación de Askbot, ya que no usaremos el usuario root para ello. Cree un nuevo usuario llamado 'askbot ' y dale a ese usuario una nueva contraseña.
useradd -m -s /bin/bash askbot
passwd askbot
A continuación, agregue el askbot usuario al grupo sudo usando el siguiente comando usermod.
usermod -a -G sudo askbot
Se ha creado un nuevo usuario. Ahora necesitamos actualizar python-pip e instalar el paquete virtualenv. Instale estos paquetes usando los siguientes comandos pip.
pip install --upgrade pip
pip install virtualenv
Ahora, inicie sesión como el usuario 'askbot' con el comando su y luego instale Askbot.
su - askbot
Y queremos crear un nuevo entorno virtual para nuestra instalación de askbot. Cree un nuevo entorno virtual con el comando virtualenv.
virtualenv hakase-labs
Ir a los hakase-labs directorio y active el virtualenv.
cd hakase-labs/
source bin/activate
Instale la aplicación Askbot Django con pip, incluido psycopg2 para la conexión a la base de datos PostgreSQL.
pip install askbot psycopg2
Una vez completada la instalación, verá el resultado como se muestra a continuación.
A continuación, cree un nuevo directorio para la aplicación Askbot Django:usaremos el nombre 'myapp'. Cree el directorio e instale Askbot en él.
mkdir myapp/
cd myapp
Instale Askbot con el siguiente comando.
askbot-setup
Cuando se le pregunte sobre el directorio de instalación de Askbot, simplemente proporcione el único '. ' y presione 'Entrar'. De manera similar, para la configuración de la base de datos, elija PostgreSQL eligiendo el número '1 '. Ingrese el nombre de la base de datos 'askbotdb ', nombre de usuario 'hakaselabs ' con contraseña 'hakase123 '.
Ahora, genera un directorio de archivos estáticos con el siguiente comando.
python manage.py collectstatic
Escribe 'sí' y presiona Enter para continuar.
Genere la base de datos PostgreSQL con la opción syncdb.
python manage.py syncdb
Y se le preguntará acerca de la creación del usuario administrador:escriba 'sí' y luego escriba su usuario administrador, correo electrónico y contraseña.
Askbot ahora está instalado en el sistema bajo el entorno virtual de usuario 'askbot'. Puede probar la instalación de Askbot ejecutando el siguiente comando runserver.
python manage.py runserver 0.0.0.0:8080
Abra su navegador web y escriba la IP del servidor con el puerto 8080, y verá la página 'Askbot', como se muestra a continuación.
Paso 4:instalar y configurar uWSGI
uWSGI admite aplicaciones basadas en Python, Perl y Ruby. En este tutorial, usaremos uWSGI con el servidor web Nginx para nuestra instalación de Askbot. Instale uWSGI con el siguiente comando pip.
sudo pip install uwsgi
Ahora cree un nuevo directorio para la configuración del sitio uWSGI '/etc/uwsgi/sites'.
mkdir -p /etc/uwsgi/sites
/etc/uwsgi/sites
Agregue el nuevo archivo de configuración de uWSGI 'askbot.ini' al directorio 'sites' y edítelo con vim.
vim askbot.ini
Allí, pegue la siguiente configuración de 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
Eso es todo. Guardar y salir.
A continuación, debemos crear un nuevo archivo de servicio para uWSGI. Vaya al directorio '/etc/systemd/system/' y cree un nuevo archivo uwsgi.service usando vim.
cd /etc/systemd/system/
vim uwsgi.service
Pegue la siguiente configuración del servicio uWSGI allí.
[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
Guardar y Salir. Luego, vuelva a cargar los servicios de systemd.
systemctl daemon-reload
Ahora, inicie el servicio uWSGI y habilítelo para que se inicie automáticamente al arrancar el sistema.
systemctl start uwsgi
systemctl enable uwsgi
uWSGI se instaló y configuró para nuestra aplicación Askbot y se está ejecutando como un servicio del sistema.
Paso 5:instalar y configurar Nginx
Askbot ahora está instalado y se ejecuta bajo el archivo sock de uWSGI 'askbot.sock'. En este paso, utilizaremos el servidor web Nginx como proxy inverso para la aplicación uWSGI Askbot.
Instale Nginx desde el repositorio usando el siguiente comando apt.
apt install nginx
Una vez completada la instalación, vaya al directorio de configuración de nginx '/etc/nginx/' y agregue un nuevo archivo de host virtual nginx 'askbot'.
cd /etc/nginx
vim sites-available/askbot
Pegue la siguiente configuración de host virtual 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;
}
}
Guardar y salir.
Ahora habilite el archivo de host virtual de Askbot creando un enlace simbólico para el archivo 'askbot' en el directorio 'habilitado para sitios' y pruebe la configuración de nginx.
ln -s /etc/nginx/sites-available/askbot /etc/nginx/sites-enabled/
nginx -t
El host virtual de Askbot está habilitado. Ahora reinicie los servicios nginx y permita que se inicien automáticamente al iniciar el sistema.
systemctl restart nginx
systemctl enable nginx
La configuración de Nginx se ha completado y se está ejecutando en el puerto 80. Verifíquelo con el comando netstat, como se muestra a continuación.
netstat -plntu
Ahora verifique askbot revisando el archivo sock de uWSGI usando el siguiente comando netstat.
netstat -pl | grep askbot
El servidor web Nginx se instaló y configuró para la aplicación Askbot Python Django.
Paso 6 - Prueba
Abra su navegador web y visite el nombre de dominio de Askbot:askbot.me, y debería obtener la página de inicio como se muestra a continuación.
Inicio de sesión de usuario de Askbot.
Panel de usuario de Askbot.
Configuración de Askbot.
Inicio de sesión de administrador de Askbot Django.
Panel de administración de Askbot Django.
La aplicación del sistema de preguntas y respuestas 'Askbot' se instaló con el servidor web uWSGI y Nginx en el servidor Ubuntu 16.04.