Nginx

Flask ile Nginx nasıl kullanılır.

Flask ile Nginx nasıl kullanılır.
Python harika, öğrenmesi kolay ve çok güçlü bir programlama dilidir ve Django ve Flask gibi çerçevelerle tam teşekküllü web uygulamaları oluşturmak için kullanabiliriz. Flask gibi kütüphaneler ve çerçeveler kullanarak bir web uygulaması oluşturduğumuzda, onu bir sunucuda barındırmamız ve halka açmamız gerekir. Bu eğitici, web uygulamanızı Gunicorn kullanarak Nginx çalıştıran bir sunucuda nasıl barındıracağınızı anlatmaktadır. Flask ve Gunicorn'u kullanmaya başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:

Sunucuyu Kurmak

Şimdi sunucumuzu barındırmak için kullanacağımız sunucu ortamını ayarlamaya başlayalım. Bu öğretici Ubuntu Sunucusunu kullanır. Depoları güncelleyerek ve Python3 ve Pip'i yükleyerek başlayın.

sudo apt-get güncellemesi
sudo apt-get yükseltme -y
sudo apt-get kurulum python3 python3-pip -y

Ardından, projeyi saklamak için bir dizin oluşturmamız gerekiyor.

sudo mkdir /var/www/uygulama
cd /var/www/uygulama

Dizin sahipliğini ve izinlerini değiştirin:

sudo chown -R www-veri:www-data /var/www/application/

Ardından, paketleri apt (şişe ve Gunicorn) kullanarak kurun

sudo apt-get install python3-flask python3-gunicorn

Şimdi bir şişe uygulamasını başlatmaya devam edelim. Ana öğeyi oluşturarak başlayın.py-uygulamayı ve wsgi'yi tutar.py, uygulamanın çalışmasını sağlayacak.

sudo dokunmatik ana.py wsgi.p

Ana öğeyi düzenleyin.py dosyası oluşturun ve Flask uygulamanızı ve tüm rotaları ayarlayın. Bu eğitim bir Flask rehberi olmadığından, temel bir rota ve merhaba dünya mesajı oluşturacağız.

şişeden ithalat şişesi
uygulama = Şişe(__name__)
@app.rota("/")
def ana sayfa():
dönüş "

Nginx ve Gunicorn

"

wsgi'yi düzenle.py dosyası oluşturun ve uygulamayı içe aktarmak için kodu ekleyin ve şu şekilde çalıştırın:

ana içe aktarma uygulamasından
eğer __name__ == "__main__":
uygulama.çalıştır(hata ayıklama=Doğru)

Son olarak, şişeyi şu şekilde çağırarak çalışır durumda olup olmadığını test edin:

$ şişe koşusu
* Çevre: üretim
UYARI: Bu bir geliştirme sunucusudur. Bir üretim dağıtımında kullanmayın.
Bunun yerine bir üretim WSGI sunucusu kullanın.
* Hata ayıklama modu: kapalı
* http://127'de çalışıyor.0.0.1:5000/ (Çıkmak için CTRL+C tuşlarına basın)

http://localhost:5000 adresinden uygulamaya erişmeyi deneyin.

Gunicorn'u Kurma

Uygulamamız başarıyla çalıştığında, aşağıdaki komutları kullanarak uygulamayı test etmek için Gunicorn'u kullanabiliriz:

$ sudo gunicorn --workers 5 wsgi:app
[2021-03-19 09:19:34 +0000] [14047] [BİLGİ] Gunicorn 20'ye başlama.0.4
[2021-03-19 09:19:34 +0000] [14047] [BİLGİ] Dinleme: http://127.0.0.1:8000 (14047)
[2021-03-19 09:19:34 +0000] [14047] [BİLGİ] Çalışanı kullanma: senkronizasyon
[2021-03-19 09:19:34 +0000] [14049] [BİLGİ] pid ile önyükleme işçisi: 14049
[2021-03-19 09:19:34 +0000] [14050] [BİLGİ] pid ile önyükleme işçisi: 14050
[2021-03-19 09:19:34 +0000] [14051] [BİLGİ] pid ile önyükleme işçisi: 14051
[2021-03-19 09:19:34 +0000] [14052] [BİLGİ] pid ile önyükleme işçisi: 14052
[2021-03-19 09:19:35 +0000] [14053] [BİLGİ] pid ile önyükleme işçisi: 14053

