Како да примените Гхост в0.11 ЛТС на ЦентОС 7.3

Гхост је платформа за блогове отвореног кода која постаје све популарнија међу програмерима и обичним корисницима од свог издања 2013. године. Фокусира се на садржај и блоговање. Најпривлачнија ствар код Гхост-а је његов једноставан, чист и прилагодљив дизајн. Своје постове на блогу можете писати са мобилног телефона. Садржај за Гхост је написан користећи Маркдовн језик. Гхост је савршен за појединце или мале групе писаца.

У овом упутству ћемо поставити и распоредити сигурну Гхост в0.11.к ЛТС блог на ЦентОС 7.3 ВПС користећи Лет је Шифруј , Цертбот , Ноде.јс , НПМ , Апацхе и МиСКЛ .

Захтеви

  • Региструјте (купите) име домена.
  • Инстанца сервера ЦентОС 7.3 са најмање 1 ГБ РАМ-а .
  • Судо корисник.

Пре него што почнете

  1. Проверите верзију ЦентОС-а:

    cat /etc/centos-release
    # CentOS Linux release 7.3.1611 (Core)
    
  2. Креирајте новог корисника који није роот :

    useradd -c "John Doe" johndoe && passwd johndoe
    
  3. Учините га суперкорисником додавањем у wheelгрупу:

    usermod -aG wheel johndoe
    
  4. Пређи на новог корисника:

    su - johndoe
    
  5. Ажурирајте софтвер свог оперативног система:

    sudo yum check-update || sudo yum update -y
    
  6. Подесите временску зону:

    timedatectl list-timezones
    sudo timedatectl set-timezone 'Region/City'
    
  7. Инсталирајте развојне алате:

    sudo yum groupinstall -y 'Development Tools'
    
  8. Инсталирајте Вим уређивач текста:

    sudo yum install -y vim
    
  9. Поново покрените систем ако је потребно:

    sudo shutdown -r now
    

Инсталирајте Цертбот

NOTE: Before starting this step, ensure that you have set DNS records for your domain.

