Kategori arşivi: Debian

debian işletim sistemi hakkında bilgiler, debian yapılandırma örnekleri, debian güvenlik önlemleri ve performans iyileştirmeleri, güncel haberler

Debian 10 Üzerine PHP 7.4 Kurulumu

Bazı uygulamalarda PHP 7.3 desteği yavaş yavaş kaldırılmaya başlandı bile, bu sebeple PHP sürümü yükseltmek isteyen arkadaşlarımız olabilir, bu noktada debian işletim sisteminde aşağıdaki değişikliklerin yapılması gerekmektedir.

apt -y install lsb-release apt-transport-https ca-certificates 
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Güncel repo dahil edildikten sonra güncelleme komutu verilir.

apt update

Gerekli olan modüllerle birlikte sisteme kurulum gerçekleştirilir.

apt install php7.4
apt install php7.4-{bcmath,bz2,intl,gd,mbstring,mysql,zip,xml,fpm}

Debian 10 Üzerine Node.js Kurulumu

Node.JS v10.x serisinin kurulumu

curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install -y nodejs npm build-essential

Node.JS v12.x serisinin kurulumu

curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
apt install -y nodejs npm build-essential

Node.JS v14.x serisinin kurulumu

curl -sL https://deb.nodesource.com/setup_14.x | bash -
apt-get install -y nodejs npm build-essential

Nvm Kurulumu

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

Aşağıdaki satırları ~/.bash_profile~/.zshrc~/.profile, veya ~/.bashrc dosyanıza eklemeyi unutmayınız.

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

Debian 10 Üzerine Zabbix Agent Kurulumu

Bu bash script Zabbix Agent kurulumu içindir, 1.1.1.1 IP adresini zabbit sunucunuzun IP adresi ile değiştirmeyi unutmayınız.

#!/bin/bash -e

if [ "$UID" -ne 0 ]; then
  echo "Please run as root"
  exit 1
fi

# Only run it if we can (ie. on Ubuntu/Debian)
if [ -x /usr/bin/apt-get ]; then
  apt-get update
  apt-get -y install zabbix-agent sysv-rc-conf
  sysv-rc-conf zabbix-agent on
  sed -i 's/Server=127.0.0.1/Server=1.1.1.1/' /etc/zabbix/zabbix_agentd.conf
  sed -i 's/ServerActive=127.0.0.1/ServerActive=1.1.1.1/' /etc/zabbix/zabbix_agentd.conf
  HOSTNAME=`hostname` && sed -i "s/Hostname=Zabbix\ server/Hostname=$HOSTNAME/" /etc/zabbix/zabbix_agentd.conf
  service zabbix-agent restart
fi

Grafana Kurulumu ve Yapılandırılması

Metrikleri düzgün bir biçimde görüntülemek ve yönetmek amacıyla kullanabileceğiniz bir uygulamadır, kendileri pek tatlı bir arayüze sahiptir.

Nasıl Kurulur?

Kurulumu debiana yapacağız aşağıdaki gibi sisteme ekleyelim.

sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_7.0.5_amd64.deb
sudo dpkg -i grafana_7.0.5_amd64.deb

Kurulum tamamlandıktan sonra servisi başlatalım

systemctl start grafana-server
systemctl enable grafana-server

Ardından 3000 portu üzerinden sisteme erişim sağlanabilir. Bunun yerine sub domain üzerinden erişmek isterseniz. NGINX Reverse Proxy Üzerinden Grafana’ya Erişim makalesi aracılığı ile bu işi basit bir şekilde gerçekleştirebilirsiniz.

Prometheus Kurulumu Ve Yapılandırılması

Sistemleri izlemek için çok doğru bir uygulama tercih ettiğinizi şimdiden söyleyeyim, bu uygulama piyasadaki diğerlerine göre efsane ötesi işler sunar.

Nasıl Kurulur?

Sisteme öncelikli olarak yeni birer kullanıcı açıyoruz.

useradd --no-create-home --shell /bin/false prometheus
mkdir /etc/prometheus
mkdir /var/lib/prometheus
chown prometheus:prometheus /etc/prometheus
chown prometheus:prometheus /var/lib/prometheus

Sistem dosyalarını indirip gerekli yerlere çıkartalım

curl -LO https://github.com/prometheus/prometheus/releases/download/v2.19.2/prometheus-2.19.2.linux-amd64.tar.gz
tar -xvf prometheus-2.19.2.linux-amd64.tar.gz
mv prometheus-2.19.2.linux-amd64 prometheus

