Kurulum_notları_Ubuntu20-nginx

 


🔧 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ı

  1. postgresql.conf dosyasını açın ve şu satırı düzenleyin:

listen_addresses = '*'
  1. pg_hba.conf dosyasının en altına şu satırı ekleyin:

host all all 0.0.0.0/0 md5
  1. 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