Derzeit mache ich ein Strategiespiel, das im Web ausgeführt wird, aber ich hatte Probleme, weil ich den gemieteten Server aus verschiedenen Gründen gekündigt habe.
Geld ... nein ... ;;;
Ich habe also Windows 10 auf meinem PC, aber ich habe geprüft, ob eine experimentelle Umgebung lokal erstellt werden kann, und als ich es tatsächlich ausprobiert habe, habe ich es geschafft, also werde ich es bereitstellen. Wenn Sie einen Computer haben, können Sie eine Webumgebung einrichten, ohne Geld auszugeben. Probieren Sie es also aus, auch wenn Sie in Schwierigkeiten sind!
Sicherheit wird jedoch fast ignoriert, da es sich um eine "ungezogene Umgebung" handelt. Das Erstellen eines Servers unter Windows 10 und das Veröffentlichen im Web stellt eine Verletzung der Microsoft-Lizenz dar. Machen Sie es also niemals. Nur unter Verwendung der lokalen experimentellen Umgebung.
Geeignet für Apps, die über einen Webbrowser eingegeben werden. Grundsätzlich handelt es sich um eine Frontoperation mit HTML5 und Javascript, es wird jedoch davon ausgegangen, dass komplizierte Berechnungen und Ausgaben von Python auf einem virtuellen Server verarbeitet werden. Machen Sie es möglich, auch mit der Datenbank umzugehen.
** Software Anforderungen **
Es gibt eine Version von Nginx, die mit Windows kompatibel ist. Verwenden Sie diese. Der Kolben wird auch als Rahmen zwischen uwsgi und nginx verwendet.
Es gibt eine Anweisung, dass uwsgi, das auf dem virtuellen Server verwendet wird, von Windows unterstützt wird, aber tatsächlich kann es nicht direkt unter Windows ausgeführt werden (es funktioniert nicht ...). Stattdessen kann uwsgi virtuell auf der Terminalsoftware "cygwin" ausgeführt werden, die unter Windows ausgeführt wird. Der Prozessablauf ist ein Bild der Übergabe einer Eingabeaktion aus dem Web an Cygwin über Nginx, der Verarbeitung von Python und PostgreSQL und der Rückgabe an Nginx.
Als Image ist cygwin uwsgi und postgreSQL Server.
Richten Sie die Umgebung tatsächlich ein. Installieren Sie hier die folgende Anwendung.
1-1. Starten Sie die Eingabeaufforderung im Ziel nginx-X.X.X. 1-2. Start Geben Sie nginx ein, um es auszuführen. 1-3. Zeigen Sie http: // localhost im Browser an. Zulassen, wenn von der Firewall blockiert. Wenn "Willkommen bei Nginx!" Angezeigt wird, ist das Setup normal. 1-4.nginx -s beenden, um zu beenden.
2. Installieren Sie Python und die erforderlichen Bibliotheken. Holen Sie sich das Installationsprogramm von: Grundsätzlich * verwenden Sie das webbasierte Installationsprogramm. Richten Sie es mit dem Installationsprogramm ein, das Sie möchten. python HP
Sie sollten "Python x.x zum Pfad hinzufügen" aktivieren. Wählen Sie für andere die Standardeinstellung oder die Option entsprechend Ihrer Umgebung aus. Ich werde es testen, nachdem die Installation abgeschlossen ist.
# python -V
Python 3.8.2
* Für Windows scheint es Python zu sein, nicht Python3.
# pip3 install flask requests requests_oauthlib python-dateutil psycopg2
~ Ausgelassen ~
# pip3 list
~ Unten weggelassen ~
3. Installieren Sie uwsgi. Hier werden wir Cygwin Terminal verwenden, um es auf dem Linux-Emulator zu installieren. Richten Sie es mit dem Installationsprogramm ein, das Sie möchten. Cygwin HP
Wählen Sie Folgendes für das Paket aus (beachten Sie, dass es sonst übersprungen wird):
Wählen Sie die Standardeinstellung oder die Option, die zu Ihrer Umgebung passt. Die virtuelle Umgebung kann aktuell eingerichtet sein.
Starten Sie nach dem Setup cygwin und richten Sie uwsgi ein.
Überprüfen Sie den Home-Benutzernamen ★ Danach[Cygwin-Benutzer]Vereinige dich mit
# echo $USER
* Standardmäßig der Windows-Login-Benutzername(Ordner)Wird den gleichen Namen haben wie
passend zu wget-Holen Sie sich Cyg
$ wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
$ chmod 755 apt-cyg
$ mv apt-cyg /usr/local/bin
Für Systembefehle
$ apt-cyg install procps
Holen Sie sich die Python3-Bibliothek
$ apt-cyg install python3-devel
Laden Sie uwsgi von git herunter und richten Sie es ein.
$ wget https://github.com/unbit/uwsgi/archive/[Archivname freigeben]
$ unzip [Archivname]
$ cd uwsgi-[Versionsname]
$ python3 setup.py install
* Geben Sie die Release-Version für das Archiv an
* Es dauert lange, da die Kompilierung funktioniert.
Überprüfen Sie übrigens die Standardkodierung für alle Fälle. Wenn es auf Linux basiert, ist uft-8 einfach, aber Cygwin ist standardmäßig utf-8, daher sollte es kein Problem geben.
$ python3
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>> exit
[ctrl+D]* Ende durch Tastatureingabe
Was wäre, wenn es nicht utf-8 wäre? Fügen Sie Ihrem Profil eine Codierung hinzu.
$ vi /home/[Cygwin-Benutzer]/.bash_profile
export LANG=ja_JP.UTF-8
:wq
Führen Sie nach dem Hinzufügen Folgendes aus, um es zu laden.
$ source ~/.bash_profile
4. Installieren Sie postgreSQL.
4-1. Beziehen Sie den Quellcode aus dem Folgenden.
postgresql HP
Wählen Sie das .qz-Format.
$ wget [Quellcode-URL]
4-2. Kompilieren und installieren Sie den Quellcode.
$ tar -xvzf [Name der Archivdatei]
$ cd [Entpackter Ordner]
$ mkdir make_dir
$ cd make_dir
$ ../configure --enable-nls --enable-thread-safety
$ make
$ make install
$ cd src/interfaces/libpq
$ make
$ make install
4-3. Fügen Sie Umgebungsvariablen zu .bash_profile hinzu.
$ vi /home/[Cygwin-Benutzer]/.bash_profile
export PATH=/usr/local/pgsql/bin:/usr/local/pgsql/lib:$PATH
export PGHOST=localhost
export PGLIB=/usr/local/pgsql/lib
export PGDATA=/usr/local/pgsql/data
:wq
Führen Sie nach dem Hinzufügen Folgendes aus, um es zu laden.
source ~/.bashrc
source ~/.bash_profile
4-4. Grundeinstellung.
$ /usr/sbin/cygserver.exe &
$ initdb -U postgres
Dadurch wird der Name des postgreSQL-Superusers in [postgres] geändert.
4-5 Starten Sie den postgreSQL-Server und prüfen Sie, ob Sie sich anmelden können.
$ pg_ctl start
$ pg_ctl status
$ psql -l
$ psql postgres -U postgres
=>
=> \q
Wenn keine Fehler vorliegen, ist dies in Ordnung.
4-6 Anmelden Legen Sie als Nächstes das Kennwort des Superusers fest, erstellen Sie eine Datenbank und führen Sie eine einfache Kennwortauthentifizierung durch.
$ createuser strgdb -U postgres
$ createdb -O strgdb strgdb -U postgres
Super User[postgres]Einloggen mit
$ psql postgres -U postgres
Super User[postgres]Legen Sie ein Passwort für fest
=> alter role postgres with password '[Postgres Master Passwort]';
Benutzer für Sternregion[strgdb]Legen Sie ein Passwort für fest.
=> alter role strgdb with password '[DB-Passwort]';
=> alter role strgdb with login;
=> \q
Bearbeiten Sie die Berechtigungsdatei.
$ vi /etc/local/pgsql/data/pg_hba.conf
Von L95 zu Vertrauen → Passwort wie folgt einstellen
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
###local all all trust
local all all password
# IPv4 local connections:
###host all all 127.0.0.1/32 trust
host all all 127.0.0.1/32 password
# IPv6 local connections:
###host all all ::1/128 trust
host all all ::1/128 password
# Allow replication connections from localhost, by a user with the
# replication privilege.
###local replication all trust
###host replication all 127.0.0.1/32 trust
###host replication all ::1/128 trust
:wq
Wenn Sie fertig sind, pg_Starten Sie SQL neu
$ pg_ctl start
$ psql postgres -U postgres
Password for user postgres:* Geben Sie das Superuser-Passwort ein
=>
=> \q
$ psql strgdb -U strgdb
Password for user strgdb:* Geben Sie das strgdb-Benutzerpasswort ein
=>
=> \q
Wenn Sie sich anmelden können, ist es OK.
5. Bereiten Sie die Testquelle vor.
Nginx (Windows) Seite
/www/index.html
Passend.
Uwsgi (Cygwin) Seite
/home/[Lucida(Nutzername)]/uwsgi/test.py
Python-Testquelle
#!/usr/bin/python
# coding: UTF-8
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
6. Starten Sie cygwin und testen Sie den uwsgi-Server.
uwsgi --http :9090 --wsgi-file uwsgi/test.py
*** Starting uWSGI 2.0.18 (64bit) on [Tue Aug 25 17:58:48 2020] ***
~ Ausgelassen ~
*** uWSGI is running in multiple interpreter mode ***
Zulassen, wenn von der Firewall blockiert. Greifen Sie in Ihrem Browser auf Folgendes zu.
http://localhost:9090
Wenn Hello World angezeigt wird, ist es OK. Stoppen Sie den uwsgi-Server mit Strg + C.
8. Stellen Sie ein SSL-Zertifikat aus. Die folgenden Zertifikate sind erforderlich, um SSL zu verwenden.
Wenn Sie diese nicht haben, können Sie sie kaufen und erhalten oder eine Selbstzertifizierung ausstellen. Das Folgende zeigt das Verfahren zur Ausstellung einer Selbstzertifizierung.
8-1 Öffnen Sie die Datei openssl.cnf mit einem Texteditor und bearbeiten Sie Folgendes. [Cygwin-Installationsordner] /etc/pki/tls/openssl.cnf
L91 : default_days = 825
L150: countryName_default = JP
L155: stateOrProvinceName_default =XXXXXX * Präfektur
L158: localityName_default =XXXXXX * Gemeinden
L161: 0.organizationName_default =XXXXXX * Name der Organisation
* Die Zeile scheint sich je nach Version von openssl zu ändern
8-2. Erstellen Sie den privaten Schlüssel der Zertifizierungsstelle und das Zertifikat der Stammzertifizierungsstelle. Es wird mit Cygwin arbeiten.
$ mkdir /etc/pki/CA
$ chmod 700 /etc/pki/CA
$ cd /etc/pki/CA
$ openssl genrsa -des3 -out ca.key 2048
Enter pass phrase for ca.key:* Zertifizierungsstelle ordnungsgemäß bestanden
Verifying - Enter pass phrase for ca.key:* Wie auf dem Zertifizierungsstellenausweis
$ openssl req -x509 -new -nodes -key ca.key -sha256 -out ca.pem
Enter pass phrase for ca.key:* Wie auf dem Zertifizierungsstellenausweis
~ Ausgelassen ~
Common Name (eg, your name or your server's hostname) []:* Name der Zertifizierungsstelle
* Ansonsten keine Eingabe
~ Ausgelassen ~
8-3 Installieren Sie das Zertifizierungsstellenzertifikat auf dem Client. Suchen Sie unter Windows → Einstellungen nach "Zertifikat". Öffnen Sie Benutzerzertifikate verwalten. Klicken Sie mit der rechten Maustaste auf eine vertrauenswürdige Stammzertifizierungsstelle, Alle Aufgaben → Importieren. Wählen Sie den aktuellen Benutzer aus, ca.pem, wählen Sie die Routenzertifizierungsstelle aus und klicken Sie auf OK.
8-4. Erstellen Sie ein Serverzertifikat. Es wird mit Cygwin arbeiten.
$ mkdir /etc/pki/Server
$ chmod 700 /etc/pki/Server
$ cd /etc/pki/Server
$ openssl genrsa -out server.key 2048
$ openssl req -new -key server.key -out server.csr
~ Ausgelassen ~
Common Name (eg, your name or your server's hostname) []:* IP-Adresse und Hostname entsprechend
* Ansonsten keine Eingabe
~ Ausgelassen ~
$ vi server.txt
---------
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
---------\wq
$ openssl x509 -req -in server.csr -CA ../CA/ca.pem -CAkey ../CA/ca.key -CAcreateserial -out server.crt -sha256 -extfile server.txt
Enter pass phrase for ../CA/ca.key:* Zertifizierungsstellenausweis
9. nginx Config-Einstellungen Passen Sie nginx.config in 9-1.nginx an. [Nginx-Installationsordner] /config/nginx.conf
#user nobody;
worker_processes auto;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
worker_rlimit_nofile 2048;
events {
### worker_connections 1024;
worker_connections 2048;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include [HTML-Quellordner]/source/nginx/*.conf;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include [HTML-Quellordner]/source/nginx/sites-enabled/*;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Fügen Sie diese beiden Zeilen hinzu
### server {
### listen 80;
### server_name localhost;
###
### #charset koi8-r;
###
### #access_log logs/host.access.log main;
###
### location / {
### root html;
### index index.html index.htm;
### }
###
### #error_page 404 /404.html;
###
### # redirect server error pages to the static page /50x.html
### #
### error_page 500 502 503 504 /50x.html;
### location = /50x.html {
### root html;
### }
~ Ausgelassen ~
}
~ Ausgelassen ~
}
9-2. Bereiten Sie die Konfiguration für den Nginx-Server vor. Bereiten Sie eine andere als die Standarddatei vor. [Geeigneter Ordner] /nginx/https.conf
server {
listen 443 ssl http2;
server_name localhost;
ssl_protocols TLSv1.2;
ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
ssl_ecdh_curve prime256v1;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_certificate [Cygwin-Installationsordner]/etc/pki/Server/server.crt;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Serverzertifikat
ssl_certificate_key [Cygwin-Installationsordner]/etc/pki/Server/server.key;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Privater Serverschlüssel
keepalive_timeout 70;
sendfile on;
client_max_body_size 0;
root [HTML-Quellordner]
~~~~~~~~~~~~~~~~~~~~~
server_tokens off;
charset utf-8;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
add_header Strict-Transport-Security "max-age=31536000";
location / {
index index.html;
}
location /uwsgi {
include uwsgi_params;
proxy_pass https://127.0.0.1:9090;
}
}
9-3. Starten Sie den Server.
Starten Sie cygwin.
$ uwsgi --master --https 127.0.0.1:9090,/etc/pki/Server/server.crt,/etc/pki/Server/server.key --wsgi-file strg_uwsgi/test.py
Starten Sie nginx an der Windows DOS-Eingabeaufforderung.
$ [Nginx-Installationslaufwerk]:
$ cd [Nginx-Installationsordner]
$ start nginx
Greifen Sie mit Ihrem Browser auf die folgenden zwei Stellen zu.
https://localhost/
Es ist in Ordnung, wenn der obere Rand der Webseite angezeigt wird.
https://localhost/uwsgi
Wenn Hello World angezeigt wird, ist es OK.
Stoppen Sie die Server nginx und uwsgi einmal. uwsgi ist Strg+Halt bei C.
$ nginx -s quit
das ist alles. Dann mach was du willst.
Beginnen Sie mit dem folgenden Befehl.
Nginx (Windows) Seite
# start nginx
Cygwin Seite
# /usr/sbin/cygserver.exe &
# pg_ctl start
# pg_ctl status
# uwsgi --master --https 127.0.0.1:9090,/etc/pki/Server/server.crt,/etc/pki/Server/server.key --wsgi-file uwsgi/test.py
Verwenden Sie zum Beenden den folgenden Befehl.
Nginx (Windows) Seite
# nginx -s stop
Cygwin Seite
※Ctrl+Drücken Sie C.
# pg_ctl stop
# pg_ctl status
Beenden Sie Cygwin
Die Titel sind unten weggelassen.
Recommended Posts