Користићемо Лет'с Енцрипт ЦА и ЕФФ Цертбот клијент да добијемо ССЛ/ТЛС сертификат за наш Гхост блог. Не заборавите да замените све инстанце blog.domain.tldса именом вашег домена.

  1. Омогућите складиште додатних пакета за Ентерприсе Линук (ЕПЕЛ):

    # Certbot is packaged in Extra Packages for Enterprise Linux (EPEL) repository. To use Certbot, you must first enable the EPEL repository.
    sudo yum install -y epel-release
    
  2. Инсталирајте Цертбот (раније Лет'с Енцрипт цлиент ) софтвер за управљање сертификатима направљен са Питхон-ом:

    sudo yum install -y certbot
    
  3. Проверите верзију Цертбота:

    certbot --version
    # certbot 0.14.1
    
  4. Набавите РСА сертификат користећи самосталну методу аутентификације (додатак):

    sudo certbot certonly --standalone --domains blog.domain.tld --rsa-key-size 2048 --must-staple --email admin@domain.tld --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директоријуму.

Инсталирајте Ноде.јс и НПМ

NOTE: Ghost currently supports Node.js versions 4.5+ and 6.9+ only.

Гхост је изграђен на Ноде.јс. Инсталираћемо препоручену верзију за Гхост која је v6 Boron LTSу време писања овог текста .

  1. Преузмите и инсталирајте Ноде.јс в6 ЛТС:

    sudo curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
    sudo yum install -y nodejs
    
  2. Проверите Ноде.јс и НПМ верзију:

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

Инсталирајте МиСКЛ

Гхост подразумевано долази конфигурисан да користи СКЛите базу података, која не захтева никакву конфигурацију.

Алтернативно, Гхост се такође може користити са МиСКЛ базом података променом конфигурације базе података. Прво морате да креирате базу података и корисника, а затим можете да промените постојећу склите3 конфигурацију.

  1. Преузмите и инсталирајте најновију верзију МиСКЛ-а (тренутно 5.7 ) из званичног МиСКЛ Иум спремишта:

    cd /tmp
    
    # Adding the MySQL Yum Repository
    wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    sudo yum localinstall -y mysql57-community-release-el7-11.noarch.rpm
    
    # Installing MySQL
    sudo yum install -y mysql-community-server
    
  2. Проверите верзију МиСКЛ-а:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using  EditLine wrapper
    
  3. Покрените МиСКЛ Сервер и проверите његов статус:

    sudo systemctl start mysqld.service
    sudo systemctl status mysqld.service
    
  4. МиСКЛ верзија 5.7 или новија генерише привремену насумичну лозинку за МиСКЛ rootкорисника након инсталације, а лозинка се чува у МиСКЛ датотеци евиденције грешака, која се налази на /var/log/mysqld.log. Да бисте га открили, користите следећу команду:

    sudo grep 'temporary password' /var/log/mysqld.log
    
  5. Покрените mysql_secure_installationскрипту да бисте мало заштитили своју базу података:

    NOTE: Password Validation Plugin is installed and enabled, so your new password for root user needs to be strong (one upper case letter, one lower case letter, one digit, and one special character, and that the total password length is at least 8 characters). If you want to relax that or disable plugin completely (not recommended) consult the official MySQL documentation for how to do that.

    sudo mysql_secure_installation
    
  6. Пријавите се на МиСКЛ као роот корисник:

    mysql -u root -p
    # Enter password:
    
  7. Креирајте нову МиСКЛ базу података и корисника:

    create database dbname;
    grant all on dbname.* to 'user' identified by 'password';
    
  8. Изађи из МиСКЛ-а:

    exit
    

Инсталирајте НГИНКС

  1. Download and install the latest mainline version of NGINX from the official NGINX repository:

    # Add the NGINX Yum Repository
    sudo vim /etc/yum.repos.d/nginx_mainline.repo
    
    
    # Copy/paste the following into /etc/yum.repos.d/nginx_mainline.repo
    [nginx]
    name=nginx repo
    baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/
    gpgcheck=1
    enabled=1
    
    
    wget https://nginx.org/keys/nginx_signing.key
    sudo rpm --import nginx_signing.key
    rm nginx_signing.key
    
    sudo yum install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt nginx-nr-agent
    
  2. Verify that it is installed by checking the NGINX version:

    sudo nginx -v
    # nginx version: nginx/1.13.3
    
  3. Check status, enable and start NGINX service (daemon):

    sudo systemctl status nginx.service # inactive (dead)
    sudo systemctl enable nginx.service
    sudo systemctl start nginx.service
    
  4. Create /etc/nginx/ssl directory and generate a new Diffie-Hellman (DH) parameters:

    sudo mkdir -p /etc/nginx/ssl
    sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
    
  5. Create log directory for blog.domain.tld virtual host:

    sudo mkdir -p /var/log/nginx/blog.domain.tld
    
  6. Configure NGINX as a HTTP(S) reverse proxy server:

    sudo vim /etc/nginx/conf.d/ghost.conf
    
  7. Paste the following in /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 default_server;
        listen 80 default_server;
        listen [::]:443 ssl http2 default_server;
        listen 443 ssl http2 default_server;
    
        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 TLSv1.3;
        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. Save and test NGINX configuration for syntax errors:

    sudo nginx -t
    
  9. Reload NGINX configuration:

    sudo systemctl reload nginx.service
    

Install Ghost

NOTE: If you want to host multiple Ghost blogs on same VPS, each Ghost instance must be running on a separate port.

  1. Create document root directory:

    sudo mkdir -p /var/www/
    
  2. Create a new ghost user:

    sudo useradd -c 'Ghost application' ghost
    
  3. Download Ghost:

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.11/Ghost-0.11.11.zip -o ghost.zip
    
  4. Unzip Ghost into the /var/www/ghost directory (recommended install location):

    sudo unzip -uo ghost.zip -d /var/www/ghost
    rm ghost.zip
    
  5. Move to the new ghost directory:

    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. Инсталирајте Гхост само са производним зависностима. Када се ово заврши, Гхост је инсталиран:

    npm install --production
    
  10. Цонфигуре Дух променом url, mailа databaseимовина производног објекта унутрашњости 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
        },
        // . . .
        // . . .
    

    NOTE: You should configure mail settings also. Consult the official Ghost documentation on how to do that.

  11. Покрените Гхост у производном окружењу:

    npm start --production
    

    Дух ће сада трчати. И фронт-енд блога и интерфејс администратора су заштићени ХТТПС-ом, а ХТТП/2 такође ради. Можете отворити свој претраживач и посетити сајт на https://blog.domain.tld. Не заборавите да замените blog.domain.tldсвојим именом домена.

  12. Искључите Гхост процес притиском на CTRL+ Cи изађите из гхост корисника назад на корисника који није роот који сте креирали на почетку:

    exit
    

