Ինչպես տեղադրել Wiki.js-ը Ubuntu 22.04 LTS-ում


Այս ձեռնարկը գոյություն ունի ՕՀ-ի այս տարբերակների համար

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 18.04 (Bionic Beaver)

Այս էջում

  1. Նախադրյալներ
  2. Քայլ 1 - Կարգավորել Firewall-ը
  3. Քայլ 2 - Տեղադրեք PostgreSQL և Utilities
  4. Քայլ 3 - Կարգավորեք PostgreSQL
  5. Քայլ 4 - Տեղադրեք Node.js-ը
  6. Քայլ 5 - Ներբեռնեք Wiki.js-ը
  7. Քայլ 6 - Կարգավորեք և գործարկեք Wiki.js-ը
  8. Քայլ 7 - Ստեղծեք Systemd ծառայություն
  9. Քայլ 8 - Տեղադրեք Nginx-ը
  10. Քայլ 9 - Տեղադրեք SSL-ը
  11. Քայլ 10 - Կարգավորեք Nginx-ը
  12. Քայլ 11 - Ավարտեք տեղադրումը
  13. Եզրակացություն

Wiki.js-ը բաց կոդով, թեթև վիքի ծրագիր է։ Այն կառուցված է Node.js JavaScript շրջանակի վրա։ Այն կարող է օգտագործվել փաստաթղթեր, վիքի և վեբ բովանդակություն գրելու համար՝ օգտագործելով Markdown խմբագրիչը մշակողների համար և WYSIWYG խմբագրիչը ոչ տեխնիկական մարդկանց համար: Այն աջակցում է բազմաթիվ բովանդակության տեսակների, ներառյալ UML դիագրամները, մաթեմատիկական արտահայտությունները՝ օգտագործելով Tex կամ MathML շարահյուսությունը և կոդը: Այն ներառում է բազմաթիվ մոդուլներ տարբեր գործառույթների համար, այդ թվում՝ վերլուծություն, իսկորոշում, գրանցում, երրորդ կողմի որոնման համակարգեր և բազմաթիվ պահեստավորման ծառայություններ՝ ձեր բովանդակությունը համաժամեցնելու համար:

Այս ձեռնարկում դուք կսովորեք տեղադրել Wiki.js-ը Ubuntu 22.04 սերվերի վրա՝ օգտագործելով PostgreSQL տվյալների բազան և Nginx սերվերը՝ պրոքսի համար:

Նախադրյալներ

    Ubuntu 22.04-ով աշխատող սերվեր:

    Ոչ արմատային օգտատեր՝ sudo արտոնություններով:

    Լիովին որակավորված տիրույթի անուն (FQDN), որը ցույց է տալիս ձեր սերվերը: Մեր նպատակների համար մենք կօգտագործենք wiki.example.com որպես տիրույթի անուն:

    Համոզվեք, որ ամեն ինչ թարմացվում է:

    $ sudo apt update && sudo apt upgrade
    

    Տեղադրեք հիմնական կոմունալ փաթեթներ: Դրանցից մի քանիսը կարող են արդեն տեղադրված լինել:

    $ sudo apt install wget curl ca-certificates gnupg gnupg2 nano unzip lsb-release ubuntu-keyring -y
    

Քայլ 1 - Կարգավորել Firewall-ը

Նախքան որևէ փաթեթ տեղադրելը, առաջին քայլը կարգավորելն է firewall-ը, որպեսզի թույլ տա HTTP և HTTPS կապեր:

Ստուգեք firewall-ի կարգավիճակը:

$ sudo ufw status

Դուք պետք է տեսնեք հետևյալի նման մի բան.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Թույլատրել HTTP և HTTPs նավահանգիստները:

$ sudo ufw allow http
$ sudo ufw allow https

Ստուգեք կարգավիճակը կրկին հաստատելու համար:

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Քայլ 2 - Տեղադրեք PostgreSQL և Utilities

Ubuntu 22.04-ը մատակարարվում է PostgreSQL-ի ավելի հին տարբերակով: Մենք կտեղադրենք Postgres 14-ը մեր ձեռնարկի համար:

Տեղադրեք պահեստը PostgreSQL-ի համար:

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Ներմուծեք PostgreSQL GPG ստեղնը:

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null

Թարմացրեք համակարգի պահեստների ցանկը:

$ sudo apt update

Տեղադրեք PostgreSQL 14 սերվերը:

$ sudo apt install -y postgresql-14

