Fedora 25에서 Ghost v0.11 LTS를 배포하는 방법

Ghost 는 2013 릴리스 이후 개발자와 일반 사용자 사이에서 인기를 얻고있는 오픈 소스 블로그 플랫폼입니다. 내용과 블로그에 중점을 둡니다. Ghost의 가장 매력적인 점은 간단하고 깨끗하며 반응이 빠른 디자인입니다. 휴대폰에서 블로그 게시물을 작성할 수 있습니다. Ghost의 컨텐츠는 마크 다운 언어를 사용하여 작성됩니다. 고스트는 개인 또는 소규모 작가 그룹에게 적합합니다.

이 안내서에서는 Let 's Encrypt , Certbot , Node.js , NPM , NGINXMySQL을 사용하여 Fedora 25 VPS에 보안 Ghost v0.11.x LTS 블로그 를 설정하고 배포합니다 .

요구 사항

  • 도메인 이름을 등록 (구매)하십시오.
  • 최소 1GB RAM 의 Fedora 25 서버 인스턴스 .
  • Sudo 사용자.
  • 로 포트 2368을 열어야 할 것입니다 semanage port -a -t http_port_t -p tcp 2368.

시작하기 전에

  1. Fedora 버전 확인 :

    cat /etc/fedora-release
    # Fedora release 25 (Twenty Five)
    
  2. 루트가 아닌 새 사용자를 작성하십시오 .

    useradd -c "John Doe" johndoe && passwd johndoe
    
  3. wheel그룹 에 추가하여 수퍼 유저로 만드십시오 .

    usermod -aG wheel johndoe
    
  4. 새로운 사용자로 전환 :

    su - johndoe
    
  5. 운영 체제 소프트웨어를 업데이트하십시오.

    sudo dnf check-update || sudo dnf upgrade -y
    
  6. 시간대를 설정하십시오.

    timedatectl list-timezones
    sudo timedatectl set-timezone 'Region/City'
    
  7. 개발 도구를 설치하십시오.

    sudo dnf install @development-tools -y
    
  8. Vim 텍스트 편집기 및 Wget을 설치하십시오.

    sudo dnf install -y vim wget
    
  9. 필요한 경우 시스템을 재부팅하십시오 :

    sudo shutdown -r now
    

Certbot 설치

참고 :이 단계를 시작하기 전에 도메인에 대한 DNS 레코드를 설정했는지 확인 하십시오.

