Поиск по сайту:

Как установить Askbot с Nginx и защитить с помощью Lets Encrypt на CentOS 8


На этой странице

  1. Предпосылки
  2. Установите необходимые зависимости
  3. Установка и настройка PostgreSQL
  4. Установка и настройка Askbot
  5. Установка и настройка uWSGI
  6. Создание служебного файла Systemd для uWSGI.
  7. Установка и настройка Nginx
  8. Защитите Askbot с помощью Lets Encrypt SSL
  9. Настройка брандмауэра и SELinux
  10. Доступ к Askbot
  11. Заключение

Askbot — это бесплатное программное обеспечение для форума вопросов и ответов с широкими возможностями настройки и открытым исходным кодом, написанное на Python и Django. Это простое, легкое и очень похожее на другое программное обеспечение для форумов StackOverflow и YahooAnswers. Askbot предоставляет массу функций, включая теги и категории, уведомления по электронной почте, систему на основе кармы, голосование, модерацию контента и многое другое.

В этом руководстве мы покажем вам, как установить программное обеспечение форума Askbot на CentOS 8 с помощью Lets Encrypt SSL.

Предпосылки

  • Сервер под управлением CentOS 8.
  • На вашем сервере установлен пароль root.

Установите необходимые зависимости

Перед запуском вам нужно будет установить некоторые необходимые зависимости в вашей системе.

Сначала установите «Инструменты разработки» с помощью следующей команды:

dnf group install 'Development Tools'

Затем установите репозиторий EPEL и другие зависимости Python с помощью следующей команды:

dnf install epel-release -y
dnf install python2-pip python2-devel python2-six -y

После установки всех необходимых пакетов можно переходить к следующему шагу.

Установите и настройте PostgreSQL.

Askbot использует PostgreSQL для хранения своих данных. Так что вам нужно будет установить его в вашей системе. Вы можете установить его с помощью следующей команды:

dnf install postgresql-server postgresql-devel postgresql-contrib -y

После установки инициализируйте базу данных с помощью следующей команды:

postgresql-setup initdb

Вы должны получить следующий результат:

WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

Затем запустите службу PostgreSQL и включите ее запуск после перезагрузки системы с помощью следующей команды:

systemctl start postgresql
systemctl enable postgresql

Затем войдите в оболочку PostgreSQL с помощью следующей команды:

su - postgres
[ ~]$ psql

Вывод:

psql (10.6)
Type "help" for help.
postgres=# 

Затем создайте базу данных и пользователя для Askbot с помощью следующей команды:

postgres=# create database askbot;
postgres=# create user askbot with password 'password';

Затем предоставьте все привилегии аскботу с помощью следующей команды:

postgres=# grant all privileges on database askbot to askbot;

Наконец, выйдите из оболочки PostgreSQL с помощью следующей команды:

postgres=# \q

Далее вам нужно будет настроить локальную аутентификацию пользователей для PostgreSQL. Вы можете сделать это, отредактировав файл pg_hba.conf:

nano /var/lib/pgsql/data/pg_hba.conf

Замените peer на md5 в следующих строках:

local   all             all                                    md5  
host    all             all             127.0.0.1/32           md5  
host    all             all             ::1/128                md5  

Сохраните и закройте файл, когда закончите. Затем перезапустите службу PostgreSQL, чтобы применить изменения:

systemctl restart postgresql

Установите и настройте Аскбот

Перед установкой Askbot вам нужно будет создать пользователя для Askbot. Вы можете создать нового пользователя Askbot и установить пароль с помощью следующей команды:

useradd -m -s /bin/bash askbot
passwd askbot

Затем добавьте пользователя Askbot в группу wheel для доступа к команде sudo:

usermod -a -G wheel askbot

Затем установите пакет python virtualenv с помощью следующей команды:

pip2 install virtualenv six

После установки измените пользователя на askbot и создайте новую виртуальную среду для Askbot с помощью следующей команды:

su - askbot
virtualenv askbot

Вы должны увидеть следующий вывод:

created virtual environment CPython2.7.16.final.0-64 in 663ms
  creator CPython2Posix(dest=/home/askbot/askbot, clear=False, global=False)
  seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/tmp/tmp9YFr7B/seed-app-data/v1)
  activators PythonActivator,CShellActivator,FishActivator,PowerShellActivator,BashActivator

Затем измените каталог на askbot и активируйте виртуальную среду с помощью следующей команды:

cd askbot
source bin/activate

Вывод:

(askbot) [ askbot]$

Затем установите Askbot и другие необходимые зависимости с помощью следующей команды:

pip2 install six==1.10.0
pip2 install askbot psycopg2

Затем создайте новый каталог для своего приложения, измените каталог на свое приложение и настройте Askbot с помощью следующей команды:

mkdir myapp
cd myapp
askbot-setup

Вы должны увидеть следующий вывод:

Deploying Askbot - Django Q&A forum application
Problems installing? -> please email 

To CANCEL - hit Ctr-C at any time

Enter directory path (absolute or relative) to deploy
askbot. To choose current directory - enter "."
> .

Введите \.\ и нажмите Enter, чтобы продолжить. Вы должны увидеть следующий вывод:

Please select database engine:
1 - for postgresql, 2 - for sqlite, 3 - for mysql, 4 - oracle
type 1/2/3/4: 1

