Actuellement, je crée un jeu de stratégie qui fonctionne sur le Web, mais j'ai eu des problèmes car j'ai annulé le serveur loué pour diverses raisons.
Argent ... non ... ;;;
Donc, j'ai Windows 10 sur mon PC, mais j'ai vérifié si un environnement expérimental pouvait être créé localement, et quand je l'ai essayé, j'ai réussi à le faire, donc je vais le déployer. Si vous avez un ordinateur, vous pouvez mettre en place un environnement Web sans dépenser d'argent, donc même si vous avez des problèmes, essayez-le!
Cependant, la sécurité est quasiment ignorée car c'est un "environnement vilain". De plus, créer un serveur sous Windows 10 et le publier sur le Web est une violation de la licence de Microsoft, donc ** Ne le faites jamais **. Uniquement en utilisant l'environnement expérimental local.
Convient aux applications saisies à partir d'un navigateur Web. Fondamentalement, il s'agit d'une opération frontale avec HTML5 et Javascript, mais on suppose que les calculs et les sorties compliqués sont traités par Python sur un serveur virtuel. Rendez également possible la gestion de la base de données.
** Logiciels requis **
Il existe une version de nginx compatible avec Windows, alors utilisez-la. En outre, flask est utilisé comme cadre entre uwsgi et nginx.
Il y a une déclaration selon laquelle uwsgi utilisé dans le serveur virtuel est pris en charge par Windows, mais en fait, il ne peut pas être exécuté directement sur Windows (cela ne fonctionne pas ...). Au lieu de cela, uwsgi peut être exécuté virtuellement sur le logiciel de terminal "cygwin" qui fonctionne sous Windows. Le flux de processus est une image du passage d'une action d'entrée du Web à Cygwin via nginx, du traitement de Python et de PostgreSQL, et de sa restitution à nginx.
En tant qu'image, cygwin est un serveur uwsgi et postgreSQL.
En fait, mettre en place l'environnement. Ici, installez l'application suivante.
1-1. Démarrez l'invite de commande dans nginx-X.X.X de la destination. 1-2 Démarrer Entrez nginx pour exécuter. 1 à 3. Affichez http: // localhost dans le navigateur. Autoriser si bloqué par le pare-feu. Si "Welcome to nginx!" S'affiche, la configuration est normale. 1-4.nginx -s quitte pour quitter.
2. Installez python et les bibliothèques requises. Obtenez le programme d'installation de: En gros * utilisez le programme d'installation basé sur le Web. Configurez-le où vous le souhaitez avec le programme d'installation que vous avez. python HP
Vous devriez cocher Ajouter Python x.x au chemin. Pour les autres, sélectionnez la valeur par défaut ou l'option en fonction de votre environnement. Je vais le tester une fois l'installation terminée.
# python -V
Python 3.8.2
* Pour Windows, cela semble être python, pas python3.
# pip3 install flask requests requests_oauthlib python-dateutil psycopg2
~ Omis ~
# pip3 list
~ Omis ci-dessous ~
3. Installez uwsgi. Ici, nous allons utiliser Cygwin Terminal pour l'installer sur l'émulateur Linux. Configurez-le où vous le souhaitez avec le programme d'installation que vous avez. Cygwin HP
Sélectionnez ce qui suit pour le package (notez que sinon, il sera ignoré):
Choisissez la valeur par défaut ou l'option qui convient à votre environnement. L'environnement virtuel peut être sous la configuration actuelle.
Après la configuration, démarrez cygwin et configurez uwsgi.
Vérifiez le nom d'utilisateur de la maison ★ Après cela[Utilisateur Cygwin]Unifiez avec
# echo $USER
* Par défaut, le nom d'utilisateur de connexion Windows(dossier)Aura le même nom que
apt avec wget-Obtenez cyg
$ wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
$ chmod 755 apt-cyg
$ mv apt-cyg /usr/local/bin
Pour les commandes système
$ apt-cyg install procps
Obtenez la bibliothèque python3
$ apt-cyg install python3-devel
Téléchargez uwsgi depuis git et configurez-le.
$ wget https://github.com/unbit/uwsgi/archive/[Nom de l'archive de publication]
$ unzip [Nom de l'archive]
$ cd uwsgi-[Nom de la version]
$ python3 setup.py install
* Spécifiez la version de publication pour l'archive
* Cela prend beaucoup de temps car la compilation fonctionne.
Au fait, vérifiez l'encodage par défaut au cas où. S'il est basé sur Linux, uft-8 est basique, mais Cygwin est utf-8 par défaut, donc il ne devrait y avoir aucun problème.
$ python3
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>> exit
[ctrl+D]* Fin par entrée clé
Et si ce n'était pas utf-8? Ajoutez un encodage à votre profil.
$ vi /home/[Utilisateur Cygwin]/.bash_profile
export LANG=ja_JP.UTF-8
:wq
Après l'ajout, exécutez ce qui suit pour le charger.
$ source ~/.bash_profile
4-1. Obtenez le code source de ce qui suit.
postgresql HP
Sélectionnez le format .qz.
$ wget [URL du code source]
4-2 Compilez et installez le code source.
$ tar -xvzf [Nom du fichier d'archive]
$ cd [Dossier décompressé]
$ mkdir make_dir
$ cd make_dir
$ ../configure --enable-nls --enable-thread-safety
$ make
$ make install
$ cd src/interfaces/libpq
$ make
$ make install
4-3. Ajoutez des variables d'environnement à .bash_profile.
$ vi /home/[Utilisateur Cygwin]/.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
Après l'ajout, exécutez ce qui suit pour le charger.
source ~/.bashrc
source ~/.bash_profile
4-4 Réglage initial.
$ /usr/sbin/cygserver.exe &
$ initdb -U postgres
Cela changera le nom du superutilisateur postgreSQL en [postgres].
4-5 Démarrez le serveur postgreSQL et vérifiez si vous pouvez vous connecter.
$ pg_ctl start
$ pg_ctl status
$ psql -l
$ psql postgres -U postgres
=>
=> \q
S'il n'y a aucune erreur, c'est OK.
4-6 Connexion Ensuite, définissez le mot de passe du super-utilisateur, créez une base de données et effectuez une authentification par mot de passe simple.
$ createuser strgdb -U postgres
$ createdb -O strgdb strgdb -U postgres
Super utilisateur[postgres]Connectez-vous avec
$ psql postgres -U postgres
Super utilisateur[postgres]Définissez un mot de passe pour
=> alter role postgres with password '[mot de passe principal postgres]';
Utilisateur pour la région étoile[strgdb]Définissez un mot de passe pour.
=> alter role strgdb with password '[Mot de passe DB]';
=> alter role strgdb with login;
=> \q
Modifiez le fichier d'autorisations.
$ vi /etc/local/pgsql/data/pg_hba.conf
De L95 à confiance → mot de passe défini comme suit
# 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
Une fois terminé, pg_Redémarrez SQL
$ pg_ctl start
$ psql postgres -U postgres
Password for user postgres:* Entrez le mot de passe du super utilisateur
=>
=> \q
$ psql strgdb -U strgdb
Password for user strgdb:* Entrez le mot de passe utilisateur strgdb
=>
=> \q
Si vous pouvez vous connecter, c'est OK.
5. Préparez la source de test.
côté nginx (Windows)
/www/index.html
De manière appropriée.
côté uwsgi (Cygwin)
/home/[Lucida(Nom d'utilisateur)]/uwsgi/test.py
source de test python
#!/usr/bin/python
# coding: UTF-8
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
6. Démarrez cygwin et testez le serveur uwsgi.
uwsgi --http :9090 --wsgi-file uwsgi/test.py
*** Starting uWSGI 2.0.18 (64bit) on [Tue Aug 25 17:58:48 2020] ***
~ Omis ~
*** uWSGI is running in multiple interpreter mode ***
Autoriser si bloqué par le pare-feu. Accédez aux éléments suivants dans votre navigateur.
http://localhost:9090
Si Hello World est affiché, c'est OK. Arrêtez le serveur uwsgi avec Ctrl + C.
8. Émettez un certificat SSL. Les certificats suivants sont requis pour utiliser SSL.
Si vous ne les avez pas, vous pouvez les acheter et les obtenir ou émettre une auto-certification. Ce qui suit montre la procédure de délivrance d'une auto-certification.
Ouvrez le fichier openssl.cnf avec un éditeur de texte et modifiez ce qui suit. [dossier d'installation cygwin] /etc/pki/tls/openssl.cnf
L91 : default_days = 825
L150: countryName_default = JP
L155: stateOrProvinceName_default =XXXXXX * Préfecture
L158: localityName_default =XXXXXX * Municipalités
L161: 0.organizationName_default =XXXXXX * Nom de l'organisation
* La ligne semble changer en fonction de la version d'openssl
8-2 Créez la clé privée de l'autorité de certification et le certificat de l'autorité de certification racine. Ce sera un travail avec cygwin.
$ 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:* L'autorité de certification réussit correctement
Verifying - Enter pass phrase for ca.key:* Identique à la carte d'autorité de certification
$ openssl req -x509 -new -nodes -key ca.key -sha256 -out ca.pem
Enter pass phrase for ca.key:* Identique à la carte d'autorité de certification
~ Omis ~
Common Name (eg, your name or your server's hostname) []:* Nom de l'autorité de certification
* Autre que cela, aucune entrée
~ Omis ~
8-3. Installez le certificat d'autorité de certification sur le client. Dans Windows → Paramètres, recherchez "Certificat". Ouvrez Gérer les certificats utilisateur. Cliquez avec le bouton droit sur une autorité de certification racine de confiance, Toutes les tâches → Importer. Sélectionnez l'utilisateur actuel, ca.pem, sélectionnez l'autorité de certification d'itinéraire, puis OK.
8-4. Créez un certificat de serveur. Ce sera un travail avec cygwin.
$ 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
~ Omis ~
Common Name (eg, your name or your server's hostname) []:* Adresse IP et nom d'hôte selon le cas
* Autre que cela, aucune entrée
~ Omis ~
$ 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:* Pass d'autorité de certification
9. Paramètres de configuration de nginx Ajustez nginx.config dans 9-1.nginx. [dossier d'installation de nginx] /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 [Dossier source HTML]/source/nginx/*.conf;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include [Dossier source HTML]/source/nginx/sites-enabled/*;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Ajoutez ces deux lignes
### 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;
### }
~ Omis ~
}
~ Omis ~
}
9-2. Préparez la configuration pour le serveur nginx. Préparez un fichier différent de celui par défaut. [Dossier approprié] /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 [Dossier d'installation de Cygwin]/etc/pki/Server/server.crt;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Certificat de serveur
ssl_certificate_key [Dossier d'installation de Cygwin]/etc/pki/Server/server.key;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Clé privée du serveur
keepalive_timeout 70;
sendfile on;
client_max_body_size 0;
root [Dossier source HTML]
~~~~~~~~~~~~~~~~~~~~~
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 Test de démarrage du serveur.
Démarrez 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
Démarrez nginx à l'invite Windows DOS.
$ [lecteur d'installation nginx]:
$ cd [dossier d'installation de nginx]
$ start nginx
Accédez aux deux emplacements suivants avec votre navigateur.
https://localhost/
C'est OK si le haut de la page Web est affiché.
https://localhost/uwsgi
Si Hello World s'affiche, c'est OK.
Arrêtez une fois les serveurs nginx et uwsgi. uwsgi est Ctrl+Arrêtez-vous à C.
$ nginx -s quit
c'est tout. Alors fais ce que tu veux.
Commencez par la commande suivante.
côté nginx (Windows)
# start nginx
côté cygwin
# /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
Pour terminer, utilisez la commande suivante.
côté nginx (Windows)
# nginx -s stop
côté cygwin
※Ctrl+Appuyez sur C
# pg_ctl stop
# pg_ctl status
Quittez Cygwin
Les titres sont omis ci-dessous.
Recommended Posts