Տեղադրեք - կարգավորեք Ghost-ը openSUSE 42.2 Leap-ում


Ի՞նչ է Ghost-ը:

Վեբ 2.0-ի դարաշրջանում բլոգները շատերի համար հավանումների կարևոր մասն են, և, օրինակ, WordPress-ի և Tumblr-ի հանրաճանաչությունը փաստում է:
Այսօր մենք կխոսենք առցանց հրապարակումներ ստեղծելու և գործարկելու համար (օրինակ՝ բլոգեր, ամսագրեր և այլն), որը կոչվում է Ghost: Այս գործիքը բաց կոդով է և լիովին հաքերային, գրված է JavaScript-ով և աշխատում է Node.js-ում:
Այս ձեռնարկում մենք կտեսնենք, թե ինչպես տեղադրել – կարգավորել Ghost-ը openSUSE Leap 42.2-ում՝ օգտագործելով Apache-ն որպես վեբ սերվեր:

Node.js տարբերակը

Ghost-ն աշխատում է Node.js-ի վերևում: Ավելի ճշգրիտ լինելու համար, մշակողները որոշել են աջակցել միայն LTS տարբերակները: Այս ձեռնարկում մենք կօգտագործենք 4.2.x տարբերակը:
Նույնիսկ եթե դա նշանակում է, որ Ghost-ը չի կարող օգտագործել Node.js-ի վերջին հնարավորությունները, ընտրությունը խելամիտ է թվում, քանի որ դա նրանց համար տեղ է թողնում իրենց ժամանակը ծախսելու նոր հնարավորություններ ստեղծելու և սխալներ շտկելու վրա, այլ ոչ թե Node-ում փոփոխություններին հետևելու և իրենց հարթակը վերստուգելու համար: յուրաքանչյուր թողարկում։
Վերջնական օգտատերերի և ադմինիստրատորների համար սա հանգեցնում է ավելի կայուն և աջակցվող հարթակի, որը շատերը գրավիչ են համարում:

Սկսում ենք – Տեղադրեք Node.js և npm

Node.js-ի 4-րդ տարբերակն արդեն հասանելի է openSUSE-ում: Այն տեղադրելու համար պարզապես օգտագործեք

zypper

:

zypper in nodejs
The following NEW package is going to be installed:
  nodejs4

1 new package to install.
Overall download size: 3.3 MiB. Already cached: 0 B. After the operation, additional
12.7 MiB will be used.
Continue? [y/n/? shows all options] (y): y
Retrieving package nodejs4-4.6.1-3.1.x86_64        (1/1),   3.3 MiB ( 12.7 MiB unpacked)
Retrieving: nodejs4-4.6.1-3.1.x86_64.rpm ...........................[done (846.4 KiB/s)]
Checking for file conflicts: .....................................................[done]
(1/1) Installing: nodejs4-4.6.1-3.1.x86_64 .......................................[done]

Հաջորդը, տեղադրեք

npm

:

zypper in npm

Ստուգեք տարբերակը.

npm --version
2.15.9

Ghost-ի տեղադրում

Փոխել գրացուցակը

/srv/www

և ներբեռնեք Ghost:

cd /srv/www
wget https://ghost.org/zip/ghost-latest.zip

Unzip այն նոր անունով գրացուցակում

ghost

օգտագործելով հետևյալ կոդը.

unzip -d ghost ghost-latest.zip

Գնացեք այս նոր գրացուցակ և տեղադրեք Ghost-ը

npm

:

cd ghost
npm install --production

Կարգավորել Ghost-ը

ghost գրացուցակը պարունակում է կազմաձևման ֆայլի օրինակ: Օգտագործեք սա:

cp config.example.js config.js

Հաջորդը, ստեղծեք նոր օգտվող ghostusr անունով.

useradd -d /srv/www -s /bin/bash -U ghostusr
passwd ghostusr

Սահմանեք այս օգտվողին որպես ուրվական գրացուցակի սեփականատեր.

chown -R ghostusr:ghostusr /srv/www/ghost

Այժմ հնարավոր է փորձարկել Ghost-ի հետ

npm

կատարելով հետևյալ հրամանները.

su - ghostusr
cd ghost
npm start --production

Այն պետք է հանգեցնի նման արդյունքի.

Migrations: Creating tables...
Migrations: Creating table: posts
Migrations: Creating table: users
Migrations: Creating table: roles
Migrations: Creating table: roles_users
Migrations: Creating table: permissions
Migrations: Creating table: permissions_users
Migrations: Creating table: permissions_roles
Migrations: Creating table: permissions_apps
Migrations: Creating table: settings
Migrations: Creating table: tags
Migrations: Creating table: posts_tags
Migrations: Creating table: apps
Migrations: Creating table: app_settings
Migrations: Creating table: app_fields
Migrations: Creating table: clients
Migrations: Creating table: client_trusted_domains
Migrations: Creating table: accesstokens
Migrations: Creating table: refreshtokens
Migrations: Creating table: subscribers
Migrations: Running fixture populations
Migrations: Creating owner
Ghost is running in production... 
Your blog is now available on http://my-ghost-blog.com

