Ինչպես տեղադրել Wiki.js-ը Ubuntu 22.04 LTS-ում
Այս ձեռնարկը գոյություն ունի ՕՀ-ի այս տարբերակների համար
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 18.04 (Bionic Beaver)
Այս էջում
- Նախադրյալներ
- Քայլ 1 - Կարգավորել Firewall-ը
- Քայլ 2 - Տեղադրեք PostgreSQL և Utilities
- Քայլ 3 - Կարգավորեք PostgreSQL
- Քայլ 4 - Տեղադրեք Node.js-ը
- Քայլ 5 - Ներբեռնեք Wiki.js-ը
- Քայլ 6 - Կարգավորեք և գործարկեք Wiki.js-ը
- Քայլ 7 - Ստեղծեք Systemd ծառայություն
- Քայլ 8 - Տեղադրեք Nginx-ը
- Քայլ 9 - Տեղադրեք SSL-ը
- Քայլ 10 - Կարգավորեք Nginx-ը
- Քայլ 11 - Ավարտեք տեղադրումը
- Եզրակացություն
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 սերվերի վրա: Եթե ունեք հարցեր, տեղադրեք դրանք ստորև ներկայացված մեկնաբանություններում: