Skip to content

Wiki.js Nasıl Kurulur

SysMoon
2022-11-02 00:48:26 107 views
Wiki.js açık kaynaklı, hafif bir wiki yazılımıdır. Node.js JavaScript çerçevesi üzerine inşa edilmiştir. Geliştiriciler için bir Markdown editörü ve teknik olmayan kişiler için bir WYSIWYG editörü kullanarak dokümantasyon, wiki ve web içeriği yazmak için kullanılabilir. UML diyagramları, Tex veya MathML sözdizimi kullanan Matematik ifadeleri ve kod dahil olmak üzere birden çok içerik türünü destekler. Analitik, kimlik doğrulama, günlük kaydı, üçüncü taraf arama motorları ve içeriğinizi senkronize etmek için birden çok depolama hizmeti dahil olmak üzere çeşitli işlevler için birden çok modül içerir.

Bu öğreticide, proxy için PostgreSQL veritabanını ve Nginx sunucusunu kullanarak Wiki.js'yi Rocky Linux 9 sunucusuna kurmayı öğreneceksiniz.

Önkoşullar


  • Rocky Linux 9 çalıştıran bir sunucu.
  • Sudo ayrıcalıklarına sahip root olmayan bir kullanıcı.
  • Sunucunuza işaret eden tam nitelikli bir alan adı (FQDN). wiki.example.comAmaçlarımız için alan adı olarak kullanacağız .
  • Her şeyin güncellendiğinden emin olun.
    CODE_BLOCK_0
  • Temel yardımcı program paketlerini yükleyin. Bazıları zaten kurulmuş olabilir.
    CODE_BLOCK_1

Adım 1 - Güvenlik Duvarını Yapılandırın


İlk adım güvenlik duvarını yapılandırmaktır. Rocky Linux, Güvenlik Duvarı Güvenlik Duvarı kullanır. Güvenlik duvarının durumunu kontrol edin.

$ sudo firewall-cmd --state running

Güvenlik duvarı farklı bölgelerle çalışır ve genel bölge kullanacağımız varsayılan bölgedir. Güvenlik duvarında etkin olan tüm hizmetleri ve bağlantı noktalarını listeleyin.
$ sudo firewall-cmd --permanent --list-services

Aşağıdaki çıktıyı göstermelidir.

cockpit dhcpv6-client ssh


Wiki.js'nin çalışması için HTTP ve HTTPS bağlantı noktalarına ihtiyacı vardır. Onları aç.

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent


Değişiklikleri uygulamak için güvenlik duvarını yeniden yükleyin.

$ sudo firewall-cmd --reload


Adım 2 - PostgreSQL ve Yardımcı Programları Kurun


Rocky Linux 9, PostgreSQL'in eski bir sürümüyle birlikte gelir. Eğitimimiz için Postgres 14'ü kuracağız.

PostgreSQL için depo RPM'sini kurun.

$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm


PostgreSQL 14 sunucusunu kurun.

$ sudo dnf install -y postgresql14-server postgresql14-contrib


Veritabanını başlatın.

$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb


PostgreSQL hizmetini etkinleştirin ve başlatın.

$ sudo systemctl enable postgresql-14 --now


Hizmetin durumunu kontrol edin.

$ sudo systemctl status postgresql-14
? postgresql-14.service - PostgreSQL 14 database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2022-10-22 09:52:41 UTC; 2s ago
       Docs: https://www.postgresql.org/docs/14/static/
    Process: 103857 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
   Main PID: 103862 (postmaster)
      Tasks: 8 (limit: 5915)
     Memory: 16.6M
        CPU: 61ms
     CGroup: /system.slice/postgresql-14.service
             ??103862 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/
             ??103863 "postgres: logger "
             ??103865 "postgres: checkpointer "
             ??103866 "postgres: background writer "
             ??103867 "postgres: walwriter "
             ??103868 "postgres: autovacuum launcher "
             ??103869 "postgres: stats collector "
             ??103870 "postgres: logical replication launcher "

Oct 22 09:52:41 wiki.example.com systemd[1]: Starting PostgreSQL 14 database server...


Adım 3 - PostgreSQL'i Yapılandırın


PostgreSQL kabuğunda oturum açın.

$ sudo -i -u postgres psql


Wiki.js için yeni bir veritabanı oluşturun.

postgres=# CREATE DATABASE wikidb;


Güçlü bir parola ile yeni bir veritabanı kullanıcısı oluşturun.

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


Kullanıcıya veritabanını kullanma haklarını verin.

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


Postgres Shell'den çıkın.

postgres=# \q


Adım 4 - Node.js'yi yükleyin


Wiki.js, bu öğreticiyi yazarken Düğüm v16'yı destekler.