우리는 사용하려고 하자 암호화 CAEFF 얻을의 Certbot 클라이언트 SSL / TLS의 우리의 유령 블로그에 대한 인증서를. 모든 인스턴스를 blog.domain.tld도메인 이름 으로 바꾸는 것을 잊지 마십시오 .

  1. Python으로 만든 Certbot (이전의 Let 's Encrypt 클라이언트 ) 인증서 관리 소프트웨어를 설치하십시오 .

    sudo dnf install -y certbot
    
  2. Certbot 버전 확인 :

    certbot --version
    # certbot 0.14.1
    
  3. 독립형 인증 방법 (플러그인)을 사용하여 RSA 인증서를 얻습니다 .

    sudo certbot certonly --standalone --domains blog.domain.tld --rsa-key-size 2048 --must-staple --email [email protected] --no-eff-email --agree-tos
    
    # IMPORTANT NOTES:
    #  - Congratulations! Your certificate and chain have been saved at 
       /etc/letsencrypt/live/blog.domain.tld/fullchain.pem.
    #  Your cert will expire on YYYY-MM-DD. . . .
    #  . . .
    

    이전 단계를 거친 후에는 인증서개인 키/etc/letsencrypt/live/blog.domain.tld디렉토리에 있습니다.

Node.js 및 NPM 설치

참고 : Ghost는 현재 Node.js 버전 4.5+ 및 6.9+ 만 지원합니다.

Ghost는 Node.js를 기반으로합니다. 이 문서를 작성할 당시의 Ghost 권장 버전 을 설치하려고합니다 v6 Boron LTS.

  1. Node.js v6 LTS를 다운로드하여 설치하십시오.

    curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
    sudo dnf install -y nodejs
    
  2. Node.js 및 NPM 버전을 확인하십시오.

    node -v && npm -v
    # v6.11.2
    # 3.10.10
    

MySQL 설치

기본적으로 Ghost는 구성이 필요없는 SQLite 데이터베이스를 사용하도록 구성되어 있습니다.

데이터베이스 구성을 변경하여 Ghost를 MySQL 데이터베이스와 함께 사용할 수도 있습니다. 먼저 데이터베이스와 사용자를 작성해야하며 기존 sqlite3 구성을 변경할 수 있습니다.

  1. 공식 MySQL Dnf 저장소에서 최신 버전의 MySQL (현재 5.7 )을 다운로드하여 설치하십시오 .

    cd /tmp
    
    # Adding the MySQL dnf Repository
    wget https://dev.mysql.com/get/mysql57-community-release-fc25-10.noarch.rpm
    sudo dnf install -y mysql57-community-release-fc25-10.noarch.rpm
    
    # Installing MySQL
    sudo dnf install -y mysql-community-server
    
  2. MySQL 버전 확인 :

    mysql --version
    # mysql  Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using  EditLine wrapper
    
  3. MySQL 서버를 시작하고 상태를 확인하십시오.

    sudo systemctl start mysqld.service
    sudo systemctl status mysqld.service
    
  4. MySQL 버전 5.7 이상 root은 설치 후 MySQL 사용자 의 임시 임의 비밀번호를 생성 하며 비밀번호는에 위치한 MySQL 오류 로그 파일에 저장됩니다 /var/log/mysqld.log. 공개하려면 다음 명령을 사용하십시오.

    sudo grep 'temporary password' /var/log/mysqld.log
    
  5. mysql_secure_installation스크립트를 실행 하여 데이터베이스를 약간 보호하십시오.

    참고 : Password Validation Plugin이 설치되어 활성화되어 있으므로 사용자의 새 비밀번호 root가 강력해야합니다 ( 대문자, 소문자, 숫자 및 특수 문자). 그리고 전체 비밀번호 길이는 8 자 이상이어야합니다. ). 완화하거나 플러그인을 완전히 비활성화하려면 ( 권장되지 않음 ) 공식 MySQL 설명서를 참조하십시오.

    sudo mysql_secure_installation
    
  6. 루트 사용자로 MySQL에 로그인하십시오.

    mysql -u root -p
    # Enter password:
    
  7. 새로운 MySQL 데이터베이스와 사용자를 생성합니다 :

    create database dbname;
    grant all on dbname.* to 'user' identified by 'password';
    
  8. MySQL을 종료하십시오.

    exit
    