Բացեք նոր տերմինալի պատուհան և փորձարկեք՝ տեսնելու, թե արդյոք Ghost-ն արդյունավետ է աշխատում՝ կատարելով հետևյալ հրամանը.

curl -I localhost:2368
HTTP/1.1 200 OK
X-Powered-By: Express
Cache-Control: public, max-age=0
Content-Type: text/html; charset=utf-8
Content-Length: 4554
ETag: W/"11ca-93Do3c+nffISfn1kLrmRZg"
Vary: Accept-Encoding
Date: Mon, 13 Mar 2017 07:59:39 GMT
Connection: keep-alive

Տերմինալի պատուհանում, որն աշխատում է Ghost-ում, դադարեցրեք այն՝ մուտքագրելով CTRL+C:
Այժմ ստեղծեք նոր systemd ծառայություն.

$EDITOR /etc/systemd/system/ghost.service

Եվ այնտեղ տեղադրեք հետևյալ կոնֆիգուրացիան.

[Unit]
Description=Ghost Blog - Publication platform
After=network.target

[Service]
Type=simple
Ghost installation Directory
WorkingDirectory=/srv/www/ghost
User=ghostusr
Group=ghostusr
ExecStart=/usr/bin/npm start --production
ExecStop=/usr/bin/npm stop --production
Restart=always
SyslogIdentifier=Ghost

[Install]
WantedBy=multi-user.target

Վերբեռնել systemd daemon:

systemct daemon-reload

և այնուհետև սկսեք նոր ծառայությունը.

systemctl start ghost

Ստուգեք կարգավիճակը.

systemctl status ghost

Եվ դա ցույց կտա հետևյալը.

ghost.service - Ghost Blog - Publication platform
   Loaded: loaded (/etc/systemd/system/ghost.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2017-03-13 09:06:41 CET; 5s ago

Որպեսզի այն գործարկվի բեռնման ժամանակ.

systemctl enable ghost

Apache-ի տեղադրում և կարգավորում

Տեղադրեք Apache 2-ը

zypper

:

zypper in apache2

Եվ ստեղծեք նոր վիրտուալ հոսթ Ghost-ի համար.

$EDITOR /etc/apache2/sites-available/ghost.conf

Այնտեղ, տեղադրեք.

 <VirtualHost *:80> 
    #Domain Name 
    ServerName myghostblog.com 
    ServerAlias www.myghostblog.com 
 
    #HTTP proxy/gateway server 
    ProxyRequests off  
    ProxyPass / http://127.0.0.1:2368/  
    ProxyPassReverse / http:/127.0.0.1:2368/      
</VirtualHost>

Պահել և դուրս գալ:
Ակտիվացրեք վստահված անձի մոդուլը, ակտիվացրեք Ghost-ը և վերագործարկեք ամեն ինչ.

a2enmod proxy proxy_http
ln -s /etc/apache2/sites-available/ghost.conf /etc/apache2/sites-enabled/ghost.conf
systemctl restart apache2
systemctl restart ghost

Բացեք վեբ զննարկիչը և այցելեք http://localhost:2368 և.

Միացնել SSL-ը

Ստեղծեք նոր գրացուցակ, որը կպարունակի վկայականներ.

mkdir -p /etc/apache2/certs

Եվ այնտեղ ստեղծեք նոր վկայագիր.

openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/apache2/certs/ghost.key -out /etc/apache2/certs/ghost.crt

Փոխել թույլտվությունները.

chmod 600 /etc/apache2/certs/*

Վերջապես, խմբագրեք վիրտուալ հոսթի կազմաձևը՝ SSL-ը միացնելու համար.

$EDITOR /etc/apache2/sites-available/ghost.conf
<VirtualHost *:80>
    ServerName myghostblog.com
    ServerAlias www.myghostblog.com

    # Force http to https
    Redirect permanent / https://myghostblog.com/
   ProxyRequests off 
   ProxyPass / http://127.0.0.1:2368/ 
   ProxyPassReverse / http:/127.0.0.1:2368/     
</VirtualHost>

<VirtualHost *:443>

   ServerName myghostblog.com

   SSLEngine on
   SSLCertificateFile /etc/apache2/certs/ghost.crt
   SSLCertificateKeyFile /etc/apache2/certs/ghost.key

   ProxyPass / http://127.0.0.1:2368/
   ProxyPassReverse / http:/127.0.0.1:2368/
   ProxyPreserveHost   On

   RequestHeader set X-Forwarded-Proto "https"

</VirtualHost>

Պահպանեք, դուրս եկեք և վերագործարկեք Apache-ն.

a2enmod ssl headers
systemctl restart apache2

Եզրակացություն

Ghost-ն այժմ գործում է: Գնացեք localhost:2368/ghost/՝ ավարտելու ադմինիստրատորի հաշվի կարգավորումը, այնուհետև սկսեք բլոգեր գրել: