• Merhabalar sevgili dostlar, Rabbyte.net olarak kuruluş ve sürdülüş amacımız; Tamamen ücretsiz olarak Veri barındırma (Hosting) sektörü için döküman ve faydalı içerik paylaşmaktır, bu amacımıza giderken tüm dünyadan faydalı dökümanları alıp anlaşılabilir biçimde temizleyip size sunmaktr. Hedefimiz doğrultusunda 2019'dan bu güne kadar sabırla devam etmekteyiz, Siz değerli dostlarımıza Türkçe kaynak üretirken herhangi bir beklentimiz asla olmadı ve olmayacaktır. Saygılar ve sevgilerle....

Wiki.js Nasıl Kurulur

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.
    Kod:
    $ sudo dnf update

  • Temel yardımcı program paketlerini yükleyin. Bazıları zaten kurulmuş olabilir.
    Kod:
    $ sudo dnf install wget curl nano unzip yum-utils -y

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.

Kod:
$ 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.
Kod:
$ sudo firewall-cmd --permanent --list-services
Aşağıdaki çıktıyı göstermelidir.

Kod:
cockpit dhcpv6-client ssh

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

Kod:
$ 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.

Kod:
$ 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.

Kod:
$ 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.

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

Veritabanını başlatın.

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

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

Kod:
$ sudo systemctl enable postgresql-14 --now

Hizmetin durumunu kontrol edin.

Kod:
$ 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.

Kod:
$ sudo -i -u postgres psql

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

Kod:
postgres=# CREATE DATABASE wikidb;

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

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

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

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

Postgres Shell'den çıkın.

Kod:
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.

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

Node yükleyin.

Kod:
$ sudo dnf install nodejs -y

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

Kod:
$ node --version
v16.18.0

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

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

Kod:
$ sudo mkdir -p /var/www/wikijs

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

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

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

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

İndirilen arşivi çıkarın.

Kod:
$ 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.

Kod:
$ cp config.sample.yml config.yml

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

Kod:
$ nano config.yml

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

Kod:
# 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.

Kod:
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.

Kod:
$ node server

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

Kod:
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.

Kod:
$ 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.

Kod:
[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.

Kod:
$ sudo systemctl daemon-reload

Wiki.js hizmetini etkinleştirin.

Kod:
$ 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

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

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

Kod:
[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.
Kod:
$ sudo dnf install nginx -y

Kurulumu doğrulayın.

Kod:
$ nginx -v
nginx version: nginx/1.22.1

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

Kod:
$ sudo systemctl enable nginx --now

Sunucunun durumunu kontrol edin.

Kod:
$ 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.

Kod:
$ sudo dnf install epel-release

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

Kod:
$ sudo dnf install snapd

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

Kod:
$ sudo systemctl enable snapd.socket --now

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

Kod:
$ 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.

Kod:
$ sudo snap install core
$ sudo snap refresh core

Certbot'u yükleyin.

Kod:
$ 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.

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

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

Bir Diffie-Hellman grup sertifikası oluşturun.

Kod:
$ 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.

Kod:
$ 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.

Kod:
$ 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.

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

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

Kod:
$ 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.

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

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

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

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 .

Kod:
$ sudo nano /etc/nginx/nginx.conf

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

Kod:
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.

Kod:
$ sudo nginx -t

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

Wiki.js hizmetini başlatın.

Kod:
$ sudo systemctl start wikijs

Nginx sunucusunu yeniden yükleyin.

Kod:
$ sudo systemctl reload nginx

Adım 12 - Kurulumu Tamamlayın​

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

wikijs-setup-page.png


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.

wikijs-login-page.png


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

wikijs-admin-page.png


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.
 
Üst