Введите 1, чтобы выбрать механизм базы данных postgresql, и нажмите Enter, чтобы продолжить. Вы должны увидеть следующий вывод:

Please enter database name (required)
> askbot

Please enter database user (required)
> askbot

Please enter database password (required)
> password

Укажите данные базы данных Askbot и нажмите Enter. После завершения установки вы должны увидеть следующий вывод:

Copying files: 
* __init__.py 
* manage.py 
* urls.py 
* django.wsgi 
Creating settings file
settings file created

copying directories:  * doc
* cron
* upfiles

Done. Please find further instructions at http://askbot.org/doc/

Затем сгенерируйте статические файлы и базу данных Askbot Django с помощью следующей команды:

python manage.py collectstatic
python manage.py syncdb

Укажите желаемое имя пользователя администратора, адрес электронной почты и пароль, как показано ниже:

You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'askbot'): askbotadmin
Email address: 
Password: 
Password (again): 
Superuser created successfully.

Установите и настройте uWSGI

Далее вам нужно будет установить uWSGI в вашу систему. uWSGI — это программный инструмент, используемый для запуска веб-приложений на основе Python. Вы можете установить его с помощью следующей команды:

pip2 install uwsgi

После установки uWSGI создайте новый каталог для uWSGI с помощью следующей команды:

mkdir -p /etc/uwsgi/sites

Затем создайте новый файл конфигурации uWSGI, как показано ниже:

nano /etc/uwsgi/sites/askbot.ini

Добавьте следующие строки:

[uwsgi]

chdir = /home/askbot/askbot/myapp
home = /home/askbot/askbot
static-map = /m=/home/askbot/askbot/myapp/static
wsgi-file = /home/askbot/askbot/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
ogto = /var/log/uwsgi.log

Создайте служебный файл Systemd для uWSGI

Далее вам нужно будет создать файл службы systemd для управления службой uWSGI. Вы можете создать его с помощью следующей команды:

nano /etc/systemd/system/uwsgi.service

Добавьте следующие строки:

[Unit]
Description=uWSGI 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 с помощью следующей команды:

systemctl daemon-reload

Установить и настроить Nginx

Далее вам нужно будет установить и настроить Nginx для обслуживания вашего приложения Askbot.

Сначала установите веб-сервер Nginx с помощью следующей команды:

dnf install nginx -y

После установки создайте новый файл конфигурации виртуального хоста для Askbot:

nano /etc/nginx/conf.d/askbot.conf

Добавьте следующие строки:

server {
         listen 80;
         server_name askbot.linuxbuz.com;
         location / {
         include         uwsgi_params;
         uwsgi_pass	 unix:/run/uwsgi/askbot.sock;
    }
 }

Сохраните и закройте файл. Затем запустите службы Nginx и uWSGI и включите их после перезагрузки системы с помощью следующей команды:

systemctl start nginx
systemctl enable nginx
systemctl start uwsgi
systemctl enable uwsgi

Безопасный Askbot с Lets Encrypt SSL

Затем вам нужно будет установить утилиту Certbot в вашей системе, чтобы загрузить и установить Lets Encrypt SSL для домена Askbot.

Вы можете установить клиент Certbot с помощью следующей команды:

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Затем получите и установите SSL-сертификат для своего домена Askbot с помощью следующей команды:

certbot-auto --nginx -d askbot.linuxbuz.com

Приведенная выше команда сначала установит все необходимые зависимости на ваш сервер. После установки вам будет предложено указать адрес электронной почты и принять условия обслуживания, как показано ниже:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for askbot.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/askbot.conf

Затем выберите, следует ли перенаправлять HTTP-трафик на HTTPS, как показано ниже:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Введите 2 и нажмите Enter, чтобы продолжить. После завершения установки вы должны увидеть следующий вывод:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/askbot.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://askbot.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=askbot.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/askbot.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/askbot.linuxbuz.com/privkey.pem
   Your cert will expire on 2020-06-11. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Настройте брандмауэр и SELinux

Затем вам нужно будет создать правило брандмауэра, чтобы разрешить службы HTTP и HTTPS из внешних сетей. Вы можете разрешить это с помощью следующей команды:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

По умолчанию SELinux включен в CentOS 8. Рекомендуется отключить его для корректной работы Askbot. Вы можете отключить его, отредактировав файл /etc/selinux/config:

nano /etc/selinux/config

Найдите следующую строку:

SELINUX=enforcing

И замените его следующей строкой:

SELINUX=disabled

Сохраните и закройте файл. Затем перезагрузите систему, чтобы применить изменения:

Доступ к Аскботу

Теперь откройте веб-браузер и введите URL-адрес https://askbot.linuxbuz.com. Вы будете перенаправлены на следующий экран:

Нажмите на кнопку входа. Вы должны увидеть страницу входа в Askbot на следующем экране:

Укажите имя пользователя и пароль администратора Askbot и нажмите кнопку «Войти». Вы должны увидеть панель инструментов Askbot на следующем экране:

Заключение

Поздравляем! вы успешно установили и настроили форум Askbot на CentOS 8 и защитили его с помощью Lets Encrypt SSL. Теперь вы можете начать создавать вопросы и ответы с помощью Askbot.