Çıkartılan dosyaları gereken izinlerle birlikte düzenleyelim ve taşıyalım.

cp prometheus/prometheus /usr/local/bin/
cp prometheus/promtool /usr/local/bin/
chown prometheus:prometheus /usr/local/bin/prometheus
chown prometheus:prometheus /usr/local/bin/promtool

cp -r prometheus/consoles /etc/prometheus
cp -r prometheus/console_libraries /etc/prometheus
chown -R prometheus:prometheus /etc/prometheus/consoles
chown -R prometheus:prometheus /etc/prometheus/console_libraries

Prometheus Yapılandırma

Şimdi sıra geldi izlenecek yerleri eklemeye bunun için prometheus.yml dosyasını düzenlemeliyiz.

nano /etc/prometheus/prometheus.yml

Şu şekilde ekliyoruz

# Global config
global:
  scrape_interval: 10s
  scrape_timeout: 10s

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 15s
    static_configs:
      - targets: ['localhost:9090']

Yetkisinide bizim kullanıcı için verelim.

chown prometheus:prometheus /etc/prometheus/prometheus.yml

Servisini yapılandıralım

nano /etc/systemd/system/prometheus.service

İçerisine aşağıdakini ekliyoruz.

[Unit]
Description=Prometheus systemd service unit
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries \
--web.enable-admin-api \
--web.listen-address=localhost:9090 \
--web.external-url=http://localhost:9090

SyslogIdentifier=prometheus
Restart=always

[Install]
WantedBy=multi-user.target

Servisi başlatıyoruz.

systemctl daemon-reload
systemctl start prometheus

Artık servisleri izlemek için gereken eklemeleri yapabilirsiniz, ayrıca Prometheus Node Exporter Kullanarak Linux Sunucuların İzlenmesi makalesine göz atabilir, izlemek için kullanılacak olan agenti sistemlerinize dahil edebilirsiniz.

Debian 10 Üzerine Atlas Ripe NCC Software Probe Kurulumu

Otomatik güncelleme desteği

docker run -d -v /var/run/docker.sock:/var/run/docker.sock --name watchtower containrrr/watchtower --cleanup --label-enable

Otomatik güncelleme desteğiyle probe ayağa kaldırma

docker run --detach --restart=always --log-opt max-size=10m --cpus=1 --memory=64m --memory-reservation=64m --cap-add=SYS_ADMIN --cap-add=CAP_NET_RAW --cap-add=CAP_CHOWN --mount type=tmpfs,destination=/var/atlasdata,tmpfs-size=64M -v /var/atlas-probe/etc:/var/atlas-probe/etc -v /var/atlas-probe/status:/var/atlas-probe/status -e RXTXRPT=yes --name ripe-atlas --hostname "$(hostname --fqdn)" --label=com.centurylinklabs.watchtower.enable=true jamesits/ripe-atlas:latest

Public Key tedarik edilmesi

cat /var/atlas-probe/etc/probe_key.pub

Bu key buradan kayıt edilecek. Ardından mail ile bildirim gelir.

Debian 10 Üzerine Trilium Notes Kurulumu

Not tutma amacıyla bir kaç açık kaynak projeye göz atıyordum, daha sonradan beni ne olduğu belirsiz bir sürü not uygulaması linkine boğdular. Üşenmedim bunlardan 4-5 tanesini kurup denedim. Kurulumu ve kullanımı kanser olan Trilium Notes denen ve nodejs ile yazılan kişisel not tutma uygulamasının kurulumunda ki eksiklikleri düzelticem, günün birinde kullanırsam vs diye tüm bu çaba

Öncelikli olarak NodeJS sürümü legacy olacak yani v10 serisinden kullanacaksınız. Aşağıdakileri kurmaya başlayalım.

apt install nodejs npm

Hem uygulamaya hemde sisteme gerekli olan paketleri bir güzel kuralım

apt install libpng16-16 libpng-dev pkg-config autoconf libtool build-essential nasm libx11-dev libxkbfile-dev

Bu işlemler tamamlandıysa şimdi gerekli paketi sisteme çekelim. Ben bunun için git kullandım çünkü uygulamada otomatik güncelleme yok, hiç değilse git pull diyerek otomatik olarak güncellemeleri sisteme indirme imkanım var.

