🔧 Nginx Kurulumu
Öncelikle sistemi güncelleyip Nginx web sunucusunu kuruyoruz:
sudo apt update
sudo apt install nginx
Kurulum tamamlandıktan sonra servis durumunu kontrol edebilirsiniz:
systemctl status nginx
🔐 Git ve SSH Ayarları
GitHub ile entegre çalışmak için SSH anahtarı oluşturalım. Aşağıdaki komutla yeni bir SSH anahtarı üretin:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Komut sonrası istenen bilgileri ENTER tuşuyla geçebilirsiniz. Parola belirlemek zorunda değilsiniz, belirlemezseniz her git pull
işleminde parola girmeniz gerekmez.
SSH agent’ı başlatın:
eval "$(ssh-agent -s)"
Ve oluşturduğunuz anahtarı ekleyin:
ssh-add ~/.ssh/id_rsa
Son olarak, id_rsa.pub
içeriğini GitHub hesabınızda SSH Keys bölümüne ekleyin.
🐍 Python Sanal Ortam Kurulumu
Python projesi için sanal ortam oluşturuyoruz:
sudo apt-get install python3-venv
python3 -m venv myvenv
Sanal ortamı aktifleştirmek için:
source myvenv/bin/activate
Bağımlılıkları yüklemek için:
pip install -r requirements.txt
Yeni kütüphaneleri requirements.txt
dosyasına kaydetmek için:
pip freeze > requirements.txt
🐘 PostgreSQL Kurulumu
PostgreSQL veritabanını kurmak için:
sudo apt install postgresql postgresql-contrib
sudo -i -u postgres
psql
\password # Şifre belirleyin
Uzak Erişim Ayarları
-
postgresql.conf
dosyasını açın ve şu satırı düzenleyin:
listen_addresses = '*'
-
pg_hba.conf
dosyasının en altına şu satırı ekleyin:
host all all 0.0.0.0/0 md5
-
PostgreSQL servisini yeniden başlatın:
sudo service postgresql restart
🌐 Nginx Reverse Proxy (Flask için)
Varsayılan site yapılandırmasını kopyalayarak yeni bir konfigürasyon dosyası oluşturun:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
Düzenlemeleri yaptıktan sonra yapılandırmayı aktif hale getirin:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
Aşağıdaki reverse proxy konfigürasyonunu kullanabilirsiniz:
server {
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ~ /.well-known {
root /var/www/cert;
}
}
Yapılandırmayı test edin ve Nginx’i yeniden başlatın:
sudo /etc/init.d/nginx restart
🚀 Gunicorn ile Yayınlama
Sanal ortamda şu komutu kullanarak Flask uygulamanızı başlatabilirsiniz:
gunicorn server:app -b 0.0.0.0:5000 --reload --timeout 3600 --daemon --error-logfile static/log.txt
--timeout
: Uzun işlemler için zaman aşımını artırır.--daemon
: Arka planda çalışmasını sağlar.--error-logfile
: Hataları log dosyasına kaydeder.
🔒 SSL Sertifikası (Let’s Encrypt)
Gerekli paketleri yükleyin:
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx
Otomatik SSL kurulumu:
sudo certbot --nginx -d your_domain -d www.your_domain
Manuel kurulum için:
sudo certbot certonly --nginx
Örnek SSL destekli Nginx konfigürasyonu:
server {
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ~ /.well-known {
root /var/www/cert;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
if ($host ~* ^www\.) {
return 301 $scheme://example.com$request_uri;
}
}
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
📌 Yönlendirme Özetleri:
Kaynak URL | Yönlendirme |
---|---|
http://example.com |
https://example.com |
http://www.example.com |
https://example.com |
https://www.example.com |
https://example.com |