نحوه استقرار Ghost v0.11 LTS در Debian 8

Ghost یک پلتفرم وبلاگ نویسی منبع باز است که از زمان انتشار 2013 خود محبوبیت زیادی بین توسعه دهندگان و کاربران عادی پیدا کرده است. این تمرکز روی محتوا و وبلاگ نویسی است. جذاب ترین چیز در مورد Ghost ، طراحی ساده ، تمیز و پاسخگو است. می توانید پست های وبلاگ خود را از طریق تلفن همراه بنویسید. محتوای Ghost با استفاده از زبان Markdown نوشته شده است. شبح مناسب برای افراد یا گروه های کوچک نویسندگان است.

در این راهنما ، ما می خواهیم یک وبلاگ امن Ghost v0.11.x LTS را در Debian 8 VPS با استفاده از Let Encrypt ، Certbot ، Node.js ، NPM ، NGINX و MySQL تنظیم و مستقر کنیم .

الزامات

  • ثبت نام (خرید) نام دامنه.
  • نمونه سرور Debian 8 با حداقل 1 GB RAM .
  • کاربر سودو

قبل از اینکه شروع کنی

  1. نسخه Debian را بررسی کنید:

    lsb_release -ds
    # Debian GNU/Linux 8.9 (jessie)
    
  2. یک حساب کاربری غیر ریشه جدید ایجاد کنید:

    adduser johndoe --gecos "John Doe"
    
  3. با افزودن آن به sudoگروه ، آن را superuser کنید :

    usermod -aG sudo johndoe
    
  4. تغییر به کاربر جدید:

    su - johndoe
    
  5. نرم افزار سیستم عامل خود را به روز کنید:

    sudo apt-get update && sudo apt-get upgrade -y
    
  6. منطقه زمانی را تنظیم کنید:

    sudo dpkg-reconfigure tzdata
    
  7. ابزارهای مورد نیاز را نصب کنید:

    sudo apt-get install -y build-essential zip unzip git apt-transport-https
    
  8. در صورت لزوم راه اندازی مجدد سیستم:

    sudo shutdown -r now
    

Certbot را نصب کنید

توجه : قبل از شروع این مرحله ، اطمینان حاصل کنید که رکوردهای DNS را برای دامنه خود تنظیم کرده اید.

ما قصد داریم از گواهی رمزگذاری CA و مشتری Certbot EFF استفاده کنیم تا گواهی SSL / TLS را برای وبلاگ Ghost ما بدست آوریم . فراموش نکنید که همه موارد را blog.domain.tldبا نام دامنه خود جایگزین کنید.

  1. نرم افزار مدیریت صدور گواهینامه Certbot (که قبلاً بیایید رمزگذاری کنیم مشتری آن را رمزگذاری کنیم ) نصب شده با پایتون:

    sudo -s
    printf "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list.d/jessie-backports.list
    exit        
    sudo apt-get update
    sudo apt-get install -y certbot -t jessie-backports
    
  2. نسخه Certbot را بررسی کنید:

    certbot --version
    # certbot 0.10.2
    
  3. دریافت گواهینامه RSA با استفاده از روش تأیید اعتبار مستقل (افزونه):

    sudo certbot certonly --standalone --domains blog.domain.tld --rsa-key-size 2048 --must-staple --email admin@domain.tld --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 را نصب کنید

توجه : شبح در حال حاضر فقط از نسخه های Node.js 4.5 و 6.9+ پشتیبانی می کند.

Ghost در Node.js. ساخته شده است ما می خواهیم نسخه پیشنهادی برای Ghost را که v6 Boron LTSدر زمان این نوشتن است نصب کنیم.

  1. Node.js v6 LTS را بارگیری و نصب کنید:

    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
    sudo apt-get 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 را بارگیری و نصب کنید:

    sudo apt-get install -y mysql-server
    

    توجه : در حین نصب از شما می خواهید رمزعبور کاربر "root" MySQL را بزنید. شما باید یک رمز عبور ایمن را برای کاربر "root" MySQL تعیین کنید.

  2. نسخه MySQL را بررسی کنید:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.5.57, for debian-linux-gnu (x86_64) using readline 6.3
    
  3. بررسی کنید که Daemon MySQL چیست و در حال اجرا است:

    sudo systemctl status mysql.service
    sudo systemctl is-enabled mysql.service
    
  4. mysql_secure_installationاسکریپت را اجرا کنید تا کمی پایگاه داده خود را ایمن کنید:

    sudo mysql_secure_installation
    
  5. به عنوان کاربر اصلی وارد MySQL شوید:

    mysql -u root -p
    # Enter password:
    
  6. ایجاد یک پایگاه داده و کاربر جدید MySQL:

    create database dbname;
    grant all on dbname.* to 'user' identified by 'password';
    
  7. خروج از MySQL:

    exit
    