Aşağıdaki komutu kullanarak Düğüm deposunu kurun.

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


Node yükleyin.

$ sudo dnf install nodejs -y


Düğüm kurulumunu doğrulayın.

$ node --version
v16.18.0


Adım 5 - Wiki.js'yi İndirin


Wiki.js'yi yüklemek için bir klasör oluşturun.

$ sudo mkdir -p /var/www/wikijs


Şu anda oturum açmış olan kullanıcıyı klasörün sahibi olarak ayarlayın.

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


Dizine geçin ve Wiki.js kod arşivini indirin.

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


İndirilen arşivi çıkarın.

$ tar xzf wiki-js.tar.gz


Adım 6 - Wiki.js'yi Yapılandırın ve Çalıştırın


Örnekten yapılandırma dosyasını oluşturun.

$ cp config.sample.yml config.yml


Düzenlemek için yapılandırma dosyasını açın.

$ nano config.yml


Aşağıdaki veritabanı ayarlarını bulun ve değerlerini 3. adımda yapılandırılanlarla güncelleyin.

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


Satırı bulun bindIP: 0.0.0.0ve aşağıdaki gibi güncelleyin.

bindIP: 127.0.0.1


Bu, WIki.js'nin geridöngü adresini dinlemesini sağlayacaktır çünkü dışarıdan erişmek için Nginx proxy'sini kullanacağız.

Dosyayı Ctrl + X tuşlarına basarak ve istendiğinde Y girerek kaydedin.

Aşağıdaki komutu kullanarak Wiki.js'yi çalıştırın.

$ node server


Başarılı bir yüklemeyi onaylayan benzer bir çıktı alacaksınız.

2022-10-22T10:25:48.187Z [MASTER] info: =======================================
2022-10-22T10:25:48.190Z [MASTER] info: = Wiki.js 2.5.289 =====================
2022-10-22T10:25:48.191Z [MASTER] info: =======================================
2022-10-22T10:25:48.191Z [MASTER] info: Initializing...
2022-10-22T10:25:49.079Z [MASTER] info: Using database driver pg for postgres [ OK ]
2022-10-22T10:25:49.086Z [MASTER] info: Connecting to database...
2022-10-22T10:25:49.117Z [MASTER] info: Database Connection Successful [ OK ]
2022-10-22T10:25:49.467Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode...
2022-10-22T10:25:49.468Z [MASTER] info: Starting setup wizard...
2022-10-22T10:25:49.740Z [MASTER] info: Starting HTTP server on port 3000...
2022-10-22T10:25:49.741Z [MASTER] info: HTTP Server on port: [ 3000 ]
2022-10-22T10:25:49.745Z [MASTER] info: HTTP Server: [ RUNNING ]
2022-10-22T10:25:49.745Z [MASTER] info: .......................................
2022-10-22T10:25:49.745Z [MASTER] info:
2022-10-22T10:25:49.746Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!


İşlemi durdurmak için Ctrl + C tuşlarına basın .

Adım 7 - Bir Systemd Hizmeti Kurun


Wiki.js'yi çalışır durumda tutmak için yukarıdaki süreç geçicidir. Süreci kalıcı hale getirmek için Wiki.js'nin arka plan hizmeti olarak çalıştırması için bir systemd hizmeti oluşturmamız gerekecek. Bu, Wiki.js'nin sistem yeniden başlatmalarında çalışmasına izin verecektir.

Wiki.js için bir systemd hizmet dosyası oluşturun ve düzenlemek için açın.

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


İçine aşağıdaki kodu yapıştırın. Değişkenin değerini Usersistem kullanıcınızın adıyla değiştirin.