git clone -b stable https://github.com/zadam/trilium.git
cd trilium
npm install

npm install dediğiniz anda cümbüş başlayacak, NodeJs uygulamalarını özellikle sevmeme nedenim, bir sürü paket kurup disk IO’sunun anasını ağlatmasıdır.

Bu uygulama sisteme zafiyetli bir kaç paketide dahil ediyor. Sonrasında başımıza bir iş gelirse sorumlusu zadam denen bu geliştirici.

Geldik uygulamanın çalıştırılması kısmına, bu noktada bu geliştirici gidip bi systemd servisi yazmaya tenezül etmemiş. (açık kaynak projelerin genelinde düzgün belgelendirme haliyle olmaz.)

Ben sistemde servis için bi kullanıcı açayım, direk root ile işlem yapmak hoş olmaz, göstermelik bi user olsun yetkisi olmasın yeter.

sudo useradd -rs /bin/false trilium

Düzenlediğim servis dosyam şu şekilde, burada node yolunu doğru vermezsen caz yapar. Birde Env tanımlaması yapmalısın.

[Unit]
Description=Trilium Server
After=network.target

[Service]
User=trilium
Group=trilium
Type=simple
Environment="TRILIUM_DATA_DIR=/home/trilium/trilium-data"
ExecStart=/usr/bin/node /home/trilium/trilium/src/www  

[Install]
WantedBy=multi-user.target

Sitede denemek için kullandığım nginx yapılandırmam. Burada önemli olan proxy yapılan nokta ve yapılandırma

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        # SSL
        ssl_certificate /root/.acme.sh/mertcangokgoz.com/mertcangokgoz.com.cer;
        ssl_certificate_key /root/.acme.sh/mertcangokgoz.com/mertcangokgoz.com.key;
        ssl_trusted_certificate /root/.acme.sh/mertcangokgoz.com/fullchain.cer;

        server_name notes.mertcangokgoz.com;

	location / {
	    proxy_pass ;
	    proxy_http_version 1.1;
	    proxy_set_header Upgrade $http_upgrade;
	    proxy_set_header Connection 'upgrade';
	    proxy_set_header Host $host;
	    proxy_cache_bypass $http_upgrade;
		}
}

Bu adımdan sonra kurulumu yapıp, not tutmaya geçiyoruz, web socket kullanıyor bu uygulama CloudFlare vb sistem kullanılıyorsa mümkünse gereken ayarı yap.

Debian’da Release Info Uyarısının Çözümü

Gerekli gereksiz debian tarafında güncelleme yapıldıktan hemen sonra aşağıdaki gibi bir takım uyarılar görüyorsanız. Sistemdeki mevcut paketlerin güncellenmesi engelleniyorsa.

38 packages can be upgraded. Run 'apt list --upgradable' to see them.
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
N: Repository 'http://mirror.hetzner.de/debian/packages buster InRelease' changed its 'Version' value from '10.2' to '10.3'
N: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Version' value from '10.2' to '10.3'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

Apt kardeşimize konu hakkında bilgi vermemiz gerekiyor, sürüm ile ilgili bilgileri değiştiren bir repodan indirme işlemine devam etmesini sağlamak için aşağıdaki komutu çalıştırın.

sudo apt --allow-releaseinfo-change update

Genelde bu uyarıyı major sürümlerden hemen sonra yapacağınız ilk update komutuyla birlikte alırsınız.

N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

Satırları gözükmüyorsa, sistem otomatik olarak değişikliği gerçekleştirecektir. --allow-releaseinfo-change update komutunu kullanmanıza gerek olmaz.

Screen Üzerinde Zaten Bağlı Bir Ekrana Bağlanmak

Kimi zaman screen komutunu kullandığınızda kazayla shelli kapatmanız veya o esnada bi ufak elektrik gitmesi ile screen bağlı bir şekilde kalabiliyor.(zaten amaçta o)

Haliyle gelip tekrar screen -r example komutunu veriyorsunuz oda size aşağıdaki gibi bir uyarıda bulunuyor.

There is a screen on:
	12801.example	(Attached)
There is no screen to be resumed matching foo.

Zaten açık olan screeni direk kapatabilirsiniz(-rd ile), ama içeride önemli bir işlem yapıyorsunuz veya zaten bu gibi saçma durumlarda işlem kesintiye uğramasın diye açmışsınız niye tamamen kapatasınız.