Ստուգեք ծառայության կարգավիճակը:

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Tue 2022-10-25 06:24:24 UTC; 10min ago
   Main PID: 4032 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Oct 25 06:24:24 wiki systemd[1]: Starting PostgreSQL RDBMS...
Oct 25 06:24:24 wiki systemd[1]: Finished PostgreSQL RDBMS.

Քայլ 3 - Կարգավորեք PostgreSQL

Մուտք գործեք PostgreSQL shell:

$ sudo -i -u postgres psql

Ստեղծեք նոր տվյալների բազա Wiki.js-ի համար:

postgres=# CREATE DATABASE wikidb;

Ստեղծեք տվյալների բազայի նոր օգտվող՝ ուժեղ գաղտնաբառով:

postgres=# CREATE USER wikiuser WITH ENCRYPTED PASSWORD 'wikipassword';

Օգտագործողին տրամադրել տվյալների բազայից օգտվելու իրավունքներ:

postgres=# GRANT ALL PRIVILEGES ON DATABASE wikidb TO wikiuser;

Դուրս եկեք Postgres Shell-ից:

postgres=# \q

Քայլ 4 - Տեղադրեք Node.js-ը

Այս ձեռնարկը գրելու պահին Wiki.js-ն աջակցում է Node v16-ին:

Տեղադրեք Node-ի պահոցը՝ օգտագործելով հետևյալ հրամանը.

$ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -

Տեղադրեք Node-ը:

$ sudo apt install nodejs -y

Ստուգեք հանգույցի տեղադրումը:

$ node --version
v16.18.0

Քայլ 5 - Ներբեռնեք Wiki.js-ը

Ստեղծեք թղթապանակ Wiki.js-ը տեղադրելու համար:

$ sudo mkdir -p /var/www/wikijs

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

$ sudo chown $USER:$USER /var/www/wikijs

Անցեք գրացուցակ և ներբեռնեք Wiki.js կոդերի արխիվը:

$ cd /var/www/wikijs && wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz

Քաղեք ներբեռնված արխիվը:

$ tar xzf wiki-js.tar.gz

Ջնջել արխիվը։

$ rm wiki-js.tar.gz

Քայլ 6 - Կարգավորեք և գործարկեք Wiki.js-ը

Ստեղծեք կազմաձևման ֆայլը նմուշից:

$ cp config.sample.yml config.yml

Բացեք կազմաձևման ֆայլը խմբագրման համար:

$ nano config.yml

Գտեք տվյալների բազայի հետևյալ պարամետրերը և թարմացրեք դրանց արժեքները 3-րդ քայլում կազմաձևված արժեքներով:

# PostgreSQL / MySQL / MariaDB / MS SQL Server only:
host: localhost
port: 5432
user: wikiuser
pass: wikipassword
db: wikidb
ssl: false

Գտեք bindIP: 0.0.0.0 տողը և թարմացրեք այն հետևյալ կերպ.

bindIP: 127.0.0.1

Սա կստիպի WIki.js-ին լսել loopback հասցեն, քանի որ մենք կօգտագործենք Nginx պրոքսիը՝ դրան դրսից մուտք գործելու համար:

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

Գործարկեք Wiki.js-ը՝ օգտագործելով հետևյալ հրամանը։

$ node server

Դուք կստանաք նմանատիպ արդյունք, որը հաստատում է հաջող տեղադրումը:

Loading configuration from /var/www/wikijs/config.yml... OK
2022-10-25T06:40:46.294Z [MASTER] info: =======================================
2022-10-25T06:40:46.296Z [MASTER] info: = Wiki.js 2.5.289 =====================
2022-10-25T06:40:46.296Z [MASTER] info: =======================================
2022-10-25T06:40:46.296Z [MASTER] info: Initializing...
2022-10-25T06:40:46.962Z [MASTER] info: Using database driver pg for postgres [ OK ]
2022-10-25T06:40:46.974Z [MASTER] info: Connecting to database...
2022-10-25T06:40:47.067Z [MASTER] info: Database Connection Successful [ OK ]
2022-10-25T06:40:47.345Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode...
2022-10-25T06:40:47.345Z [MASTER] info: Starting setup wizard...
2022-10-25T06:40:47.510Z [MASTER] info: Starting HTTP server on port 3000...
2022-10-25T06:40:47.511Z [MASTER] info: HTTP Server on port: [ 3000 ]
2022-10-25T06:40:47.515Z [MASTER] info: HTTP Server: [ RUNNING ]
2022-10-25T06:40:47.515Z [MASTER] info: .......................................................................
2022-10-25T06:40:47.515Z [MASTER] info: 
2022-10-25T06:40:47.516Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!
2022-10-25T06:40:47.516Z [MASTER] info: 
2022-10-25T06:40:47.516Z [MASTER] info: ........................................................................