NGINX را نصب کنید

  1. آخرین نسخه اصلی NGINX را از مخزن رسمی NGINX بارگیری و نصب کنید:

    wget https://nginx.org/keys/nginx_signing.key
    sudo apt-key add nginx_signing.key
    rm nginx_signing.key
    sudo -s
    printf "deb https://nginx.org/packages/mainline/debian/ `lsb_release -sc` nginx \ndeb-src https://nginx.org/packages/mainline/debian/ `lsb_release -sc` nginx \n" >> /etc/apt/sources.list.d/nginx_mainline.list
    exit
    sudo apt-get update
    sudo apt-get install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt nginx-nr-agent
    
  2. با بررسی نسخه NGINX تأیید کنید که نصب شده است:

    sudo nginx -v
    # nginx version: nginx/1.13.4
    
  3. بررسی وضعیت ، فعال سازی و شروع سرویس NGINX (Daemon):

    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 default_server;
        listen 80 default_server;
        listen [::]:443 ssl http2 default_server;
        listen 443 ssl http2 default_server;
    
        server_name blog.domain.tld; # Change to your domain/hostname
        root /var/www/ghost; # Change to the path where Ghost is
    
        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. پیکربندی NGINX را برای خطاهای نحو ذخیره و آزمایش کنید:

    sudo nginx -t
    
  9. بارگیری مجدد پیکربندی NGINX:

    sudo systemctl reload nginx.service
    

Ghost را نصب کنید

توجه : اگر می خواهید چندین وبلاگ Ghost را در همان VPS میزبان کنید ، هر نمونه Ghost باید در درگاه جداگانه اجرا شود.

  1. دایرکتوری root root را ایجاد کنید:

    sudo mkdir -p /var/www/
    
  2. ایجاد یک ghostکاربر جدید :

    sudo adduser --shell /bin/bash --gecos 'Ghost application' --disabled-password ghost
    
  3. دانلود Ghost:

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.11/Ghost-0.11.11.zip -o ghost.zip
    
  4. Ghost Ghost را درون /var/www/ghostفهرست قرار دهید (مکان نصب توصیه می شود):

    sudo unzip -uo ghost.zip -d /var/www/ghost
    rm ghost.zip
    
  5. به ghostفهرست جدید بروید :

    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، 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
        },
        // . . .
        // . . .
    

    توجه : شما همچنین باید تنظیمات نامه را پیکربندی کنید. در مورد چگونگی انجام این کار با اسناد رسمی Ghost مشورت کنید .

  11. Ghost را در محیط تولید شروع کنید:

    npm start --production
    

    شبح اکنون در حال اجرا است. رابط پیش فرض و مدیر وبلاگ هر دو با HTTPS ایمن هستند و HTTP / 2 نیز کار می کند. می توانید مرورگر خود را باز کرده و از سایت بازدید کنید https://blog.domain.tld. فراموش نکنید blog.domain.tldکه نام دامنه خود را جایگزین کنید.

  12. خاموش کردن فرآیند Ghost با فشار دادن CTRL+ Cو خروج از ghostکاربر به کاربر root:

    exit
    

Ghost را به عنوان یک سرویس سیستم اجرا کنید

اگر جلسه ترمینال خود را با VPS خود ببندید ، وبلاگ شما نیز پایین خواهد آمد. این خوب نیست. برای جلوگیری از این امر ، ما قصد داریم از Systemd استفاده کنیم. این وبلاگ ما را 24/7 نگه می دارد.

  1. ghost.serviceفایل واحد Systemd را ایجاد کنید. 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 ارائه می دهد. اگر می خواهید موضوع پیش فرض Ghost به نام Casper را به صورت دلخواه تغییر دهید ، می توانید فقط موضوع را در /var/www/ghost/content/themesپوشه بارگیری و از حالت فشرده خارج کرده و آن را از طریق رابط کاربری Ghost admin ، واقع در آن انتخاب کنید https://blog.domain.tld/ghost.

یک نظر بگذارید

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

اشتراک NFS را در Debian تنظیم کنید

اشتراک NFS را در Debian تنظیم کنید

NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

هنگام راه اندازی سرور جدید لینوکس ، به روزرسانی سیستم های هسته و سایر بسته ها تا آخرین نسخه پایدار یک روش توصیه شده است. در این مقاله

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.

نحوه نصب Matomo Analytics در Fedora 28

نحوه نصب Matomo Analytics در Fedora 28

با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o

یک سرور TeamTalk را در لینوکس تنظیم کنید

یک سرور TeamTalk را در لینوکس تنظیم کنید

TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

نحوه نصب Ranger Terminal File Manager در لینوکس

نحوه نصب Ranger Terminal File Manager در لینوکس

رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد

نصب و راه اندازی ZNC در اوبونتو

نصب و راه اندازی ZNC در اوبونتو

ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.