- Kurumsal bir APT deposu kurmamın nedenleri nelerdir?
- APT deposu oluşturmak neden önemlidir?
- Yöntemlerin hızlı karşılaştırması
- Ön koşullar
- APT tankının temel yapısı
- Basit yöntem: dpkg-scanpackages
- Standart ve profesyonel yöntem: reprepro
- Modern yöntem: uygun şekilde (üretim için önerilir)
- Güvenlik ipuçları ve en iyi uygulamalar
- İstemci Yapılandırması (Pratik Örnek)
- Otomasyon ve CI/CD
- Performans ve ölçeklenebilirlik optimizasyonu
- Belirli durumlar için özel ipuçları
- Özet ve Başlangıç Kontrol Listesi
- Önerilen hosting hizmetleri
- Sıkça Sorulan Sorular
Kurumsal bir APT deposu kurmamın nedenleri nelerdir?
Bu pratik ve uzman kılavuzda, Debian/Ubuntu sunucusunda APT deposunun nasıl kurulacağını ve yönetileceğini adım adım açıklıyoruz. Geliştiriciler, sistem yöneticileri, DevOps ekipleri ve dahili paketleri (.deb) dağıtması veya özel paketler yayınlaması gereken şirketler için uygundur.
Avantajları: Manuel yükleme gerektirmeyen, sürüm kontrolü ve bağımlılık yönetimine ihtiyaç duymayan paketlerin dahili dağıtımı, CI/CD ile entegrasyon (örneğin GitLab CI) ve hızlı dağıtım için CDN ve uç noktaların kullanılabilmesi.
APT deposu oluşturmak neden önemlidir?
Bir APT deposu, paketleri merkezi olarak yayınlamanıza, bağımlılıkları kontrol etmenize ve sürüm yayınlarını otomatikleştirmenize olanak tanır. Küresel kullanıcıları olan kuruluşlar için, bir CDN veya içerik dağıtım ağı kullanmak, gecikmeyi ve kaynak üzerindeki yükü azaltır.
Herkese açık depolama alanları için, saldırılara ve yüksek trafiğe karşı dayanıklı kalmak amacıyla DDoS koruma ve CDN hizmetleri kullanın.
Yöntemlerin hızlı karşılaştırması
dpkg-paketleri taramaBasit, hızlı ve küçük ortamlar için uygundur. Basit yapılandırma ancak sınırlı yönetim.
yeniden hazırlama: Kuruluşlar için uygundur; çoklu dağıtım yönetimi, yansıtma ve içe/dışa aktarma desteği.
uygun bir şekildeModern ve güçlü; anlık görüntü alma, S3'e yayınlama, sürüm yönetimi ve esnek yayınlama.
Ön koşullar
Kurulum için gerekenler:
- Erişim imkanı olan Debian/Ubuntu sunucusu kök Veya sudo
- Web sunucusu (Nginx/Apache) veya S3/CDN kullanmak
- Yayınlama imzalama için GPG
- Gerekli araçları kurun (örneğin, reprepro veya aptly).
Temel paketlerin kurulumuna örnek:
sudo apt update && sudo apt install nginx gnupg2 apt-utils dpkg-dev
# برای reprepro یا aptly:
sudo apt install reprepro
# یا برای aptly (ممکن است پکیج در مخازن رسمی نباشد و نیاز به نصب از بستههای پروژه باشد)APT tankının temel yapısı
Bir APT deposunun genel yapısı aşağıdaki dalları içermelidir:
- dağıtımlar/ / /ikili- /Paketler(.gz)
- havuz/ /package.deb
- dağıtımlar/ /Release ve Release.gpg (imza)
Örnek dosya yapısı:
/var/www/html/apt-repo/
├── dists/
│ └── focal/
│ └── main/
│ └── binary-amd64/
│ └── Packages.gz
└── pool/
└── main/
└── your-package_1.0.0_amd64.debBasit yöntem: dpkg-scanpackages
Küçük ve özel akvaryumlar için uygundur. Genel adımlar:
- Dizin oluşturma ve sahibini belirleme:
sudo mkdir -p /var/www/html/apt-repo/{dists/focal/main/binary-amd64,pool/main}
sudo chown -R $USER:$USER /var/www/html/apt-repoPaketi havuza kopyala:
cp mypackage_1.0.0_amd64.deb /var/www/html/apt-repo/pool/main/Paketler dosyasını oluşturma ve sıkıştırma:
cd /var/www/html/apt-repo
dpkg-scanpackages pool /dev/null | gzip -9c > dists/focal/main/binary-amd64/Packages.gzYayın dosyasını manuel olarak oluşturma:
cat > dists/focal/Release <<EOF
Origin: MyRepo
Label: MyRepo
Suite: stable
Codename: focal
Architectures: amd64
Components: main
Description: Internal APT repository
EOFGPG ile Onay Belgesi İmzalama (önerilir):
gpg --default-key "[email protected]" --output dists/focal/Release.gpg --detach-sign --armor dists/focal/Releaseİstemci tarafında signed-by kullanarak depo ekleme örneği:
echo "deb [signed-by=/usr/share/keyrings/myrepo.gpg] https://repo.example.com/apt-repo focal main" | sudo tee /etc/apt/sources.list.d/myrepo.list
sudo apt updateStandart ve profesyonel yöntem: reprepro
Reprepro, birden fazla dağıtım ve bileşeni yönetmek için uygundur ve kurumsal süreçlerle iyi bir şekilde entegre olur.
Kurulum:
sudo apt install repreproYapı ve klasör oluşturma:
sudo mkdir -p /var/www/html/repo
cd /var/www/html/repo
sudo mkdir conf db dists poolÖrnek conf/distributions dosyası:
Origin: MyCompany
Label: MyCompany
Suite: stable
Codename: focal
Architectures: amd64 source
Components: main
Description: MyCompany internal repository
SignWith: <KEYID>Paketi depoya ekleyin:
sudo reprepro -b /var/www/html/repo includedeb focal /path/to/mypackage_1.0.0_amd64.debreprepro, SignWith seçeneği ayarlanmışsa Paket ve Sürüm dosyalarını otomatik olarak oluşturur ve imzalar.
Bir depoya hizmet vermek için SSL ile basit bir Nginx yapılandırmasına örnek:
server {
listen 443 ssl;
server_name repo.example.com;
ssl_certificate /etc/ssl/certs/fullchain.pem;
ssl_certificate_key /etc/ssl/private/privkey.pem;
root /var/www/html/repo;
location / {
autoindex on;
}
}Modern yöntem: uygun şekilde (üretim için önerilir)
aptly, anlık görüntü alma, S3'e yayınlama, yansılama ve gelişmiş yönetim özelliklerine sahiptir ve üretim ve kurumsal ortamlar için önerilir.
Kolay kurulum ve kullanım:
sudo apt install aptlyaptly repo create -distribution=focal -component=main myrepo
aptly repo add myrepo /path/to/*.deb
aptly publish repo -architectures=amd64 myrepoS3/CDN'e yayınlamak için çeşitli uygun arka uçlar kullanabilir ve çıktıyı bir S3 kovasına yerleştirip dağıtım için CDN/uç nokta konumlarını kullanabilirsiniz.
Güvenlik ipuçları ve en iyi uygulamalar
HTTPS: MiTM saldırılarını önlemek için depoyu her zaman TLS ile yayınlayın.
Açık anahtarı çıkarmak ve dağıtmak:
gpg --export --armor "[email protected]" | sudo tee /usr/share/keyrings/myrepo-archive-keyring.gpgMüşteri tarafında:
deb [signed-by=/usr/share/keyrings/myrepo-archive-keyring.gpg] https://repo.example.com/ubuntu focal mainSınırlı erişim: Özel depolar için Temel Kimlik Doğrulama, istemci sertifikası veya IP beyaz listeleme (örneğin Nginx'te) kullanın.
Kayıt tutma ve izleme: İndirme hacmini, hataları ve başarısız indirme girişimlerini kaydedin ve izleyin.
İstemci Yapılandırması (Pratik Örnek)
Anahtar dosyasını yerleştirin ve istemci makineye depoyu ekleyin:
sudo mkdir -p /usr/share/keyrings
curl -fsSL https://repo.example.com/keys/myrepo.gpg | sudo tee /usr/share/keyrings/myrepo-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/myrepo-archive-keyring.gpg] https://repo.example.com/apt-repo focal main" | sudo tee /etc/apt/sources.list.d/myrepo.list
sudo apt update
sudo apt install mypackageOtomasyon ve CI/CD
GitLab CI'da .deb dosyasını oluşturup depoya gönderecek bir iş oluşturabilir ve ardından paketi reprepro veya aptly ile yayınlayabilirsiniz.
build-package:
script:
- dpkg-buildpackage -us -uc
- scp ../mypackage_*.deb deploy@repo-server:/tmp
- ssh deploy@repo-server "reprepro -b /var/www/html/repo includedeb focal /tmp/mypackage_*.deb"Bunun için API veya CLI'yı kullanarak otomatik yayınlama işlemini gerçekleştirebilirsiniz.
Performans ve ölçeklenebilirlik optimizasyonu
Daha iyi performans için önemli ipuçları:
- CDN ve uç noktalar: İçeriği en yakın uç noktaya dağıtmak, gecikmeyi ve kaynak üzerindeki baskıyı azaltır. Şirketimiz, 85'ten fazla küresel lokasyon ve BGP ve CDN seçenekleriyle bunu mümkün kılıyor.
- Sıkıştırma ve önbelleğe alma: Packages.gz dosyalarını gzip ile sıkıştırın ve uygun Cache-Control başlıklarını ekleyin.
- Yük dengeleme ve yüksek kullanılabilirlik: Daha yüksek istikrar için yük dengeleyiciler ve çok bölgeli kopyalar kullanın.
Nginx'te Cache-Control başlığının örneği:
location /apt-repo/ {
add_header Cache-Control "public, max-age=3600";
}Belirli durumlar için özel ipuçları
Alım satım sunucularına (alım satım VPS'leri) veya oyun sunucularına dağıtım yapması gereken kuruluşlar için, gecikmeyi en aza indirmek amacıyla hedef veri merkezlerine yakın konumların kullanılması önerilir.
Yapay zeka modelleri veya render dosyaları gibi büyük paketleriniz varsa, yüksek hızlı ağ ve CDN'ye sahip GPU Cloud ve işlem sunucularını kullanın.
Küresel ölçekte yayıncılık için, uç noktalarda S3 ve CDN kullanımı en iyi performansı sağlar.
Özet ve Başlangıç Kontrol Listesi
- Araç seçimi: dpkg-scanpackages (basit) / reprepro (kurumsal) / aptly (gelişmiş)
- Dizin yapısını hazırlama (dists, pool)
- Paket ve Sürüm Oluşturma
- GPG ile imzalama ve açık anahtarı dağıtma (signed-by yöntemiyle)
- Nginx/Apache veya S3+CDN ile HTTPS üzerinden sunum yapma.
- Erişim kısıtlamalarının uygulanması ve izleme
- CI/CD ile otomasyon, otomatikleştirilmiş sürümler için
Önerilen hosting hizmetleri
Şirketimiz, yüksek performanslı bulut sunucusu ve BGP ağı üzerinde barındırma, CDN ve 85'ten fazla lokasyon ile küresel dağıtım, özel ve güvenli seçenekler (özel sunucu, DDoS koruması, TLS ve kimlik doğrulama) ve S3 uyumlu depolama desteği ve aptly ile entegrasyon dahil olmak üzere, bir APT deposu çalıştırmak için gereken tüm altyapıyı sağlayabilir.
Teknik ekip, konum seçimi, CDN kurulumu, Nginx yapılandırması ve CI/CD uygulaması konularında yardımcı olabilir.