Սեղմեք Ctrl + C գործընթացը դադարեցնելու համար:

Քայլ 7 - Ստեղծեք Systemd ծառայություն

Wiki.js-ը աշխատեցնելու վերը նշված գործընթացը ժամանակավոր է: Գործընթացը մշտական դարձնելու համար մենք պետք է ստեղծենք համակարգային ծառայություն, որպեսզի Wiki.js-ը գործարկի այն որպես ֆոնային ծառայություն: Սա թույլ կտա Wiki.js-ին աշխատել համակարգի վերաբեռնումների միջոցով:

Ստեղծեք systemd ծառայության ֆայլ Wiki.js-ի համար և բացեք այն խմբագրելու համար:

$ sudo nano /etc/systemd/system/wikijs.service

Դրա մեջ տեղադրեք հետևյալ կոդը. Փոխարինեք User փոփոխականի արժեքը ձեր համակարգի օգտագործողի անունով:

[Unit]
Description=Wiki.js
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always

User=navjot
Environment=NODE_ENV=production
WorkingDirectory=/var/www/wikijs

[Install]
WantedBy=multi-user.target

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

Վերբեռնեք համակարգի դեյմոնը:

$ sudo systemctl daemon-reload

Միացնել Wiki.js ծառայությունը:

$ sudo systemctl enable wikijs

Քայլ 8 - Տեղադրեք Nginx-ը

Ubuntu 22.04-ը մատակարարվում է Nginx-ի ավելի հին տարբերակով: Վերջին տարբերակը տեղադրելու համար անհրաժեշտ է ներբեռնել պաշտոնական Nginx պահոցը:

Ներմուծեք պաշտոնական Nginx բանալին:

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Ստեղծեք Nginx-ի պաշտոնական պահոցը:

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
  http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Ամրացրեք պահեստը, որպեսզի նախապատվությունը տրվի պաշտոնական ռեպոին՝ Ubuntu-ի փոխարեն:

$ echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
     | sudo tee /etc/apt/preferences.d/99nginx

Թարմացրեք համակարգի պահեստների ցանկը:

$ sudo apt update

Տեղադրեք Nginx սերվերը:

$ sudo apt install nginx -y

Ստուգեք տեղադրումը:

$ nginx -v
nginx version: nginx/1.22.1

Գործարկեք Nginx սերվերը:

$ sudo systemctl start nginx

Ստուգեք ծառայության կարգավիճակը:

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-25 06:50:05 UTC; 2s ago
       Docs: https://nginx.org/en/docs/
    Process: 5522 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 5523 (nginx)
      Tasks: 2 (limit: 1030)
     Memory: 1.8M
        CPU: 4ms
     CGroup: /system.slice/nginx.service
             ??5523 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??5524 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Oct 25 06:50:05 wiki systemd[1]: Starting nginx - high performance web server...

Քայլ 9 - Տեղադրեք SSL-ը

SSL վկայագիր ստեղծելու համար մենք պետք է տեղադրենք Certbot-ը: Կարող եք կա՛մ տեղադրել Certbot-ը՝ օգտագործելով Ubuntu-ի պահոցը, կա՛մ ձեռք բերել վերջին տարբերակը՝ օգտագործելով Snapd գործիքը: Մենք կօգտագործենք Snapd տարբերակը:

Ubuntu 22.04-ը գալիս է լռելյայն տեղադրված Snapd-ով: Գործարկեք հետևյալ հրամանները՝ համոզվելու համար, որ Snapd-ի ձեր տարբերակը արդիական է:

$ sudo snap install core
$ sudo snap refresh core

Տեղադրեք Certbot-ը:

$ sudo snap install --classic certbot

Օգտագործեք հետևյալ հրամանը՝ համոզվելու համար, որ Certbot հրամանը կարող է գործարկվել՝ ստեղծելով խորհրդանշական հղում դեպի /usr/bin գրացուցակը:

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Վկայագիրը տալու համար գործարկեք հետևյալ հրամանը.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email  -d wiki.example.com

