Parse Server’ı Ubuntu 14.04 Üzerinde Çalıştırma
Parse Server, mobil ve web uygulamaları için kendi sunucunuzda barındırabileceğiniz açık kaynaklı bir Backend-as-a-Service (BaaS) çözümüdür. Facebook tarafından geliştirilen ve daha sonra açık kaynak olarak topluluğa devredilen Parse platformunun devamı niteliğindedir. Bu makale, Parse Server’ı Ubuntu 14.04 işletim sistemi üzerinde nasıl kuracağınızı ve yapılandıracağınızı adım adım açıklamaktadır. Ubuntu 14.04 eski bir işletim sistemi olsa da, bu rehber Parse Server’ı bu ortamda başarıyla çalıştırmak için gerekli tüm detayları sunacaktır.
Parse Server Nedir ve Neden Kullanılmalıdır?
Parse Server, geliştiricilerin uygulamalarının arka uç (backend) ihtiyaçlarını hızla karşılamalarını sağlayan bir dizi araç ve hizmet sunar. Veritabanı yönetimi (MongoDB), kullanıcı kimlik doğrulama, dosya depolama, push bildirimleri ve daha fazlasını kendi sunucunuzda kolayca yönetmenize olanak tanır. Orijinal Parse.com hizmeti kapanma kararı aldığında, geliştiricilerin mevcut uygulamalarını kendi sunucularına taşıyabilmeleri için Parse Server açık kaynak olarak yayınlanmıştır.
Kendi Parse Server’ınızı barındırmanın başlıca avantajları şunlardır:
* Veri Kontrolü: Verilerinizin nerede saklandığı ve nasıl yönetildiği üzerinde tam kontrole sahip olursunuz.
* Ölçeklenebilirlik: Uygulamanızın ihtiyaçlarına göre sunucu kaynaklarını dilediğiniz gibi ölçeklendirebilirsiniz.
* Maliyet Etkinliği: Büyük ölçekli uygulamalar için üçüncü taraf BaaS sağlayıcılarına kıyasla daha uygun maliyetli olabilir.
* Esneklik: Özel iş mantığı (Cloud Code) yazarak sunucunuzun davranışını tamamen özelleştirebilirsiniz.
* Açık Kaynak: Topluluk desteği ve sürekli geliştirme sayesinde platformun geleceği güvence altındadır.
Ubuntu 14.04, uzun süreli destek (LTS) sürümü olmasına rağmen, bu makalenin yazıldığı tarihte yaşam döngüsünün sonuna ulaşmış eski bir işletim sistemidir. Bu nedenle, üretim ortamları için daha güncel ve desteklenen bir Ubuntu sürümünü (örneğin 20.04 veya 22.04) kullanmanız şiddetle tavsiye edilir. Ancak, belirli bir gereksinim veya eski bir altyapı nedeniyle Ubuntu 14.04 kullanmanız gerekiyorsa, bu rehber size yol gösterecektir.
Ön Gereksinimler
Parse Server’ı Ubuntu 14.04 üzerinde çalıştırmak için aşağıdaki bileşenlere ihtiyacımız olacak:
* Ubuntu 14.04 Sunucusu: Temiz bir kurulum veya mevcut bir sunucu.
* Node.js ve npm: Parse Server, Node.js üzerinde çalışır. npm (Node Package Manager) ise Node.js paketlerini yönetmek için kullanılır. Ubuntu 14.04’ün varsayılan depolarındaki Node.js sürümü çok eski olacağından, daha güncel bir sürüm yüklemek için harici bir depo kullanacağız.
* MongoDB: Parse Server’ın verilerini depoladığı NoSQL veritabanıdır. Ubuntu 14.04’ün varsayılan depolarındaki MongoDB sürümü de eski olabileceğinden, MongoDB’nin kendi deposunu kullanacağız.
* Git: Parse Server örnek projesini indirmek için gereklidir.
* PM2 (Process Manager 2): Parse Server uygulamasını sürekli çalışır durumda tutmak, yeniden başlatmaları yönetmek ve günlükleri izlemek için kullanışlı bir Node.js süreç yöneticisidir.
* Nginx (İsteğe Bağlı ama Önerilir): Ters proxy olarak Parse Server’ın önünde çalışarak SSL sonlandırma, yük dengeleme ve statik dosya sunma gibi görevleri üstlenebilir.
Bu bileşenleri kurmaya başlamadan önce, sunucunuzda sudo yetkilerine sahip bir kullanıcı olarak oturum açtığınızdan emin olun.
Adım Adım Kurulum ve Yapılandırma
Aşağıdaki adımları sırasıyla uygulayarak Parse Server’ı Ubuntu 14.04 sunucunuza kurabilir ve yapılandırabilirsiniz.
1. Adım: Sistemi Güncelleme
Kuruluma başlamadan önce, sunucunuzdaki paket listesini güncellemeli ve mevcut paketleri yükseltmelisiniz. Bu, olası bağımlılık sorunlarını önlemeye yardımcı olacaktır.
sudo apt-get update
sudo apt-get upgrade -y
2. Adım: Node.js ve npm Kurulumu
Ubuntu 14.04’ün varsayılan depolarındaki Node.js sürümü oldukça eskidir ve Parse Server ile uyumlu olmayabilir. Bu nedenle, NodeSource deposunu kullanarak daha güncel bir Node.js sürümünü kuracağız. Bu rehber için Node.js v6.x LTS sürümünü kuracağız, çünkü bu sürüm Ubuntu 14.04 ile iyi bir uyumluluğa sahiptir ve Parse Server’ın eski sürümleriyle de genellikle sorunsuz çalışır. Daha yeni Node.js sürümleri de kurulabilir ancak eski işletim sistemiyle uyumluluk sorunları yaşanabilir.
# NodeSource kurulum betiğini indirme
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
Node.js ve npm kurulumu
sudo apt-get install -y nodejs
Kurulumu doğrulama
node -v
npm -v
Komutların çıktısında Node.js ve npm’in sürümlerini görmelisiniz (örneğin, v6.x.x ve 3.x.x).
3. Adım: MongoDB Kurulumu
Parse Server, veritabanı olarak MongoDB kullanır. Ubuntu 14.04 depolarındaki MongoDB sürümü de eski olacağından, MongoDB’nin kendi resmi deposunu kullanacağız. Bu rehber için MongoDB 3.2 sürümünü kuracağız, çünkü bu sürüm Ubuntu 14.04 ile uyumludur ve Parse Server’ın çoğu sürümüyle iyi çalışır.
# MongoDB public GPG anahtarını içe aktarma
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
MongoDB deposu listesi dosyasını oluşturma
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
Paket listesini güncelleme
sudo apt-get update
MongoDB kurulumu
sudo apt-get install -y mongodb-org
MongoDB servisini başlatma
sudo service mongod start
MongoDB'nin sistem başlangıcında otomatik başlamasını sağlama (upstart için)
Ubuntu 14.04'te systemd yerine upstart kullanılır.
MongoDB paketi genellikle kendi upstart betiği ile gelir.
Eğer otomatik başlamazsa, aşağıdaki komutu kullanarak kontrol edebilirsiniz:
sudo update-rc.d mongod defaults
MongoDB durumunu kontrol etme
sudo service mongod status
status komutunun çıktısında MongoDB’nin çalıştığını görmelisiniz.
Güvenlik Notu: Varsayılan olarak, MongoDB herhangi bir kimlik doğrulama olmadan çalışır ve herkesin erişimine açık olabilir. Üretim ortamlarında MongoDB’yi güvenli hale getirmek için kimlik doğrulama, ağ bağlama (bindIp) ve güvenlik duvarı kuralları gibi adımları uygulamanız şiddetle tavsiye edilir. Bu makalenin kapsamı dışında olmakla birlikte, bu konuda araştırma yapmanız önemlidir.
4. Adım: Git Kurulumu
Parse Server örnek projesini GitHub’dan klonlamak için Git’e ihtiyacımız var.
sudo apt-get install -y git
5. Adım: Parse Server Kurulumu ve Yapılandırması
Şimdi Parse Server’ı kurma ve yapılandırma zamanı. GitHub’daki parse-server-example projesini klonlayarak başlayacağız.
# Parse Server için bir dizin oluşturma
mkdir ~/parse-server
cd ~/parse-server
Parse Server örnek projesini klonlama
git clone https://github.com/parse-community/parse-server-example.git .
Bağımlılıkları yükleme
npm install
npm install komutu, package.json dosyasında belirtilen tüm bağımlılıkları yükleyecektir. Bu işlem biraz zaman alabilir.
Şimdi index.js (veya bazı eski örneklerde server.js) dosyasını yapılandırmamız gerekiyor. Bu dosya, Parse Server’ın temel yapılandırmasını içerir.
nano index.js
Aşağıdaki satırları bulup kendi değerlerinizle güncelleyin:
var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI;
if (!databaseUri) {
console.log('DATABASE_URI not specified, falling back to localhost.');
databaseUri = 'mongodb://localhost:27017/dev'; // MongoDB bağlantı URI'niz
}
var serverURL = process.env.SERVER_URL || 'http://localhost:1337/parse'; // Parse Server'ın erişilebilir URL'si
var api = new ParseServer({
databaseURI: databaseUri,
cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
appId: process.env.APP_ID || 'myAppId', // Uygulamanızın benzersiz kimliği
masterKey: process.env.MASTER_KEY || 'myMasterKey', // Master Key, uygulamanızın en yüksek yetkili anahtarı
serverURL: serverURL,
liveQuery: {
classNames: ['Posts', 'Comments'] // LiveQuery kullanmak istediğiniz sınıflar
}
});
Yapılandırma Açıklamaları:
* databaseURI: MongoDB veritabanınızın bağlantı dizesi. Eğer MongoDB’yi aynı sunucuya kurduysanız ve varsayılan portu kullanıyorsanız, mongodb://localhost:27017/dev yeterli olacaktır. dev yerine kendi veritabanı adınızı yazabilirsiniz. Eğer MongoDB farklı bir sunucudaysa veya kimlik doğrulama gerektiriyorsa, dizeyi buna göre ayarlamanız gerekir (örneğin, mongodb://user:password@host:port/database).
* appId: Uygulamanız için benzersiz bir kimlik. Bu, istemci uygulamalarınızın Parse Server’ınıza bağlanırken kullanacağı anahtardır. Güçlü ve tahmin edilemez bir değer seçin.
* masterKey: Master Key, uygulamanızın en yüksek yetkili anahtarıdır. Bu anahtar, güvenlik kısıtlamalarını atlayabilir ve hassas işlemleri gerçekleştirebilir. Kesinlikle gizli tutulmalı ve istemci tarafında asla kullanılmamalıdır. Güçlü ve tahmin edilemez bir değer seçin.
* serverURL: Parse Server’ınızın dışarıdan erişileceği tam URL. Genellikle http://your-domain.com/parse veya http://your-server-ip:1337/parse şeklinde olur. Eğer Nginx ile ters proxy kullanacaksanız, Nginx’in dinlediği alan adını ve yolu belirtmelisiniz. Varsayılan olarak http://localhost:1337/parse olarak ayarlayabiliriz, Nginx yapılandırmasında bunu değiştireceğiz.
* cloud: Cloud Code dosyalarınızın yolu. Varsayılan olarak cloud/main.js olarak ayarlanmıştır.
* liveQuery: Gerçek zamanlı veri güncellemeleri için LiveQuery özelliğini etkinleştirmek isterseniz, burada izlenecek sınıf adlarını belirtebilirsiniz.
Önemli Güvenlik Notu: appId ve masterKey gibi hassas bilgileri doğrudan index.js dosyasına yazmak yerine, üretim ortamlarında bunları ortam değişkenleri (environment variables) olarak ayarlamanız şiddetle tavsiye edilir. PM2 ile başlatırken veya bir systemd (Ubuntu 14.04’te upstart) servisi oluştururken bu değişkenleri tanımlayabilirsiniz. Örneğin:
# Ortam değişkenlerini ayarlayarak Parse Server'ı başlatma (örnek)
DATABASE_URI='mongodb://localhost:27017/dev' \
APP_ID='myAppId' \
MASTER_KEY='myMasterKey' \
SERVER_URL='http://your-domain.com/parse' \
node index.js
Bu makalede kolaylık sağlamak adına doğrudan dosyaya yazma yöntemini kullanacağız, ancak üretim için ortam değişkenlerini tercih etmelisiniz.
6. Adım: Parse Server’ı Çalıştırma (PM2 ile)
Parse Server’ı sürekli çalışır durumda tutmak ve sunucu yeniden başlatıldığında otomatik olarak başlamasını sağlamak için PM2’yi kullanacağız.
Önce PM2’yi global olarak yükleyin:
sudo npm install -g pm2
Şimdi Parse Server’ı PM2 ile başlatın. ~/parse-server dizininde olduğunuzdan emin olun.
pm2 start index.js --name "parse-server"
Bu komut, index.js dosyasını parse-server adıyla bir PM2 süreci olarak başlatacaktır.
PM2’nin durumunu kontrol edin:
pm2 status
Çıktıda parse-server adlı uygulamanın çalıştığını görmelisiniz.
PM2 günlüklerini görüntülemek için:
pm2 logs parse-server
Parse Server’ın sunucu yeniden başlatıldığında otomatik olarak başlamasını sağlamak için PM2’nin başlatma betiğini oluşturmanız gerekir. Ubuntu 14.04 upstart kullandığından, PM2’nin upstart için bir betik oluşturmasını isteyeceğiz:
# PM2'nin mevcut süreç listesini kaydetme
pm2 save
Upstart için başlatma betiğini oluşturma
pm2 startup upstart
pm2 startup upstart komutu size bir komut satırı çıktısı verecektir (örneğin, sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup upstart -u your-user --hp /home/your-user). Bu komutu kopyalayıp çalıştırmanız gerekecektir. your-user yerine kendi kullanıcı adınızı yazın.
Örneğin, çıktı şöyle olabilir:
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup upstart -u ubuntu --hp /home/ubuntu
Bu komutu kopyalayıp çalıştırın. Bu, sunucunuz yeniden başlatıldığında PM2’nin ve dolayısıyla Parse Server’ınızın otomatik olarak başlamasını sağlayacaktır.
7. Adım: Nginx ile Ters Proxy Kurulumu (Önerilir)
Parse Server’ı doğrudan 1337 portu üzerinden erişime açmak yerine, Nginx’i ters proxy olarak kullanmak daha iyi bir yaklaşımdır. Nginx, SSL sonlandırma, yük dengeleme, önbellekleme ve statik dosya sunma gibi ek özellikler sunar.
Önce Nginx’i kurun:
sudo apt-get install -y nginx
Şimdi Parse Server için bir Nginx yapılandırma dosyası oluşturalım:
sudo nano /etc/nginx/sites-available/parse-server
Dosyanın içine aşağıdaki içeriği yapıştırın. your_domain.com kısmını kendi alan adınızla veya sunucunuzun IP adresiyle değiştirin.
server {
listen 80;
server_name your_domain.com; # Alan adınızı veya sunucu IP adresinizi buraya yazın
location / {
proxy_pass http://localhost:1337; # Parse Server'ın çalıştığı adres ve port
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;
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;
}
# Eğer statik dosyalarınız varsa (örneğin, bir web sitesi), aşağıdaki gibi yapılandırabilirsiniz:
# location /dashboard {
# root /var/www/html/parse-dashboard; # Parse Dashboard'un kurulu olduğu dizin
# index index.html index.htm;
# }
# Parse Server yolunu doğrudan proxy'lemek için
location /parse {
proxy_pass http://localhost:1337/parse;
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;
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;
}
}
Not: Yukarıdaki yapılandırmada, tüm gelen istekleri Parse Server’a yönlendiriyoruz (location /). Eğer Parse Server’ı belirli bir yol altında (örneğin /parse) çalıştırmak isterseniz ve aynı alan adında başka bir web sitesi veya Parse Dashboard barındırıyorsanız, location /parse bloğunu kullanmalı ve index.js dosyasındaki serverURL‘yi buna göre güncellemelisiniz (örneğin, http://your_domain.com/parse).
Yapılandırma dosyasını kaydettikten sonra, etkinleştirmek için bir sembolik bağlantı oluşturun ve varsayılan Nginx sitesini devre dışı bırakın:
sudo ln -s /etc/nginx/sites-available/parse-server /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
Nginx yapılandırmasını test edin ve servisi yeniden başlatın:
sudo nginx -t
sudo service nginx restart
Eğer herhangi bir hata yoksa, Nginx artık gelen istekleri Parse Server’ınıza yönlendirecektir.
Güvenlik Duvarı (UFW) Ayarları:
Eğer sunucunuzda UFW (Uncomplicated Firewall) kullanıyorsanız, HTTP (80) ve HTTPS (443 – eğer SSL kullanacaksanız) portlarına izin vermeniz gerekebilir:
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS' # Eğer SSL kuracaksanız
sudo ufw enable # Eğer UFW etkin değilse
Parse Server’ı Test Etme
Parse Server’ınızın çalışıp çalışmadığını test etmek için basit bir curl komutu kullanabilirsiniz. index.js dosyasında belirlediğiniz appId ve masterKey değerlerini kullanın.
curl -X POST \
-H "X-Parse-Application-Id: myAppId" \
-H "X-Parse-Master-Key: myMasterKey" \
-H "Content-Type: application/json" \
-d '{}' \
http://your_domain.com/parse/classes/TestObject
Bu komut, Parse Server’ınıza TestObject adlı bir sınıf oluşturmak için boş bir nesne gönderecektir. Eğer her şey doğru yapılandırıldıysa, sunucudan başarılı bir yanıt ({"objectId":"...","createdAt":"..."}) almalısınız.
Güvenlik Hususları
Parse Server’ı üretim ortamında çalıştırırken güvenlik büyük önem taşır. İşte dikkat etmeniz gereken bazı temel hususlar:
* Güvenlik Duvarı: Sunucunuzda sadece gerekli portları (HTTP 80, HTTPS 443, SSH 22) açın. MongoDB portu (27017) sadece localhost veya Parse Server’ın çalıştığı sunucu IP adresinden erişilebilir olmalıdır.
* MongoDB Güvenliği: MongoDB’de kimlik doğrulama etkinleştirin, kullanıcılar oluşturun ve yetkilendirme kullanın. Ayrıca, mongod.conf dosyasındaki bindIp ayarını sadece 127.0.0.1 veya yerel ağdaki sunucu IP adresleriyle sınırlayın.
* Ortam Değişkenleri: appId, masterKey gibi hassas bilgileri index.js dosyasına doğrudan yazmak yerine ortam değişkenleri olarak ayarlayın. PM2 veya upstart servis betiği aracılığıyla bunları tanımlayabilirsiniz.
* SSL/HTTPS: Nginx ile ters proxy kullanıyorsanız, Let’s Encrypt gibi ücretsiz bir SSL sertifikası sağlayıcısı kullanarak HTTPS’yi etkinleştirin. Bu, istemci ve sunucu arasındaki tüm iletişimi şifreleyecektir.
* Cloud Code Güvenliği: Cloud Code’unuzu yazarken güvenlik en iyi uygulamalarını takip edin. Kullanıcı girdilerini doğrulayın, hassas verileri doğrudan istemciye göndermeyin ve yetkilendirme kontrolleri uygulayın.
* Bağımlılık Güncellemeleri: Node.js, npm paketleri ve MongoDB gibi tüm bileşenleri düzenli olarak güncelleyerek bilinen güvenlik açıklarını kapatın.
Bakım ve İzleme
* PM2 İzleme: PM2, süreçleri izlemek için güçlü araçlar sunar. pm2 monit komutu ile canlı logları, CPU ve bellek kullanımını izleyebilirsiniz.
* MongoDB Yedekleri: Verilerinizin güvenliği için MongoDB veritabanınızın düzenli yedeklerini alın. mongodump aracı bu amaçla kullanılabilir.
* Log Yönetimi: Parse Server ve Nginx loglarını düzenli olarak kontrol edin. Olası sorunları veya güvenlik ihlallerini tespit etmenize yardımcı olabilirler.
* Sistem Güncellemeleri: Ubuntu 14.04 EOL olduğu için güvenlik güncellemeleri almasa da, mevcut paketleri güncel tutmak için sudo apt-get update && sudo apt-get upgrade -y komutunu düzenli olarak çalıştırmanız, diğer bileşenlerin güncel kalmasına yardımcı olabilir.
Yaygın Sorun Giderme
* Parse Server Başlamıyor:
* pm2 logs parse-server komutuyla logları kontrol edin. Hata mesajları genellikle sorunun kaynağını gösterir.
* MongoDB’nin çalışır durumda olduğundan emin olun (sudo service mongod status).
* index.js dosyasındaki databaseURI, appId, masterKey ve serverURL ayarlarını kontrol edin.
* Parse Server’a Erişilemiyor:
* Nginx’in çalışır durumda olduğundan emin olun (sudo service nginx status).
* Nginx yapılandırmasını kontrol edin (sudo nginx -t).
* Güvenlik duvarı (UFW) ayarlarını kontrol edin. Gerekli portlara (80, 443) izin verildiğinden emin olun.
* index.js dosyasındaki serverURL‘nin doğru ayarlandığından emin olun.
* MongoDB Bağlantı Hatası:
* databaseURI dizesinin doğru olduğundan ve MongoDB’nin doğru portta çalıştığından emin olun.
* MongoDB’nin bindIp ayarını kontrol edin. Parse Server’ın erişebileceği bir IP adresine bağlanmış olmalıdır.
* MongoDB’de kimlik doğrulama etkinse, bağlantı dizesinde doğru kullanıcı adı ve şifreyi kullandığınızdan emin olun.
Sonuç
Bu makalede, Parse Server’ı Ubuntu 14.04 işletim sistemi üzerinde adım adım nasıl kuracağınızı ve yapılandıracağınızı öğrendiniz. Node.js, npm, MongoDB, Git ve PM2 gibi temel bileşenleri kurarak ve Parse Server’ı yapılandırarak kendi BaaS çözümünüzü başarıyla çalışır hale getirdiniz. Ayrıca, Nginx ile ters proxy kurarak güvenlik ve performans iyileştirmeleri sağlama adımlarını da ele aldık.
Ubuntu 14.04’ün yaşam döngüsünün sonuna ulaştığını unutmamak önemlidir. Bu nedenle, üretim ortamları için daha güncel ve desteklenen bir işletim sistemine (örneğin Ubuntu 20.04 veya 22.04) geçiş yapmanız, güvenlik ve uzun vadeli sürdürülebilirlik açısından kritik öneme sahiptir. Ancak, bu rehber sayesinde eski bir altyapıda bile Parse Server’ı başarıyla dağıtabilirsiniz. Kendi sunucunuzda Parse Server’ı çalıştırmak, uygulamanızın arka ucu üzerinde tam kontrol sağlamanıza ve özel ihtiyaçlarınıza göre ölçeklendirmenize olanak tanır.