NGINX 설치

  1. NGINX 다운로드 및 설치 :

    sudo dnf install -y nginx
    
  2. NGINX 버전을 확인하여 설치되었는지 확인하십시오.

    sudo nginx -v
    # nginx version: nginx/1.10.2
    
  3. 상태 확인, NGINX 서비스 활성화 및 시작 (데몬) :

    sudo systemctl status nginx.service # inactive (dead)
    sudo systemctl enable nginx.service
    sudo systemctl start nginx.service
    
  4. /etc/nginx/ssl디렉토리를 작성 하고 새로운 Diffie-Hellman ( DH ) 매개 변수를 생성하십시오.

    sudo mkdir -p /etc/nginx/ssl
    sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
    
  5. blog.domain.tld가상 호스트의 로그 디렉토리를 작성하십시오 .

    sudo mkdir -p /var/log/nginx/blog.domain.tld
    
  6. NGINX를 HTTP ( S ) 리버스 프록시 서버로 구성하십시오.

    sudo vim /etc/nginx/conf.d/ghost.conf
    
  7. 다음에 붙여 넣습니다 /etc/nginx/conf.d/ghost.conf.

    # domain: blog.domain.tld
    # public: /var/www/ghost
    
    upstream ghost_app {
        server 127.0.0.1:2368;
        keepalive 32;
    }
    
    server {
        listen [::]:80;
        listen 80;
        listen [::]:443 ssl http2;
        listen 443 ssl http2;
    
        server_name blog.domain.tld;
        root /var/www/ghost;
    
        error_log /var/log/nginx/blog.domain.tld/error.log;
        access_log /var/log/nginx/blog.domain.tld/access.log;
    
        client_max_body_size 100M;
    
        ssl_certificate /etc/letsencrypt/live/blog.domain.tld/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/blog.domain.tld/privkey.pem;
        ssl_dhparam ssl/dhparams-2048.pem;
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        ssl_prefer_server_ciphers on;
    
        ssl_buffer_size 4K;
    
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50M;
        ssl_session_tickets off;
    
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/letsencrypt/live/blog.domain.tld/chain.pem;
    
        resolver 8.8.8.8 8.8.4.4 valid=300s;
    
        location / {
            proxy_pass http://ghost_app;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_hide_header X-Powered-By;
    
            proxy_http_version 1.1;
            proxy_set_header Connection "";
        }
    }
    
  8. 구문 오류에 대해 NGINX 구성을 저장하고 테스트하십시오.

    sudo nginx -t
    
  9. NGINX 구성을 다시로드하십시오.

    sudo systemctl reload nginx.service
    

고스트 설치

