GitHub Actions Kullanarak Site Yayınlamak (cPanel)

Web sitenizi sürekli olarak güncel tutmak, özellikle düzenli olarak değişiklik yaptığınız bir projede önemli bir konudur. cPanel kullanan bir hosting sağlayıcısında web sitenizi GitHub Actions ile otomatik olarak güncelleyebilirsiniz. Bu yazıda, GitHub Actions kullanarak sitenizi nasıl kolayca yayınlayabileceğinizi adım adım anlatacağım.
1. GitHub Deposu Oluşturma
Öncelikle, projenizin kaynak kodlarını içeren bir GitHub deposu oluşturmanız gerekiyor. Eğer zaten bir GitHub depo mevcutsa bu adımı atlayabilirsiniz.
- GitHub hesabınıza giriş yapın.
- Sağ üst köşedeki "+" simgesine tıklayın ve New repository seçeneğine tıklayın.
- Depo adı, açıklama ve gizlilik ayarlarını yapın.
- Create repository butonuna tıklayarak depoyu oluşturun.
2. cPanel de FTP Hesabı Oluşturma
cPanel üzerinde FTP hesabı oluşturarak, GitHub Actions ile sitenizin dosyalarını otomatik olarak sunucunuza yükleyebilirsiniz.
- cPanel hesabınıza giriş yapın.
- FTP Accounts menüsüne gidin.
- Yeni bir FTP hesabı oluşturma kısmında yeni ftp hesabınız için için kullanıcı adı, etki alanı ve güçlü bir parola belirleyin.
- FTP hesabınızın kök dizinini, sitenizin dosyalarının bulunacağı dizine ayarlayın. (
public_html
veyadomain.com
). - FTP hesabınızı oluşturun ve FTP Hesapları listesinde oluşturduğunuz ftp hesabı için FTP İstemcisini Yapılandır seçin.
- Açılan detay kısmında FTP Kullanıcı Adı, FTP sunucusu ve FTP & açık FTPS portu bilgilerini göreceksiniz. Bu bilgileri sıradaki adımda kullanacağız.


3. GitHub Secrets Ayarları
FTP kullanıcı adınızı parolanızı ve ftp sunucunuzu GitHub Secrets olarak tanımlamanız gerekiyor. Bu işlem, site dosyalarınızın güvenli bir şekilde FTP sunucusuna bağlanmasını sağlar.
- GitHub reponuza gidin ve Settings > Secrets and variables > Actions yolunu izleyin.
- New repository secret butonuna tıklayın.
- Name alanına
FTP_USERNAME
yazın, FTP kullanıcı adınızı Secret alanına yapıştırın ve Add secret butonuna tıklayın. - Aynı şekilde
FTP_PASSWORD
adında bir secret daha ekleyin ve FTP parolanızı secret alanına yapıştırın. - Aynı şekilde
FTP_SERVER
adında bir secret daha ekleyin ve FTP sunucusunu secret alanına yapıştırın. Eğer bu değeri kullandığınızda deploy sırasında hata alıyorsanız cPanel'e girdiğinizde ki domain alanını deneyebilirsiniz. (örn: cp27.servername.co)