Şimdi direk açık olan o screen kardeşimize tekrar geçiş yapacağız.

screen -x example

Tekrar yaptığınız iş önünüze şak diye geri geldi, hadi hayırlı olsun

Linux Makinelerde Intel Turbo Boost Kapatma

Gece boyunca laptobu açık tutmam gerektiği zamanlarda fanın seslerini azaltmam gerekiyor. Genelde bu linux makinelerde işi zorlaştırıyor. Ben ise alias tanımladım ve kolay bir şekilde Intel Turbo Boost kapatıyorum.

P-State sürücüsünün aktif (governor) veya pasif (cpufreq) modunda çalıştığından emin olmayı unutmayın.

cat /sys/devices/system/cpu/intel_pstate/status

Çıktı olarak active yazıyorsa, P-State aktif olarak çalışıyor demektir. Birde Intel Turbo Boost durumuna bakıyoruz.

cat /sys/devices/system/cpu/intel_pstate/no_turbo

çıktımız eğer 0 ise bahsi geçen turbo boost çalışıyordur. Kapatmak için bunu 1 yapmamız gerekiyor.

echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo

dipnot: SandyBridge ve üstü işlemciler için geçerlidir.

Debian 9’da DHCP Sunucusu Nasıl Yapılandırılır?

Kullanılacak olan DHCP sunucusu içerisinde yapılacak ayarlamalar aşağıdaki gibidir. Kurulan DHCP sunucusu 67/UDP portundan hizmet verecek

root@debian:~# apt -y install isc-dhcp-server

Yapılandırma için uygulanacak adımlar

root@debian:~# nano /etc/default/isc-dhcp-server
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
# IPv6 Kullanılacaksa aktif edebilirsiniz.
INTERFACESv4="eth0"
#INTERFACESv6=""
root@debian:~# neno /etc/dhcp/dhcpd.conf
# özel bir domain adı belirleme
option domain-name "hastane.local";
# host adına veya IP adresine özel domain
option domain-name-servers hastane.local.lo;
authoritative;

# networkde dağıtılacak ip aralığı ve tanımlamalar
subnet 10.0.0.0 netmask 255.255.255.0 {
     # yönlendirici
     option routers 10.0.0.1;
     # subnet
     option subnet-mask 255.255.255.0;
     # networkde dağıtılacak ip aralığını belirtme
     range dynamic-bootp 10.0.0.200 10.0.0.254;
}
root@debian:~# systemctl restart isc-dhcp-server

Debian 9’da djbdns Nasıl Kurulur?

Djbdns debian repolarında bulunmuyor lakin kurulumu yapabiliriz tabii ki derleyeceğiz, farklı bir dns sunucusu keyfi yaşatacağından emin olabilirsiniz.

daemontools, daemontools-run ve ucspi-tcp paketlerine ihtiyacımız var kurulumlarını gerçekleştirelim.

apt install daemontools daemontools-run ucspi-tcp

djbdns kurabilmemiz için ayrıca derleyici araçları elinizde bulunması gerekiyor.

apt install build-essential

şimdi djbdns indirelim ve kaynaktan derleme işlemine başlayalım.

wget <http://cr.yp.to/djbdns/djbdns-1.05.tar.gz>
tar xf djbdns-1.05.tar.gz
cd djbdns-1.05/
echo gcc -O2 -include /usr/include/errno.h > conf-cc
make
make setup check

tinydns ve dnslog için gerekli kullanıcıları ekliyoruz.

useradd --no-create-home --shell /bin/false Gtinydns
useradd --no-create-home --shell /bin/false Gdnslog

tinydns temel ayarlamalarını aşağıdaki komut ile başlatıyoruz.

tinydns-conf Gtinydns Gdnslog /etc/tinydns <SERVER_IP>
ln -s /etc/tinydns /etc/service

Her şey tamamdır aşağıdaki komut ile çalışıyor mu diye kontrol edelim.

ps uax | grep tinydns

Aşağıdaki çıktının gözükmesi beklenir.

root      1657  0.0  0.0   4056   696 ?        S    21:05   0:00 supervise tinydns
tinydns   1659  0.0  0.0   4192  1168 ?        S    21:05   0:00 /usr/local/bin/tinydns
tinydns   1660  0.0  0.0   4072   676 ?        S    21:05   0:00 multilog t ./main

Kurulumunuz tamamlandı güle güle kullanabilirsiniz.