Վերը նշված հրամանը վկայական կներբեռնի ձեր սերվերի /etc/letsencrypt/live/wiki.example.com գրացուցակում:

Ստեղծեք Diffie-Hellman խումբ վկայագիր:

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Ստուգեք Certbot-ի նորացման ժամանակացույցի ծառայությունը:

$ sudo systemctl list-timers

Դուք կգտնեք snap.certbot.renew.service որպես սպասարկվող ծառայություններից մեկը:

NEXT                        LEFT          LAST                        PASSED    UNIT                           ACTIVATES             

.................................................................................................................................
Tue 2022-10-25 00:00:00 UTC 17h left      Tue 2022-10-25 04:49:20 UTC 2h ago    logrotate.timer                logrotate.service
Tue 2022-10-25 02:39:09 UTC 20h left      Tue 2022-10-25 06:47:33 UTC 12min ago apt-daily.timer                apt-daily.service
Tue 2022-10-25 06:02:00 UTC 8h left       n/a                         n/a       snap.certbot.renew.timer       snap.certbot.renew.service

Կատարեք գործընթացի չոր գործարկում՝ ստուգելու, թե արդյոք SSL-ի նորացումը լավ է աշխատում:

$ sudo certbot renew --dry-run

Եթե սխալներ չեք տեսնում, ամեն ինչ պատրաստ է: Ձեր վկայականը ինքնաբերաբար կերկարաձգվի:

Քայլ 10 - Կարգավորեք Nginx-ը

Ստեղծեք և բացեք ֆայլը /etc/nginx/conf.d/wikijs.conf խմբագրման համար:

$ sudo nano /etc/nginx/conf.d/wikijs.conf

Դրա մեջ տեղադրեք հետևյալ կոդը.

# enforce HTTPS
server {
  listen 80;
  listen [::]:80;
  server_name wiki.example.com;
  return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name wiki.example.com;

    root /var/www/wikijs;

    access_log  /var/log/nginx/wiki.access.log;
    error_log   /var/log/nginx/wiki.error.log;

    http2_push_preload on; # Enable HTTP/2 Server Push

    ssl_certificate /etc/letsencrypt/live/wiki.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/wiki.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/wiki.example.com/chain.pem;
    ssl_session_timeout 1d;

    # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
    ssl_protocols TLSv1.2 TLSv1.3;

    # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
    # prevent replay attacks.
    #
    # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
    ssl_early_data on;

    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:50m;

    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    add_header X-Early-Data $tls1_3_early_data;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:3000;
    }
}

# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

Փոխարինեք վերը նշված ֆայլի արմատային տեղը ձեր սերվերի գրացուցակով:

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

Բացեք ֆայլը /etc/nginx/nginx.conf խմբագրման համար:

$ sudo nano /etc/nginx/nginx.conf

Ավելացրեք հետևյալ տողը include /etc/nginx/conf.d/*.conf; տողից առաջ:

server_names_hash_bucket_size  64;

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

Ստուգեք ձեր Nginx կոնֆիգուրացիան:

$ sudo nginx -t

Եթե սխալներ չեք տեսնում, նշանակում է, որ պատրաստ եք գնալ:

Սկսեք Wiki.js ծառայությունը:

$ sudo systemctl start wikijs

Վերբեռնեք Nginx սերվերը:

$ sudo systemctl reload nginx

Քայլ 11 - Ավարտեք տեղադրումը

Տեղադրումն ավարտելու համար այցելեք https://wiki.example.com URL-ը:

Լրացրեք ձեր ադմինիստրատորի հաշվի տվյալները և URL-ը: Անջատեք հեռաչափությունը՝ հեռացնելով Թույլատրել հեռաչափությունը տարբերակը: Դուք կարող եք անջատել այն նաև Administration վահանակից: Շարունակելու համար սեղմեք Տեղադրել կոճակը:

Դուք կտեղափոխվեք մուտքի էջ:

Մուտքագրեք ձեր հաշվի տվյալները և սեղմեք Մուտք գործեք կոճակը, որպեսզի անցնեք կառավարման էջ:

Այժմ կարող եք սկսել օգտվել Wiki.js-ից:

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

Սա ավարտում է մեր ձեռնարկը, որտեղ դուք սովորեցիք, թե ինչպես տեղադրել Wiki.js-ը Ubuntu 22.04 սերվերի վրա: Եթե ունեք հարցեր, տեղադրեք դրանք ստորև ներկայացված մեկնաբանություններում: