MariaDB/Nginx/Gunicorn을 사용하여 CentOS8에 Wagtail 배포

Wagtail은 파이톤과 Django 웹 프레임워크를 기반으로 적극적으로 개발한 오픈소스 CMS다.이 자습서에서는 MariaDB, Nginx, Gunicorn을 사용하여 CentOS 8 서버에 Wagtail을 배치하는 방법에 대해 설명합니다.

개시하다
새로 설치된 CentOS 8에서 시작하여 서버가 최신형인지 확인합니다.
dnf update -y
# reboot the server to apply the updates if needed.
루트 sudo가 아닌 사용자를 만들지 않은 경우
useradd <username>
passwd <username> #enter new password
# add the user to the wheel group for sudo access.
usermod -aG wheel <username>
다음은 새로 만든 sudo 사용자 계정으로 Python 3.8을 설치합니다.
su <username>
sudo dnf module -y install python38
이제 Nginx와 MariaDB를 모두 설치해야 합니다.
sudo dnf install nginx mariadb-server git

환경 설정
프로젝트 코드를 관리하기 위해 Wagtail 사용자 계정을 만들고 싶습니다.
sudo groupadd --system wagtail
sudo useradd --system --gid wagtail --shell /bin/bash --home /opt/wagtail wagtail
sudo mkdir /opt/wagtail
sudo chown wagtail:wagtail /opt/wagtail
프로젝트를 GitHub 또는 GitLab에서 호스팅하는 경우 다음 명령을 사용하여 SSH 키를 만들 수 있습니다.
sudo su wagtail
ssh-keygen -t rsa -b 2048 -C "<your email address>"
Generating public/private rsa key pair.
Enter file in which to save the key (/opt/wagtail/.ssh/id_rsa): <enter>
Created directory '/opt/wagtail/.ssh'.
Enter passphrase (empty for no passphrase): <enter password and/or press enter>
Enter same passphrase again: <enter password and/or press enter>
Your identification has been saved in /opt/wagtail/.ssh/id_rsa.
Your public key has been saved in /opt/wagtail/.ssh/id_rsa.pub.
다음 명령을 실행하면 키를 얻을 수 있습니다.
cat /opt/wagtail/.ssh/id_rsa.pub

데이터베이스 구축
다른 일을 하기 전에MariaDB 서버를 시작하고 안내할 때MariaDB를 사용합니다.이 명령을 루트 사용자로 실행합니다.
systemctl start mariadb
systemctl enable mariadb
현재, 우리 자신에게 좋은, 안전한 기본 설정을 하기 위해 다음 명령을 실행합니다.
mysql_secure_installation
Enter current password for root (enter for none): <enter>
Set root password? [Y/n] n
Remove anonymous users? [Y/n] <enter>
Disallow root login remotely? [Y/n] <enter>
Remove test database and access to it? [Y/n] <enter>
Remove test database and access to it? [Y/n] <enter>
MariaDB에 로그인하고 데이터베이스와 사용자를 만듭니다.
mysql -u root -p
Enter password: <enter>
CREATE DATABASE wagtail CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'wagtaildb'@'localhost' IDENTIFIED BY '<db user password';
GRANT ALL PRIVILEGES ON wagtail.* to wagtaildb@localhost;
FLUSH PRIVILEGES;
exit

배포 프로젝트
다음 단계는 메모리 라이브러리에서 코드를 추출하는 것입니다.이 설명서는 GitHub 또는 GitLab을 사용하고 있는 것으로 가정하지만 원하는 항목을 자유롭게 사용하십시오.이 예에서, 나는 GitLab에 위탁 관리되는 Hello라는 빈 프로젝트를 사용했다.
이 지침을 엄격히 따르려면 루트 사용자로 로그인해야 합니다.
wagtail 사용자 홈 디렉터리에 Python 가상 환경을 만듭니다.
su - wagtail
python3.8 -m venv .venv
source .venv/bin/activate
setuptools 및 pip 업그레이드
pip install --upgrade setuptools pip
로그를 저장할 디렉터리를 만듭니다.
mkdir logs
git Repository 및 cd를 프로젝트 디렉토리로 복제합니다.
git clone https://gitlab.com/Skriptmonkey/hello.git
cd hello
종속 항목을 설치합니다.
pip install -r requirements.txt
데이터베이스를 마이그레이션합니다.
python manage.py migrate
마지막으로 당신의 정적 자산을 수집하세요.너의 정적 뿌리 변수는 기내에 있다.py 설정 파일은 Nginx가 쉽게 접근할 수 있는 위치로 설정해야 합니다./var/www/static 을 선택합니다.루트 사용자로 다음 명령을 실행합니다.
cd /opt/wagtail
source .venv/bin/activate
cd hello
python manage.py collectstatic --noinput
wagtail 사용자로 돌아가서 local.py이라는 설정 폴더에 새 설정 파일을 만듭니다.
su - wagtail
vim /opt/wagtail/hello/hello/settings/local.py
이 설정 파일에서 .base에서 가져오고 SECRET_KEY을 추가한 다음에 ALLOWED_HOSTS을 추가합니다.키를 생성하는 방법은 귀하에 달려 있습니다.나는 로컬 기기에서 '테스트' 항목을 만들고 그 중에서 SECRET_KEY을 얻는 것을 좋아한다.
from .base import *