참고 : 동일한 VPS에서 여러 Ghost 블로그를 호스팅하려면 각 Ghost 인스턴스가 별도의 포트에서 실행 중이어야합니다.

  1. 문서 루트 디렉토리를 작성하십시오.

    sudo mkdir -p /var/www/
    
  2. 새로운 고스트 사용자를 생성합니다 :

    sudo useradd -c 'Ghost application' ghost
    
  3. 고스트 다운로드 :

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.11/Ghost-0.11.11.zip -o ghost.zip
    
  4. Ghost를 /var/www/ghost디렉토리에 압축 해제하십시오 (권장 설치 위치).

    sudo unzip -uo ghost.zip -d /var/www/ghost
    rm ghost.zip
    
  5. 새로운 고스트 디렉토리로 이동하십시오 :

    cd /var/www/ghost
    
  6. /var/www/ghost디렉토리 의 소유권을 변경하십시오 .

    sudo chown -R ghost:ghost .
    
  7. 새로운 ghost사용자로 전환 :

    sudo su - ghost
    
  8. 문서 루트로 이동하십시오 /var/www/ghost.

    cd /var/www/ghost
    
  9. 프로덕션 종속성이있는 Ghost 만 설치하십시오. 완료되면 Ghost가 설치됩니다.

    npm install --production
    
  10. 구성 변경하여 유령 url, maildatabase생산 개체 내부의 특성 config.js파일 :

    cp config.example.js config.js
    vim /var/www/ghost/config.js
    
    
    var path = require('path'),
        config;
    
    config = {
    // ### Production
    // When running Ghost in the wild, use the production environment.
    // Configure your URL and mail settings here
    production: {
        url: 'https://blog.domain.tld',
        mail: {
            transport: 'SMTP',
            options: {
                service: 'Mailgun',
                auth: {
                    user: '',
                    pass: ''
                }
            }
        },
        database: {
            client: 'mysql',
            connection: {
                host: '127.0.0.1',
                user: 'your_database_user',
                password: 'your_database_password',
                database: 'your_database_name',
                charset: 'utf8'
            },
            debug: false
        },
        // . . .
        // . . .
    

    참고 : mail설정도 구성해야합니다 . 그렇게하는 방법에 대해서는 공식 Ghost 문서 를 참조하십시오 .

  11. 프로덕션 환경에서 Ghost를 시작하십시오.

    npm start --production
    

    이제 고스트가 실행됩니다. 블로그 프런트 엔드 및 관리 인터페이스는 모두 HTTPS로 보호되며 HTTP / 2도 작동합니다. 에서 브라우저를 열고 사이트를 방문 할 수 있습니다 https://blog.domain.tld. blog.domain.tld도메인 이름 으로 바꾸는 것을 잊지 마십시오 .

  12. CTRL+ 를 눌러 Ghost 프로세스를 C종료하고 고스트 사용자 에서 처음에 작성한 루트아닌 사용자로 종료 하십시오.

    exit
    

시스템 서비스로 Ghost 실행

VPS와의 터미널 세션을 닫으면 블로그도 다운됩니다. 그 좋지 않다. 이를 피하기 위해 systemd를 사용할 것입니다. 블로그를 연중 무휴 24 시간 유지합니다.

  1. 시스템 ghost.service단위 파일을 작성 하십시오. sudo를 실행 sudo vim /etc/systemd/system/ghost.service하고 아래 내용을 복사 / 붙여 넣기하십시오.

    [Unit]
    Description=Ghost - the professional publishing platform
    Documentation=https://docs.ghost.org/v0.11.11/docs
    After=network.target
    
    [Service]
    Type=simple
    # Edit WorkingDirectory, User and Group as needed
    WorkingDirectory=/var/www/ghost
    User=ghost
    Group=ghost
    ExecStart=/usr/bin/npm start --production
    ExecStop=/usr/bin/npm stop --production
    Restart=always
    SyslogIdentifier=Ghost
    
    [Install]
    WantedBy=multi-user.target
    
  2. 활성화 및 시작 ghost.service:

    sudo systemctl enable ghost.service && sudo systemctl start ghost.service
    
  3. ghost.service상태 확인 :

    sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
    
  4. https://blog.domain.tld/ghost/Ghost 관리 사용자로 이동하여 작성하십시오. 가능한 빨리 이것을하십시오!

결론

그게 다야. 이제 모든 기능을 갖춘 Ghost 블로그가 있습니다. 서버는 클라이언트가 지원할 때 HTTP / 2를 통해 컨텐츠를 제공합니다. Casper 라는 기본 Ghost 테마 를 사용자 정의 테마로 변경하려면 테마를 /var/www/ghost/content/themes폴더에 다운로드하여 압축을 풀고 에 위치한 Ghost 관리 인터페이스를 통해 테마를 선택하면됩니다 https://blog.domain.tld/ghost.



Leave a Comment

NTLite를 사용하여 업데이트로 Windows 사용자 지정 ISO를 만드는 방법

NTLite를 사용하여 업데이트로 Windows 사용자 지정 ISO를 만드는 방법

NTLite를 사용하여 Vultr 시스템과 호환되는 Windows 사용자 지정 ISO를 만드는 방법을 단계별로 설명합니다. 최신 드라이버와 업데이트 통합을 포함한 완벽 가이드.

Vultr에서 BGP 구성

Vultr에서 BGP 구성

Vultr BGP 설정을 위한 단계별 튜토리얼. ASN 할당부터 IP 라우팅 구성, BIRD 데몬 설정, FreeBSD 특이사항 및 실전 문제 해결 팁 7가지 포함한 최종 가이드

WsgiDAV를 사용하여 Debian 10에 WebDAV 배포

WsgiDAV를 사용하여 Debian 10에 WebDAV 배포

WebDAV (Web Distributed Authoring and Versioning)를 이용한 원격 파일 작성을 위한 프레임워크로, WsgiDAV 설치 및 구성 방법을 안내합니다.

데비안 7에 Mailcow 설치

데비안 7에 Mailcow 설치

Mailcow는 DoveCot, Postfix 및 기타 여러 오픈 소스 패키지를 기반으로 하는 경량 메일 서버입니다. 데비안에서 Mailcow 설치 방법을 안내합니다.

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구