Покретање Гхост-а као системске услуге

Ако затворите своју терминалску сесију са својим ВПС-ом, ваш блог ће такође бити угашен. То није добро. Да бисмо ово избегли, користићемо системд. То ће одржавати наш блог 24/7.

  1. Креирајте ghost.serviceсистемд јединичну датотеку. Покрените судо 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=/bin/npm start --production
    ExecStop=/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/и креирајте Гхост администраторског корисника. Урадите ово што је пре могуће!

Закључак

То је то. Сада имамо потпуно функционалан Гхост блог. Ваш сервер испоручује садржај преко ХТТП/2 када га клијент подржава. Ако желите да промените подразумевану Гхост тему под називом Цаспер у прилагођену, можете само да преузмете и распакујете тему у /var/www/ghost/content/themesфасциклу и изаберете је преко Гхост администраторског интерфејса, који се налази на https://blog.domain.tld/ghost.

Остави коментар

Успон машина: Примене вештачке интелигенције у стварном свету

Успон машина: Примене вештачке интелигенције у стварном свету

Вештачка интелигенција није у будућности, она је овде управо у садашњости. У овом блогу Прочитајте како су апликације вештачке интелигенције утицале на различите секторе.

ДДОС напади: кратак преглед

ДДОС напади: кратак преглед

Да ли сте и ви жртва ДДОС напада и збуњени сте методама превенције? Прочитајте овај чланак да бисте решили своја питања.

Да ли сте се икада запитали како хакери зарађују новац?

Да ли сте се икада запитали како хакери зарађују новац?

Можда сте чули да хакери зарађују много новца, али да ли сте се икада запитали како зарађују толики новац? Хајде да причамо.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Да ли желите да видите револуционарне изуме Гугла и како су ти изуми променили живот сваког људског бића данас? Затим читајте на блогу да бисте видели Гооглеове изуме.

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Концепт самовозећих аутомобила који путују на путеве уз помоћ вештачке интелигенције је сан који већ неко време имамо. Али упркос неколико обећања, њих нема нигде. Прочитајте овај блог да сазнате више…

Технолошка сингуларност: далека будућност људске цивилизације?

Технолошка сингуларност: далека будућност људске цивилизације?

Како се наука развија великом брзином, преузимајући многе наше напоре, расте и ризик да се подвргнемо необјашњивој сингуларности. Прочитајте шта би сингуларност могла да значи за нас.

Функционалности слојева референтне архитектуре великих података

Функционалности слојева референтне архитектуре великих података

Прочитајте блог да бисте на најједноставнији начин упознали различите слојеве у архитектури великих података и њихове функционалности.

Еволуција складиштења података – Инфографика

Еволуција складиштења података – Инфографика

Методе складиштења података су се развијале можда од рођења података. Овај блог покрива еволуцију складиштења података на основу инфографике.

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

У овом дигиталном свету, паметни кућни уређаји постали су кључни део живота. Ево неколико невероватних предности паметних кућних уређаја о томе како они чине наш живот вредним живљења и једноставнијим.

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Недавно је Аппле издао мацОС Цаталина 10.15.4 додатак за исправку проблема, али изгледа да ажурирање изазива више проблема који доводе до квара Мац машина. Прочитајте овај чланак да бисте сазнали више