Как установить Askbot с Nginx и защитить с помощью Lets Encrypt на CentOS 8
На этой странице
- Предпосылки
- Установите необходимые зависимости
- Установка и настройка PostgreSQL
- Установка и настройка Askbot
- Установка и настройка uWSGI
- Создание служебного файла Systemd для uWSGI.
- Установка и настройка Nginx
- Защитите Askbot с помощью Lets Encrypt SSL
- Настройка брандмауэра и SELinux
- Доступ к Askbot
- Заключение
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.