Yukarıdaki komutlar, belirtilen sayıda işçi kullanarak Gunicorn kullanarak şişe uygulamasını çalıştırır. Ardından, çalıştırılacak uygulamanın dosyası ve örneği olan wsgi:app dosyasını çağırırız.

Gunicorn kullanarak uygulamayı çalıştırdıktan sonra, sunucuyu durdurmak ve Nginx'i kurmak için CTRL + C tuşlarına basın.

Nginx'i kurmak ve çalıştırmak için aşağıdaki komutları kullanın.

sudo apt-get install nginx -y
sudo systemctl nginx'i başlat
sudo systemctl nginx'i etkinleştir

Sonraki adım, sitelerin etkin olduğu dizindeki Nginx yapılandırmasını düzenlemek ve sunucu bloğunu eklemektir. Aşağıdaki yapılandırmayı göz önünde bulundurun. Uygulamayı projenizin adıyla değiştirin.

sudo nano /etc/nginx/siteler kullanılabilir/uygulama.konf
sunucu
80 dinle;
sunucu_adı uygulaması;
access_log /var/log/nginx/uygulama.Giriş.günlük;
error_log /var/log/nginx/uygulama.hata.günlük;
yer /
proxy_params dahil;
proxy_pass http://unix:/var/www/application/application.çorap;

Web sitesini etkinleştirmek için sitenin etkin olduğu dizine bir bağlantı oluşturmaya devam edin.

sudo ln -s /etc/nginx/siteler kullanılabilir/uygulama.conf /etc/nginx/siteler etkin/

Şimdi Nginx hizmetini şu şekilde yeniden başlatın:

sudo systemctl nginx'i yeniden başlat

Ardından, uygulamaya hizmet etmek için bir systemd birim dosyası oluşturmamız gerekiyor.

sudo nano /etc/systemd/system/application.hizmet
[Birim]
Açıklama=uygulama.hizmet - Gunicorn ile çalışan bir Flask uygulaması.
sonra=ağ.hedef
[Hizmet]
Kullanıcı=www-veri
Grup=www-veri
WorkingDirectory=/var/www/application/
ExecStart=/usr/bin/gunicorn --workers 3 --bind unix:/var/www/application.çorap wsgi:uygulama
[Yüklemek]
WantedBy=çok kullanıcılı.hedef

Son olarak, birim dosyasını kaydedin, ardından arka plan programını etkinleştirin ve yeniden yükleyin.

sudo systemctl yeniden başlatma uygulaması.hizmet
sudo systemctl arka plan programı yeniden yükleme

Artık IP adresini veya nginx yapılandırma dosyasında belirtilen adresi kullanarak uygulamaya erişebilirsiniz. Ana bilgisayarın dosyasına eklemeniz gerekebilir.

kıvırma http://uygulama
HTTP/1.1 200 TAMAM
Sunucu: Werkzeug/0.16.1 Piton/3.8.5)
Tarih: Cum, 19 Mart 2021 10:00:39 GMT
İçerik Türü: metin/html
İçerik Uzunluğu: 25
Son Değiştirilme Tarihi: Cum, 19 Mart 2021 09:22:47 GMT

Sonuç

Bu eğitim, bir Python Flask uygulamasının nasıl kurulacağını ve Gunicorn kullanarak Nginx üzerinden nasıl sunulacağını ele aldı. Bu öğreticide tartışılan hizmetler hakkında daha fazla bilgi edinmek için bireysel belgeleri inceleyin.

OpenTTD Tutorial
OpenTTD is one of the most popular business simulation games out there. In this game, you need to create a wonderful transportation business. However,...
SuperTuxKart for Linux
SuperTuxKart is a great title designed to bring you the Mario Kart experience free of charge on your Linux system. It is pretty challenging and fun to...
Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...