ΠΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ python ΠΊ apache
ΠΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ Apache Π½Π° Π·Π°ΠΏΡΡΠΊ Python Π² Windows
Π‘ΠΊΡΠΈΠΏΡΡ Python ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ Apache Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² PHP. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ.
Π― ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π» Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎ ΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈ ΠΏΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΠΏΡΡΠΈ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Python
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Python, ΡΠΎ ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ Π·Π΄Π΅ΡΡ: https://www.python.org/downloads/windows/ (ΡΠ°ΠΉΠ» Windows x86-64 executable installer).
Π― ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Π² ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠΉ ΠΏΡΡΡ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ±ΡΠ°Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Python Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ).
ΠΠ°Π±Π΅Π³Π°Ρ Π²ΠΏΠ΅ΡΡΠ΄ ΡΠΊΠ°ΠΆΡ β ΠΏΡΡΡ Π΄ΠΎ ΠΏΠ°ΠΏΠΊΠΈ Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Python Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Python cgi ΡΠΊΡΠΈΠΏΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠ»ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ ΠΏΠ°ΠΏΠΊΡ, ΠΊΡΠ΄Π° Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ Python, Π»ΠΈΠ±ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΈΠΌΡ ΠΏΡΡΡ Π΄ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ.
Π ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»Π° ΡΠ½ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π»ΠΈΠ½Ρ ΠΏΡΡΠΈ β Ρ ΡΠΎΠ³Π»Π°ΡΠΈΠ»ΡΡ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ):
2. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Apache Π½Π° Π·Π°ΠΏΡΡΠΊ Python CGI
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ» httpd.conf, Ρ ΠΌΠ΅Π½Ρ ΠΎΠ½ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΠΏΠΎ ΠΏΡΡΠΈ C:\Server\bin\Apache24\conf\httpd.conf.
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠ°ΠΌ ΡΡΡΠΎΠΊΡ
ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊ Π½Π΅ΠΉ ExecCGI. ΠΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΡΡΠΎΠΊΠ° (ΠΠΠΠΠΠΠΠ: Π½Π°Π±ΠΎΡ ΠΎΠΏΡΠΈΠΉ Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ):
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ:
Π Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ Π΅Ρ, ΡΠΎ Π΅ΡΡΡ ΡΠ΄Π°Π»ΠΈΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ» # Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠΎΠΊΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊ ΠΊΠΎΠ½ΡΡ ΡΡΡΠΎΠΊΠΈ .py. ΠΠΎΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
3. ΠΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Apache
4. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Python
Π ΠΏΠ°ΠΏΠΊΠ΅ Π΄Π»Ρ Π²Π°ΡΠΈΡ ΡΠ°ΠΉΡΠΎΠ² (Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ C:\Server\data\htdocs\) ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» test.py ΠΈ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π² Π½Π΅Π³ΠΎ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΌΡΡ Π²Π΅ΡΡ Π½ΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎ Π΅ΡΡΡ Π½Π° C:\Users\Alex\AppData\Local\Programs\Python\Python37\python.exe β Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π΅Ρ Π½Π° ΡΠ²ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·Π°Π² ΠΏΡΡΡ Π΄ΠΎ ΡΠ°ΠΉΠ»Π° python.exe. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠ±ΡΠ°Π»ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠ°ΠΏΠΊΡ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Alex Π½Π° ΠΈΠΌΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ ΠΠΠΠ§ΠΠΠΠ: ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΡΡ Π΄ΠΎ ΡΠ°ΠΉΠ»Π° python.exe ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π² C:\Users\), Π° ΡΠ°ΠΊΠΆΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ°ΠΏΠΊΠ° Python39:
ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΌΡΡ Π²Π΅ΡΡ Π½ΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²Π°ΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ.
ΠΠΎΠΉ ΠΏΡΡΡ Π² ΠΌΠΈΡΠ΅ web-devel
ΠΠΎΠΈ ΡΠ°Π³ΠΈ Π² ΡΡΠΎΠΌ Π½Π΅Π»Π΅Π³ΠΊΠΎΠΌ, Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΌ ΠΌΠΈΡΠ΅ web-devel
ΡΡΠ΅Π΄Π°, 12 ΡΠ΅Π½ΡΡΠ±ΡΡ 2012 Π³.
ΠΠ°ΠΊ Ρ ΠΏΡΠΈΠΊΡΡΡΠΈΠ» Python ΠΊ Apache
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Python 2.6 ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π±ΡΡΡΡΠΎ ΠΈ Π² Π΄Π²Π° ΡΠ°Π³Π°: Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΠ½ΡΡΠ°Π»ΡΡΠΎΡ. ΠΡΠ»ΠΈ Π²Ρ Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Apache, ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΈ Π΅Π³ΠΎ Ρ ΠΎΡΡ-ΡΠ°ΠΉΡΠ°. ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Apache, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ°Π·Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ VirtualHosts. Π’Π°ΠΊ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Π±ΡΠ΄Π΅Ρ. ΠΠ°Π½ΡΠ°Π»Ρ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ vhosts Π² Apache Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ Π² Π³ΡΠ³Π»Π΅. ΠΠΎ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π½Π°ΡΠΈΠΌ Π±Π°ΡΠ°Π½Π°ΠΌ π
ΠΡΠΈΡΡΡΠΏΠ°Π΅ΠΌ ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅
ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ Ρ ΡΠ΅ΡΠΈΠ» Π·Π°ΠΉΡΠΈ Π½Π° ΠΎΡΠΈΡΠ°ΠΈΠ»Π½ΡΠΉ ΡΠ°ΠΉΡ Python ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ°ΠΌ ΠΏΠΈΡΡΡ ΠΏΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΠΎΠ΄ web. Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΅ΡΡΡ ΡΠΎΠ»ΠΊΠΎΠ²Π°Ρ ΡΡΠ°ΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ http://docs.python.org/howto/webservers.html. Π’Π°ΠΌ ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Python Π² web. ΠΠ½Π΅ ΠΏΡΠΈΠ³Π»ΡΠ½ΡΠ»ΡΡ ΡΠΏΠΎΡΠΎΠ±, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ mod_wsgi http://docs.python.org/howto/webservers.html#mod-wsgi. Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, ΡΡΠΎ Π½Π° ΡΠ°ΠΉΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Django, ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ Python, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ mod_wsgi. ΠΡ ΡΡΠΎ ΠΆΠ΅ ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ,
Try it yourself
Π£ mod_wsgi Π΅ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΠΊΠ° Π½Π° code.google.com. ΠΠ΅ΡΠ΅ΠΉΠ΄Ρ Π½Π° Π½Π΅Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΊΠ°ΠΊ ΡΠ°ΠΌ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ (Pthon 2.6) ΠΏΠΎΠ΄ Windows, ΡΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΏΡΠΈΠΊΡΡΡΠΈΡΡ ΠΊ Apache. ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠ°ΡΠ°Π½Π½ΡΠΉ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Apache (C:\Program Files\Apache\modules\) ΠΈ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅ httpd.conf ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ:
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Apache.
ΠΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΡΡΠ°Π»ΠΎΡΡ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΡΠ° ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π½Π° Python.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ²ΡΠ·ΠΊΠΈ Apache+MySQL+Python Π±Π΅Π· ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Ubuntu 14.04
ΠΠ°Π½Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ, ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Python 3, MySQL ΠΈ Apache2 Π±Π΅Π· ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ.
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Python ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Django; ΡΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Python, ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ.
ΠΠ°Π½Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² (apt-get ΠΈ Pip).
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ (ΠΈΠ»ΠΈ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡΡ) ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² β ΡΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠΎΡΠ°ΡΡ ΠΊΠΎΠ΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ Π΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ. ΠΠ΅Π· Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π±ΡΠ»Π° Π±Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅.
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
Π§ΡΠΎΠ±Ρ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Ρ, ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ:
1: ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Python
Π‘Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Python 3 ΠΊΠ°ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ python.
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ΅ΠΊΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ Python.
ΠΠ° ΡΠ²Π΅ΠΆΠ΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ Ubuntu 14.04 ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ:
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ Python 3. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ΄Π°Π»ΠΈΡΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Python 2.7:
sudo rm /usr/bin/python
ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Python 3.
Π‘Π½ΠΎΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΡΠΈΡ Python.
ΠΠ° ΡΠΊΡΠ°Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ:
2: Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Pip
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Pip, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Python. Π‘Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ»ΠΈ Π½Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ.
sudo apt-get update
Pip ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²ΡΠ΅ΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ Python 3. ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Pip Π·Π°ΠΏΡΡΡΠΈΡΠ΅:
sudo apt-get install python3-pip
3: Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° MySQL
ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ Π‘Π£ΠΠ MySQL.
Π‘ΠΈΡΡΠ΅ΠΌΠ° MySQL ΠΏΡΠΎΡΡΠ° Π² ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅:
sudo apt-get install mysql-server
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π½Π°Π΄ΡΠΆΠ½ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ root-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ MySQL. Π‘Π΅ΡΠ²Π΅Ρ MySQLΠ±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅:
ΠΡΠΎΡ ΡΠΊΡΠΈΠΏΡ Π·Π°Π΄Π°ΡΡ ΡΡΠ΄ Π²ΠΎΠΏΡΠΎΡΠΎΠ². Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ root-ΠΏΠ°ΡΠΎΠ»Ρ. Π‘ΠΊΡΠΈΠΏΡ ΡΠΏΡΠΎΡΠΈΡ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ root-ΠΏΠ°ΡΠΎΠ»Ρ, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ, Π²Π²Π΅Π΄ΠΈΡΠ΅ n. Π ΠΎΡΠ²Π΅Ρ Π½Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΆΠ°ΡΡ Enter, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ½ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
Python 3 ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ MySQL. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, MySQLclient), Π½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ pymysql. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Pip:
sudo pip3 install pymysql
4: Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Apache 2
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Apache 2 ΠΈ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΡΠ°ΠΉΠ»Ρ Python ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Apache Ρ ΠΏΠΎΠΌΠΎΡΡΡ apt-get:
sudo apt-get install apache2
ΠΠ°ΠΊ ΠΈ MySQL, ΡΠ΅ΡΠ²Π΅Ρ Apache Π·Π°ΠΏΡΡΡΠΈΡΡΡ ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΏΠΎΡΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ root-ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ°ΠΉΡΠ° Π² Π½Π°Π΄ΡΠΆΠ½ΡΡ ΡΠΎΡΠΊΡ ΡΠΈΡΡΠ΅ΠΌΡ. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² /var/www/html. Π‘Π»Π΅Π΄ΡΡ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΈ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ test Π² ΡΡΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
sudo mkdir /var/www/test
Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Python ΠΈ Apache. ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ.
sudo a2dismod mpm_event
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ΅ Apache ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠ°Π²Π° Π½Π° Π·Π°ΠΏΡΡΠΊ ΡΠΊΡΠΈΠΏΡΠΎΠ².
sudo a2enmod mpm_prefork cgi
ΠΠ°ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Apache, ΡΡΠΎΠ±Ρ ΡΠ²Π½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ Python ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΡ . ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ nano ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°.
sudo nano /etc/apache2/sites-enabled/000-default.conf
ΠΠΎΡΠ»Π΅ ΡΡΡΠΎΠΊΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΡΠΎΡ Π±Π»ΠΎΠΊ Directory ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Apache Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. ΠΠ½ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Apache, ΡΡΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ /var/www/test ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π·Π°Π΄Π°ΡΡ index.py Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ.
Π’Π°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΡΠ°ΠΉΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΡΡ Π΄Π»Ρ DocumentRoot. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ DocumentRoot /var/www/html, ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π΅Ρ:
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΠΉΠ» ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΎΠΉ Π²ΠΈΠ΄:
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ». Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΡΡΠΏΠΈΠ»ΠΈ Π² ΡΠΈΠ»Ρ, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Apache.
sudo service apache2 restart
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Apache 2 ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ FQDN ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ServerName Π΅ΡΠ΅ Π½Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π°.
ΠΡΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ Π²ΡΠ²ΠΎΠ΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΡΡΠΎΠΊΠ° [ OK ], Apache ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠ΅Π½.
5: Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΠΈ ΡΠ²ΡΠ·ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΠ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΠ. ΠΠΎΠΉΠ΄ΠΈΡΠ΅ Π² MySQL, Π²Π²Π΅Π΄Ρ root-ΠΏΠ°ΡΠΎΠ»Ρ.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΠ (Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π°Π·ΠΎΠ²ΡΠΌ Π΅Ρ example):
CREATE DATABASE example;
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ Python:
CREATE TABLE numbers (num INT, word VARCHAR(20));
ΠΠ°ΠΆΠΌΠΈΡΠ΅ CTRL+D, ΡΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈ.
ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Python.
sudo nano /var/www/test/index.py
Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΈ Π²Π½Π΅ΡΠΈΡΠ΅ Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄. Π ΡΡΡΠΎΠΊΠ΅ passwd ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΡΠ²ΠΎΠΉ root-ΠΏΠ°ΡΠΎΠ»Ρ MySQL.
#!/usr/bin/python
# Turn on debug mode.
import cgitb
cgitb.enable()
# Print necessary headers.
print(«Content-Type: text/html»)
print()
# Connect to the database.
import pymysql
conn = pymysql.connect(
db=’example’,
user=’root’,
passwd=’your_root_mysql_password’,
host=’localhost’)
c = conn.cursor()
# Insert some example data.
c.execute(«INSERT INTO numbers VALUES (1, ‘One!’)»)
c.execute(«INSERT INTO numbers VALUES (2, ‘Two!’)»)
c.execute(«INSERT INTO numbers VALUES (3, ‘Three!’)»)
conn.commit()
# Print the contents of the database.
c.execute(«SELECT * FROM numbers»)
print([(r[0], r[1]) for r in c.fetchall()])
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ».
ΠΠ°ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠ°Π²Π° Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ».
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠ°Π²Π°Ρ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ Β«ΠΡΠ½ΠΎΠ²Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ LinuxΒ».
sudo chmod 755 /var/www/test/index.py
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΎΡΠΊΡΠΎΠΉΡΠ΅ http://ip_Π°Π΄ΡΠ΅Ρ_ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠΎΡΠ²ΠΈΡΡΡ ΡΠ°ΠΊΠΎΠΉ Π²ΡΠ²ΠΎΠ΄:
http://your_server_ip
[(1, ‘One!’), (2, ‘Two!’), (3, ‘Three!’)]
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Python 3 Ρ Π½Π°Π΄ΡΠΆΠ½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Π½Π° Π±ΡΠΊΡΠ½Π΄Π΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ ΡΡΠ°Π»ΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
ΠΠ΄Π½Π°ΠΊΠΎ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ·Π²ΠΈΠΌ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. SSL-ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΡΡΠΎΠ²Π΅Π½Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ SSL-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π½Π° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ Apache, ΡΠΈΡΠ°ΠΉΡΠ΅ ΡΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ.
HackWare.ru
ΠΡΠΈΡΠ½ΡΠΉ Ρ Π°ΠΊΠΈΠ½Π³ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
ΠΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Python ΠΈ PIP Π½Π° Windows 10. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Python Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°
Π―Π·ΡΠΊ Python ΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠ½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅, ΠΎΡΠ΅Π½ΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° Python. ΠΡΠ΅ ΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Linux. ΠΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡΠ΅Π΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π² Windows β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Python.
Python β ΡΡΠΎ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΡΠΉ (ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ) ΡΠ·ΡΠΊ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ. Π ΡΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅ Python ΠΏΠΎΡ ΠΎΠΆ Π½Π° PHP.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π΅ Π³Π»Π°Π²Π½ΡΡ Π²Π΅ΡΡΠΈΠΈ Python:
ΠΠ½ΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅ Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΠ΅ΠΉΡΠ°Ρ ΡΠΆΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ ΡΡΠΎΠΊ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Python 2.x ΠΈ ΡΡΡ Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ. ΠΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Python 3. Π₯ΠΎΡΡ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠ½Ρ, ΡΠΎ ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΈ Ρ Π΄ΠΎΠΏΠΎΠ»Π½Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ Π²ΡΠΎΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ. Π₯ΠΎΡΡ ΠΌΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΡ, Π·Π°ΡΠΎ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ PIP β ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ Python, β Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Python Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ° β ΡΠΎ Π΅ΡΡΡ ΠΎΠ½ ΡΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎ ΠΈ PHP.
ΠΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Python Π² Windows
ΠΠ»Ρ Python 3.x ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Π²Π΅ΡΠΎΠΊ:
ΠΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Python 3.8.x.
ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Python Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Windows XP ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ .
ΠΡΡΠ°ΡΠΈ, Π²Π΅Π΄Ρ Python Π΅ΡΡΡ ΠΈ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows,
Π³Π΄Π΅ Ρ Π½Π΅Π³ΠΎ ΠΎΠ΄Π½Π° Π·Π²Π΅Π·Π΄Π° (ΠΈΠ· ΠΏΡΡΠΈ) ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΎΡΠ·ΡΠ² (ΡΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ):
ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠ° β ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ.
ΠΠ»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ Windows: https://www.python.org/downloads/windows/
ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΠΏΡΡΠΊ Python 3, Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ ΡΡΠΎ Python 3.8.0.
ΠΡΠΎΠ»ΠΈΡΡΠ½ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π²Π½ΠΈΠ· ΠΈ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ Β«Windows x86-64 executable installerΒ»:
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠΊΠ°ΡΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ»:
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ Π³Π°Π»ΠΎΡΠΊΡ Β«Add Python 3.8 to PATHΒ». ΠΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΊΡΠΈΠΏΡ Π½Π° Python, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ Π΄ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°.
ΠΠΎ-Π²ΡΠΎΡΡΡ , Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠ°ΠΏΠΊΡ, ΠΊΡΠ΄Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Β«Customize installationΒ».
Π ΡΡΠΎΠΌ ΠΎΠΊΠ½Π΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΠΌ, Π³Π»Π°Π²Π½ΠΎΠ΅ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΡΠΎΠΈΡ Π³Π°Π»ΠΎΡΠΊΠ° Π½Π°ΠΏΡΠΎΡΠΈΠ² pip:
Π ΡΡΠΎΠΌ ΠΎΠΊΠ½Π΅ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΡΠΎΠΈΡ Π³Π°Π»ΠΎΡΠΊΠ° Β«Add Python to environment variablesΒ» ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π° Β«C:\Python\Python38Β»:
ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Β«InstallΒ»:
Πβ¦ Π²ΡΡ Π³ΠΎΡΠΎΠ²ΠΎ! Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ.
Π£ ΠΌΠ΅Π½Ρ Π² Windows ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΡΠ΅ΠΉ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»ΠΈΠ½ΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ 260 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π½ΠΎ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡ ΡΡΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ, ΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡ ΡΡΠΎ β ΡΡΠΎΠ±Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½Π°ΠΆΠΌΠΈΡΠ΅ Β«Disable path length limitΒ». ΠΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½ΠΈ Π½Π° ΡΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ. ΠΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΠΏΡΡΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»Π΅Π΅ 260 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π² ΡΡΠ°ΡΡΡΡ :
ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ: Π½Π°ΠΆΠΌΠΈΡΠ΅ Win+x ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Β«Windows PowerShellΒ»:
ΠΡΠΊΡΠΎΠ΅ΡΡΡ PowerShell. ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΏΡΠΈΠ²ΡΡΠ½Π΅Π΅ ΠΎΠ±ΡΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ° Windows (CMD), ΡΠΎ Π½Π°ΠΆΠΌΠΈΡΠ΅ Win+r ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅
Π Π»ΡΠ±ΠΎΠΌ ΠΈΠ· ΠΎΡΠΊΡΡΠ²ΡΠΈΡ ΡΡ ΠΎΠΊΠΎΠ½ Π²Π²Π΅Π΄ΠΈΡΠ΅:
ΠΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΠ²ΠΈΡΡΡ Π²Π΅ΡΡΠΈΡ Python, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ°ΠΊ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Python Π² Windows
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΡ Python ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΡ Π½ΡΠΆΠ½ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ Π±ΡΡΡΡΠΎ Π·Π°Π²Π΅ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈ Π²Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΡΠΎΠΌΠ΅ ΠΌΠ΅Π»ΡΠΊΠ½ΡΠ²ΡΠ΅Π³ΠΎ ΠΎΠΊΠ½Π°.
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΠΈΠ΄Π°:
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ hello_world.py:
ΠΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΠΈΠ·ΡΡΠ°ΡΡ Python
ΠΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ PIP Π² Windows
PIP β ΡΡΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ°ΡΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ Python. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠ°ΠΊ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΈΡΡΠΌ PIP ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ β Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Python, ΡΠΎ PIP ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ.
Π Linux Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Python ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ β Π½ΠΎ ΡΠ°ΠΊΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π² pip. ΠΠΎΡΡΠΎΠΌΡ Π² Linux ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° pip ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ. Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Windows, ΡΠΎ Π·Π΄Π΅ΡΡ pip ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΡΠΌ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½ΡΠΆΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ.
ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΡΡΠ΅Π΄Ρ Python ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π²ΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² pip ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ:
ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π°ΠΆΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π‘ΡΠ΅Π΄ΡΡΠ²Π° ΡΠ±ΠΎΡΠΊΠΈ C++
ΠΡΠΎ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠ°Π³ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ pip β Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π΅Π³ΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΠ΅, ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ pip ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, ΡΡΠΎΠ±Ρ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»ΠΎ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅ΡΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Β«Π‘ΡΠ΅Π΄ΡΡΠ²Π° ΡΠ±ΠΎΡΠΊΠΈ C++Β». ΠΠ»Ρ ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» vs_buildtools.exe. ΠΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«Π Π°Π±ΠΎΡΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈΒ» ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ Π³Π°Π»ΠΎΡΠΊΡ Β«Π‘ΡΠ΅Π΄ΡΡΠ²Π° ΡΠ±ΠΎΡΠΊΠΈ C++Β» ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΒ»:
ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ PIP Π² Windows
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΠΈΠ΄Π°:
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ hashID β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Python 3, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ 220 ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² Ρ Π΅ΡΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ° hashID Π² Windows ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ:
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Python ΠΊ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΡ Apache Π² Windows
Python ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ Apache, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΊΡΠΈΠΏΡΡ Python Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ PHP ΡΠΊΡΠΈΠΏΡΡ. ΠΡΠΈΡΡΠΌ ΠΎΠ±Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ, ΡΡΠΎ Python Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΠΎ Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Β«Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ° (Apache 2.4, MySQL 8.0, PHP 7, phpMyAdmin) Π½Π° Windows 10Β».
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Apache Π½Π° Π·Π°ΠΏΡΡΠΊ Python CGI
ΠΡΠΊΡΠΎΠΉΡΠ΅ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Apache httpd.conf, Ρ ΠΌΠ΅Π½Ρ ΠΎΠ½ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΠΏΠΎ ΠΏΡΡΠΈ C:\Server\bin\Apache24\conf\httpd.conf.
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠ°ΠΌ ΡΡΡΠΎΠΊΡ
ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊ Π½Π΅ΠΉ ExecCGI. ΠΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΡΡΠΎΠΊΠ° (ΠΠΠΠΠΠΠΠ: Π½Π°Π±ΠΎΡ ΠΎΠΏΡΠΈΠΉ Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ):
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ:
Π Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ Π΅Ρ, ΡΠΎ Π΅ΡΡΡ ΡΠ΄Π°Π»ΠΈΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ» # Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠΎΠΊΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊ ΠΊΠΎΠ½ΡΡ ΡΡΡΠΎΠΊΠΈ .py. ΠΠΎΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Python
Π ΠΏΠ°ΠΏΠΊΠ΅ Π΄Π»Ρ Π²Π°ΡΠΈΡ ΡΠ°ΠΉΡΠΎΠ² (Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ C:\Server\data\htdocs\) ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» test.py ΠΈ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π² Π½Π΅Π³ΠΎ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΌΡΡ Π²Π΅ΡΡ Π½ΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎ Π΅ΡΡΡ Π½Π° C:\Python\Python38\python.exe β Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π΅Ρ Π½Π° ΡΠ²ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·Π°Π² ΠΏΡΡΡ Π΄ΠΎ ΡΠ°ΠΉΠ»Π° python.exe. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π²Π΅ΡΡΠΈΡ 3.9, ΡΠΎ ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ C:\Python\Python39\python.exe, ΡΠΎ Π΅ΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΠΏΡΡΡ Π΄ΠΎ ΠΏΠ°ΠΏΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π²Ρ Π²ΡΠ±ΡΠ°Π»ΠΈ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅.
ΠΠΎΠ»ΠΆΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π½Π°Π΄ΠΏΠΈΡΡ
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ Π½ΠΈΠΆΠ΅:
Π Π΅Π΄Π°ΠΊΡΠΎΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Python
ΠΡΠ»ΠΈ Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ Python Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½ΠΎ ΠΈ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python, ΡΠΎ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π― ΠΌΠΎΠ³Ρ ΠΏΠΎΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠΎΡΠΊΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ :
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ error Microsoft Visual C++ 14.0 is required
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² pip Π½Π° Windows Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ:
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ 2017 ΡΠ°ΠΌΠ°Ρ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Visual Studio ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π»ΡΠ±ΡΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π²Π΅ΡΡΠΈΡ Build Tools (ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ) C++. ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» vs_buildtools.exe. ΠΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«Π Π°Π±ΠΎΡΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈΒ» ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ Π³Π°Π»ΠΎΡΠΊΡ Β«Π‘ΡΠ΅Π΄ΡΡΠ²Π° ΡΠ±ΠΎΡΠΊΠΈ C++Β» ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΒ»:
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ setuptools:
ΠΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² Python
ΠΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ pip Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ Π²ΡΠΎΠ΄Π΅ ΡΠ°ΠΊΠΎΠΉ:
Π Π½Π΅ΠΉ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π·Π°Π²Π΅ΡΡΠΈΠ»Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ ΡΠ°ΠΉΠ» cairo.h.
Π ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π·Π°Π²Π΅ΡΡΠΈΠ»Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ ΡΠ°ΠΉΠ» netinet/ip.h.
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ·-Π·Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .h ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΈ Π² Linux. Π€Π°ΠΉΠ»Ρ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .h ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΌΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ β ΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° Π² Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎ Π²ΡΡΡΠ½ΡΡΡ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ» ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ.
ΠΠ°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ mod_python
mod_python Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python Π² ΡΠ΅ΡΠ²Π΅Ρ Apache. ΠΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠ°ΡΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ (forking) CGI-ΡΠΊΡΠΈΠΏΡΠΎΠ². ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠΎΠ΄ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ. ΠΠ½ Π²ΡΠ΅Π³Π΄Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈ Π³ΡΡΠΏΠΏΠΎΠΉ Apache. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ°ΠΉΠ»Ρ Π²Π°ΡΠ΅ΠΉ wiki Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ΅ΡΠ²Π΅ΡΡ Apache Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ.
» height=»16″ src=»https://wiki.gnome.org/gnome/gnome-responsive/img/dialog-question-symbolic.png» title=» » width=»16″ /> ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΡΠΈΠ³ΠΎΠ΄Π½Π° Π΄Π»Ρ mod_python 3.1.3 ΠΈ Π²ΡΡΠ΅. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΡ, ΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°Π·Π΄Π΅Π» «Π‘ΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ mod_python»
ΠΠ°Π·ΠΎΠ²Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° mod_python
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ Π»ΡΠ΄Π΅ΠΉ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ mod_python Π² ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΡΠ²ΠΎΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ Π΅Π³ΠΎ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ², ΡΠΎ ΠΏΡΠΎΠΊΠΎΠ½ΡΡΠ»ΡΡΠΈΡΡΠΉΡΠ΅ΡΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎ mod_python.
ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ mod_python Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Apache ΠΈΠ»ΠΈ Π² Π΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Red Hat ΠΈΠ»ΠΈ Fedora linux ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ mod_python Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ /etc/httpd/conf.d/python.conf).
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π² Π²Π°ΡΠ΅ΠΌ httpd.conf Π΅ΡΡΡ ΡΡΠ° ΡΡΡΠΎΠΊΠ°, ΠΈΠ½Π°ΡΠ΅ mod_python ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ:
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Apache ΠΈ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ½ ΡΡΠ°ΡΡΠΎΠ²Π°Π» ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈ ΡΡΠΎ error log ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠΎΠΊΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠΎΠΉ:
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° wiki
Π‘ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠΉΡΠ΅ httpd.conf ΠΊΠ°ΠΊ cgi (Π΄Π»Ρ Π½Π°ΡΠ°Π»Π°):
ΠΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Apache ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ Π²Π°ΡΠ΅ΠΉ wiki.
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ `wikiconfig.py`
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠ΅ ΠΏΡΡΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Python’ΠΎΠ²ΡΠΊΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ os Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΡΡΠ΅ΠΉ: <<
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ wiki ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅ ΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
Π Π²Π΅ΡΡΠΈΡΡ
1.2 ΠΈ ΡΠ°Π½Π΅Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π°Π·ΡΠ²Π°Π»ΡΡ moin_config.py.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Apache `httpd.conf`
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Π°ΡΠ° wiki Π·Π°ΠΏΡΡΡΠΈΠ»Π°ΡΡ ΠΊΠ°ΠΊ cgi-ΡΠΊΡΠΈΠΏΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ Π΅Ρ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Ρ mod_python.
ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ Π²Π°ΡΡ wiki ΠΊΠ°ΠΊ cgi, ΠΊΠ°ΠΊ ΠΌΡ ΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, ΡΠ΄Π°Π»ΠΈΡΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ScriptAlias:
ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Location:
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² MoinMoin, ΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ location Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ (ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΏΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ) ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΡΠΎΠΊΡ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ PythonInterpreter mywiki Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·Π΄Π΅Π» Location. ΠΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ±ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΠΌΠΈ ΠΈΠΌΡΠ½, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· wiki (ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΌ. Π·Π΄Π΅ΡΡ).
ΠΡΠ»ΠΈ Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈ MoinMoin Π½Π΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΡΡ ΠΊ MoinMoin ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ ΠΏΡΡΡΠΌ:
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π½Π΅ΠΊΠΎΡΠ½Π΅Π²ΡΠΌΠΈ wiki
ΠΡΠ»ΠΈ Ρ Π²Π°ΡΠ΅ΠΉ wiki Π½Π΅ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ URL (Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ http://www.example.com/FrontPage), ΡΠΎ Π²Π°ΠΌ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
ΠΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°Ρ mod_python ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ MoinMoin Π½Π΅Π²Π΅ΡΠ½ΡΠ΅ script_name ΠΈ path_info. ΠΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ»ΡΡΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Location Apache, Ρ wiki Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΏΡΡΠΈ:
ΠΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠΊΡΠΈΠΏΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° location Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ ΡΠΊΡΠΈΠΏΡΠΎΠΌ.
Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ PythonOption:
New in release 1.3.5
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ wiki
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π²Π°ΡΠ΅ΠΉ wiki ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅, ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ moinmodpy.py ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Moin Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° wiki ( /var/www/moin/mywiki Π² ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ).
Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΠΉΠ»Π° Π½Π°ΡΡΡΠΎΠ΅ΠΊ httpd.conf.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° wiki ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
ΠΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Apache ΠΈ FrontPage mywiki Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π½Π° http://wiki.example.com/.
ΠΡΡΠ³ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΡ Ρ wiki ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΏΠΎΠ΄ Apache ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π² Π³Π»Π°Π²Π΅ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ HelpOnConfiguration/ApacheVoodoo.
Π‘ΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ mod_python
ΠΠ΅ΡΡΠΈΠΈ 2.7.10, 3.0.4 ΠΈ 3.1.2b mod_python ΠΈΠΌΠ΅Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΡ apache.resolve_object. Π Π½Π΅ΠΉ Π±ΡΠ»ΠΎ Π΄ΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ the mod_python ΠΈ Π² Π²Π΅ΡΡΠΈΠΈ 3.1.3 ΠΎΠ½Π° Π±ΡΠ»Π° ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π°. ΠΠ°ΠΈΠ»ΡΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π΅ΡΡΡ Π΄Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΡΠΈΠΏΡ-ΠΎΠ±ΡΡΡΠΊΡ (wrapper script)
MoinMoin ΠΈΠ΄ΡΡ ΡΠΎ ΡΠΊΡΠΈΠΏΡΠΎΠΌ-ΠΎΠ±ΡΡΡΠΊΠΎΠΉ moinmodpy.py, ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΡΡΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² PythonPath ΠΈ PythonHandler ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ moinmodpy.htaccess. Π MoinMoin 1.2 ΠΎΠ±ΡΡΡΠΊΠ° Π½Π°Π·ΡΠ²Π°Π»Π°ΡΡ moin_modpy.py.
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ mod_python
ΠΠ΅ΡΡΠΈΠΈ 2.7.10, 3.0.4 ΠΈ 3.1.2b mod_python ΠΈΠΌΠ΅ΡΡ Π½Π΅Π±ΠΎΠ»ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ resolver. ΠΠ΅ΡΠΎΠ΄ resolve_object Π² mod_python/apache.py ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π΅Π²Π΅ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΊΠ°Π·Ρ RequestModPy.run.
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ resolve_object (Π² ΡΠ°ΠΉΠΎΠ½Π΅ ΡΡΡΠΎΠΊΠΈ 551 Π΄Π»Ρ mod_python 3.1.2b) Ρ
Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ
ΠΠΎΡΡΡΠΏ ΠΊ ΡΡΡΠ°Π½ΠΈΡΠ΅ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ Apache::