[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


Dosyayı Ctrl + X tuşlarına basarak ve istendiğinde Y girerek kaydedin.

Sistem arka plan programını yeniden yükleyin.

$ sudo systemctl daemon-reload


Wiki.js hizmetini etkinleştirin.

$ sudo systemctl enable wikijs


Adım 8 - Nginx'i yükleyin


Rocky Linux, Nginx'in eski bir sürümüyle birlikte gelir. En son sürümü yüklemek için resmi Nginx deposunu indirmeniz gerekir.

Resmi Nginx deposunu oluşturmak için dosyayı oluşturun ve açın . /etc/yum.repos.d/nginx.repo

$ sudo nano /etc/yum.repos.d/nginx.repo


İçine aşağıdaki kodu yapıştırın.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true


Dosyayı Ctrl + X tuşlarına basarak ve istendiğinde Y girerek kaydedin.

Nginx sunucusunu kurun.
$ sudo dnf install nginx -y


Kurulumu doğrulayın.

$ nginx -v
nginx version: nginx/1.22.1


Nginx sunucusunu etkinleştirin ve başlatın.

$ sudo systemctl enable nginx --now


Sunucunun durumunu kontrol edin.

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2022-10-22 11:15:39 UTC; 49min ago
       Docs: http://nginx.org/en/docs/
    Process: 116236 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 116237 (nginx)
      Tasks: 2 (limit: 5915)
     Memory: 5.0M
        CPU: 245ms
     CGroup: /system.slice/nginx.service
             ??116237 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??116238 "nginx: worker process"

Oct 22 11:15:39 wiki.example.com systemd[1]: Starting nginx - high performance web server...


9. Adım - SSL'yi yükleyin


SSL sertifikaları vermek için Snapd aracını kullanarak Certbot aracını kullanacağız. EPEL deposunun çalışması gerekir.

$ sudo dnf install epel-release


Certbot'u kurmak için Snapd kullanacağız. Snapd'i yükleyin.

$ sudo dnf install snapd


Snap hizmetini etkinleştirin ve başlatın.

$ sudo systemctl enable snapd.socket --now


Snapd'in çalışması için gerekli bağlantıları oluşturun.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH😕var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh


Çekirdek Snapd deposunu yükleyin.

$ sudo snap install core
$ sudo snap refresh core


Certbot'u yükleyin.

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


Sertifikayı oluşturun. Aşağıdaki komut ayrıca Nginx'i otomatik olarak yapılandıracaktır.

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


/etc/letsencrypt/live/wiki.example.comYukarıdaki komut , sunucunuzdaki dizine bir sertifika indirecektir .

Bir Diffie-Hellman grup sertifikası oluşturun.

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


SSL yenilemesinin düzgün çalışıp çalışmadığını kontrol etmek için işlemi kuru bir şekilde çalıştırın.

$ sudo certbot renew --dry-run


Herhangi bir hata görmüyorsanız, hazırsınız demektir. Sertifikanız otomatik olarak yenilenecektir.

Adım 10 - SELinux'u yapılandırın


Wiki.js dizinine doğru SELinux bağlamını uygulamak için aşağıdaki komutları çalıştırın.

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wikijs(/.*)?"
$ sudo restorecon -Rv /var/www/wikijs


HTTP için bir bağlantı noktası oluşturun ve Wiki.js'nin SELinux ile çalışmasını sağlamak için bunu 3000'e atayın.

$ sudo semanage port -a -t http_port_t -p tcp 3000


Nginx'in ağa bağlanmasına izin verin.

$ sudo setsebool -P httpd_can_network_connect 1


Adım 11 - Nginx'i Yapılandırın


Dosyayı oluşturun ve /etc/nginx/conf.d/wikijs.confdüzenlemek için açın.

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


İçine aşağıdaki kodu yapıştırın.

# 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😖SL: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 "";
}


Yukarıdaki dosyadaki kök konumu sunucunuzdaki diziyle değiştirin.

Dosyayı Ctrl + X tuşlarına basarak ve istendiğinde Y girerek kaydedin.

/etc/nginx/nginx.confDüzenlemek için dosyayı açın .

$ sudo nano /etc/nginx/nginx.conf


Satırdan önce aşağıdaki satırı ekleyin include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;


Dosyayı Ctrl + X tuşlarına basarak ve istendiğinde Y girerek kaydedin.

Nginx yapılandırmanızı doğrulayın.

$ sudo nginx -t


Herhangi bir hata görmüyorsanız, gitmeye hazırsınız demektir.

Wiki.js hizmetini başlatın.

$ sudo systemctl start wikijs


Nginx sunucusunu yeniden yükleyin.

$ sudo systemctl reload nginx


Adım 12 - Kurulumu Tamamlayın


https://wiki.example.comKurulumu tamamlamak için URL'yi ziyaret edin .



Yönetici hesabı ayrıntılarınızı ve URL'yi girin. Telemetriye İzin Ver seçeneğinin işaretini kaldırarak Telemetriyi devre dışı bırakın . Yönetim panelinden de devre dışı bırakabilirsiniz. Devam etmek için Yükle düğmesine tıklayın .

Giriş sayfasına yönlendirileceksiniz.



Hesap bilgilerinizi girin ve yönetim sayfasına ilerlemek için Giriş yap düğmesine tıklayın.



Artık Wiki.js'yi kullanmaya başlayabilirsiniz.

Çözüm


Bu, Wiki.js'yi bir Rocky Linux 9 sunucusuna nasıl kuracağınızı öğrendiğiniz öğreticimizi sonlandırıyor. Herhangi bir sorunuz varsa, bunları aşağıdaki yorumlara gönderin.
Howtoforge'dan çeviri yapılmıştır.