4. GitHub Actions Workflow Dosyası Oluşturma
Şimdi, GitHub Actions kullanarak FTP üzerinden cPanel'e dosyalarınızı yükleyecek bir workflow dosyası oluşturacağız.
- GitHub deposunun kök dizininde
.github/workflows
adında bir klasör oluşturun. - Bu klasör içinde
deploy.yml
adında bir dosya oluşturun. - Aşağıdaki kodu
deploy.yml
dosyasına yapıştırın:
1name: Deploy to cPanel23on:4push:5branches:6- main # veya ana branch neyse onu yazın78jobs:9deploy:10runs-on: ubuntu-latest1112steps:13- name: Checkout code14uses: actions/checkout@v21516- name: Deploy via FTP17uses: SamKirkland/FTP-Deploy-Action@4.1.018with:19server: ${{ secrets.FTP_SERVER }} # GitHub Secrets de belirtilen FTP Server adı ile aynı olmalıdır20username: ${{ secrets.FTP_USERNAME }} # GitHub Secrets de belirtilen FTP Username adı ile aynı olmalıdır21password: ${{ secrets.FTP_PASSWORD }} # GitHub Secrets de belirtilen FTP Password adı ile aynı olmalıdır22protocol: ftps # FTP sunucunuzun desteklediği protokolü seçin23port: 21 # FTP & açık FTPS portu, gerekirse bu değeri hosting sağlayıcınızın belirttiği doğru port numarasına göre güncelleyin24local-dir: ./ # Gönderilecek dosyaların bulunduğu yer25server-dir: ./ # FTP hesabının bağlandığı dizin, bunu kendi cPanel dizininize göre güncelleyebilirsiniz (sonunda / ile bitmeli)
4.1. Build Alınıp Deploy Etme
Eğer oluşturduğunuz projenin build alındıktan sonra cPanel'e gönderilmesi gerekiyorsa deploy.yml
dosyasında bunu belirtebilirsiniz. Örneğin projenizi React ile geliştirdiyseniz ve projenizi cPanele deploy etmek istiyorsanız projenizin deploy sırasında build alınması gerekmektedir. Bu işlem için deploy.yml
dosyanızı aşağıdaki gibi güncelleyebilirsiniz.
1name: Deploy to cPanel23on:4push:5branches:6- main # veya ana branch neyse onu yazın78jobs:9build:10runs-on: ubuntu-latest1112steps:13- name: Checkout code14uses: actions/checkout@v21516- name: Install dependencies17run: npm install1819- name: Build project20run: npm run build # React projenizin build komutunu çalıştırın2122- name: Deploy via FTP23uses: SamKirkland/FTP-Deploy-Action@4.1.024with:25server: ${{ secrets.FTP_SERVER }} # GitHub Secrets de belirtilen FTP Server adı ile aynı olmalıdır26username: ${{ secrets.FTP_USERNAME }} # GitHub Secrets de belirtilen FTP Username adı ile aynı olmalıdır27password: ${{ secrets.FTP_PASSWORD }} # GitHub Secrets de belirtilen FTP Password adı ile aynı olmalıdır28protocol: ftps # FTP sunucunuzun desteklediği protokolü seçin29port: 21 # FTP & açık FTPS portu, gerekirse bu değeri hosting sağlayıcınızın belirttiği doğru port numarasına göre güncelleyin30local-dir: dist/ # React projenizin build çıktısının olduğu dizin (sonunda / ile bitmeli)31server-dir: ./ # Projenizi yükleyeceğiniz dizin, bunu kendi cPanel dizininize göre güncelleyin (sonunda / ile bitmeli)
5. Workflow'u Test Etme
Artık her yeni commit ve push işlemi yaptığınızda, GitHub Actions sitenizi otomatik olarak cPanel'deki FTP sunucunuza yükleyecektir. Bunun çalıştığından emin olmak için basit bir test yapabilirsiniz.
- GitHub deposundaki bir dosyada küçük bir değişiklik yapın (örneğin,
index.html
dosyasını güncelleyin). - Değişiklikleri commit edip push edin.
- GitHub reponuzda Actions sekmesine giderek işlemin başarılı olup olmadığını kontrol edin.

Başarılı bir işlemde, sitenizin FTP sunucusundaki dosyaları güncellenmiş olmalıdır.
Sonuç
Bu adımları takip ederek, FTP üzerinden GitHub Actions kullanarak cPanel üzerinde otomatik dağıtım yapabilirsiniz. Bu süreç, manuel güncellemeleri ortadan kaldırarak size zaman kazandırır ve sürekli entegrasyon/deploy süreçlerinizi kolaylaştırır.
Umarım bu yazı, cPanel'de FTP kullanarak GitHub Actions ile sitenizi nasıl yayınlayabileceğinizi anlamanıza yardımcı olmuştur. Sorularınız olursa iletişime geçmekten çekinmeyin!
Bir diğer yazıda görüşmek üzere 👋