SECRET_KEY = '<your secret key>' 

# SECURITY WARNING: define the correct hosts in production!
ALLOWED_HOSTS = ['exampleurl.com', 'www.exampleurl.com']


Gunicorn 구성
요청에 Gunicorn이 추가되지 않은 경우txt 파일은 프로젝트에 있을 것입니다.만약 그렇지 않다면, pip를 통해wagtail 사용자로 설치할 수 있습니다.
pip install gunicorn
Gunicorn을 위한 시작 파일을 만들어야 합니다.응용 서버를 시작해야 할 때마다 이 파일을 호출합니다.가장 좋아하는 텍스트 편집기를 마음대로 사용하십시오.
vim /opt/wagtail/gunicorn_start
새 파일에 붙여넣고 항목을 반영하도록 변수를 업데이트합니다.DJANGO 설정 모듈에 특히 주의하십시오. Wagtail은 기본적으로 DJANGO와 다른 약속을 사용합니다.
#!/bin/bash

NAME="hello"
DJANGODIR=/opt/wagtail/hello
USER=wagtail
GROUP=wagtail
WORKERS=3
BIND=unix:/opt/wagtail/run/gunicorn.sock
DJANGO_SETTINGS_MODULE=hello.settings.production
DJANGO_WSGI_MODULE=hello.wsgi
LOGLEVEL=error

cd $DJANGODIR
source /opt/wagtail/.venv/bin/activate

export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

exec /opt/wagtail/.venv/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
  --name $NAME \
  --workers $WORKERS \
  --user=$USER \
  --group=$GROUP \
  --bind=$BIND \
  --log-level=$LOGLEVEL \
  --log-file=-
파일을 실행 가능하게 만듭니다.
chmod +x ~/gunicorn_start
유닉스 플러그인 파일을 저장할 실행 디렉터리를 만듭니다.
mkdir ~/run
새 디렉토리에 대한 사용 권한을 설정합니다.
chmod 755 ~/run
이제 wagtail 사용자를 종료합니다. 그러면 시스템d gunicorn 서비스를 설정할 수 있습니다.
먼저 당신이 가장 좋아하는 편집기를 사용하여 시스템d 서비스 파일을 만듭니다.
sudo vim /etc/systemd/system/gunicorn.service
파일에 다음을 추가합니다.
[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=wagtail
Group=wagtail
WorkingDirectory=/opt/wagtail
ExecStart=/opt/wagtail/gunicorn_start

[Install]
WantedBy=multi-user.target
gunicorn 서비스를 시작하고 안내할 때 이 서비스를 사용합니다.
sudo systemctl start gunicorn
sudo systemctl enable gunicorn

Nginx 구성
Nginx 구성을 시작하기 전에 SELinux를 정리하겠습니다.SELinux 유틸리티를 설치해야 합니다.
sudo dnf install policycoreutils-python-utils -y
SELinux의 라이센스 도메인에 httpd_t을 추가했습니다.
sudo semanage permissive -a httpd_t
비록 우리는 일이 우리 서버에서 발생하는 것을 허락하지만, http와https가 서버 방화벽을 통과하는 것도 허용한다.
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
Nginx conf.d 디렉토리로 전환합니다.
cd /etc/nginx/conf.d/
다시, 가장 좋아하는 편집기를 사용하여 Nginx에 프로필을 만듭니다.
sudo vim wagtail.conf
파일에 다음을 추가합니다.
upstream app_server {
    server unix:/opt/wagtail/run/gunicorn.sock fail_timeout=0;
}

server {
    listen 80;
    #listen [::]:80; # <- Uncomment this if you also have AAAA DNS record for IPV6.
    server_name IP_ADDRESS_OR_DOMAIN_NAME;  # <- insert here the ip address/domain name

    keepalive_timeout 5;
    client_max_body_size 4G;

    access_log /opt/wagtail/logs/nginx-access.log;
    error_log /opt/wagtail/logs/nginx-error.log;

    location /static/ {
        autoindex on;
        alias /opt/wagtail/hello/static/;
    }

    location /media/ {
        alias /opt/wagtail/hello/media/;
    }

    location / {
        try_files $uri @proxy_to_app;
    }

    location @proxy_to_app {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app_server;
    }
}
Nginx 구성을 테스트합니다.
sudo nginx -t
서비스를 시작하고 부트할 때 활성화합니다.
sudo systemctl start nginx
sudo systemctl enable nginx
서버를 재부팅합니다.
sudo reboot

이렇게!
이제 강력한 Wagtail 사이트를 구축해야 합니다.
다음은 SSL 인증서를 사용하여 웹 서버를 구성하는 것이 좋습니다.암호화는 아주 좋은 무료 옵션입니다.

좋은 웹페이지 즐겨찾기