Created
July 20, 2022 14:16
-
-
Save ahmad88me/efe773f958f9d6f67bdad07a1ce2d5ca to your computer and use it in GitHub Desktop.
Python3.8 with mod_wsgi and Apache on ubuntu (for a flask application).
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<VirtualHost *:80> | |
ServerAdmin youremail@fi.upm.es | |
ServerName your.website.es | |
WSGIDaemonProcess tadaweb python-home=/path/to/your/virtual/env/.myvenv | |
WSGIScriptAlias / /path/to/your/flask/app/myapp.wsgi process-group=myapp | |
<Directory /path/to/your/flask/app> | |
WSGIProcessGroup myapp | |
WSGIApplicationGroup %{GLOBAL} | |
Order deny,allow | |
Require all granted | |
</Directory> | |
ErrorLog ${APACHE_LOG_DIR}/myapp-error.log | |
CustomLog ${APACHE_LOG_DIR}/myapp-access.log combined | |
</VirtualHost> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
sys.path.insert(0, '/path/to/your/flask/app') | |
from app import app as application | |
application.debug = True |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Install python 3.8 | |
``` | |
./configure --enable-shared --enable-optimizations | |
make | |
sudo make install | |
``` | |
#install mod_wsgi 4.8 | |
``` | |
./configure --with-python=/usr/local/bin/python3.8 | |
export C_INCLUDE_PATH=/usr/local/include/python3.8 | |
``` | |
Open the `Makefile` and remove the `-L -L` from the `LDFLAGS` | |
and change the `LDLIBS` value from `-lpython` to `-lpython3.8` | |
``` | |
cd /usr/lib | |
sudo ln -s ../local/lib/libpython3.8.so.1.0 libpython3.8.so.1.0 | |
``` | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/etc/apache2/mods-available/wsgi.conf | |
<IfModule mod_wsgi.c> | |
#This config file is provided to give an overview of the directives, | |
#which are only allowed in the 'server config' context. | |
#For a detailed description of all avaiable directives please read | |
#http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives | |
#WSGISocketPrefix: Configure directory to use for daemon sockets. | |
# | |
#Apache's DEFAULT_REL_RUNTIMEDIR should be the proper place for WSGI's | |
#Socket. In case you want to mess with the permissions of the directory, | |
#you need to define WSGISocketPrefix to an alternative directory. | |
#See http://code.google.com/p/modwsgi/wiki/ConfigurationIssues for more | |
#information | |
#WSGISocketPrefix /var/run/apache2/wsgi | |
#WSGIPythonOptimize: Enables basic Python optimisation features. | |
# | |
#Sets the level of Python compiler optimisations. The default is '0' | |
#which means no optimisations are applied. | |
#Setting the optimisation level to '1' or above will have the effect | |
#of enabling basic Python optimisations and changes the filename | |
#extension for compiled (bytecode) files from .pyc to .pyo. | |
#When the optimisation level is set to '2', doc strings will not be | |
#generated and retained. This will result in a smaller memory footprint, | |
#but may cause some Python packages which interrogate doc strings in some | |
#way to fail. | |
#WSGIPythonOptimize 0 | |
#WSGIPythonPath: Additional directories to search for Python modules, | |
# overriding the PYTHONPATH environment variable. | |
# | |
#Used to specify additional directories to search for Python modules. | |
#If multiple directories are specified they should be separated by a ':'. | |
#WSGIPythonPath directory|directory-1:directory-2:... | |
#WSGIPythonEggs: Directory to use for Python eggs cache. | |
# | |
#Used to specify the directory to be used as the Python eggs cache | |
#directory for all sub interpreters created within embedded mode. | |
#This directive achieves the same affect as having set the | |
#PYTHON_EGG_CACHE environment variable. | |
#Note that the directory specified must exist and be writable by the user | |
#that the Apache child processes run as. The directive only applies to | |
#mod_wsgi embedded mode. To set the Python eggs cache directory for | |
#mod_wsgi daemon processes, use the 'python-eggs' option to the | |
#WSGIDaemonProcess directive instead. | |
#WSGIPythonEggs directory | |
#WSGIRestrictEmbedded: Enable restrictions on use of embedded mode. | |
# | |
#The WSGIRestrictEmbedded directive determines whether mod_wsgi embedded | |
#mode is enabled or not. If set to 'On' and the restriction on embedded | |
#mode is therefore enabled, any attempt to make a request against a | |
#WSGI application which hasn't been properly configured so as to be | |
#delegated to a daemon mode process will fail with a HTTP internal server | |
#error response. | |
#WSGIRestrictEmbedded On|Off | |
#WSGIRestrictStdin: Enable restrictions on use of STDIN. | |
#WSGIRestrictStdout: Enable restrictions on use of STDOUT. | |
#WSGIRestrictSignal: Enable restrictions on use of signal(). | |
# | |
#Well behaved WSGI applications neither should try to read/write from/to | |
#STDIN/STDOUT, nor should they try to register signal handlers. If your | |
#application needs an exception from this rule, you can disable the | |
#restrictions here. | |
#WSGIRestrictStdin On | |
#WSGIRestrictStdout On | |
#WSGIRestrictSignal On | |
#WSGIAcceptMutex: Specify type of accept mutex used by daemon processes. | |
# | |
#The WSGIAcceptMutex directive sets the method that mod_wsgi will use to | |
#serialize multiple daemon processes in a process group accepting requests | |
#on a socket connection from the Apache child processes. If this directive | |
#is not defined then the same type of mutex mechanism as used by Apache for | |
#the main Apache child processes when accepting connections from a client | |
#will be used. If set the method types are the same as for the Apache | |
#AcceptMutex directive. | |
#WSGIAcceptMutex default | |
#WSGIImportScript: Specify a script file to be loaded on process start. | |
# | |
#The WSGIImportScript directive can be used to specify a script file to be | |
#loaded when a process starts. Options must be provided to indicate the | |
#name of the process group and the application group into which the script | |
#will be loaded. | |
#WSGIImportScript process-group=name application-group=name | |
#WSGILazyInitialization: Enable/disable lazy initialisation of Python. | |
# | |
#The WSGILazyInitialization directives sets whether or not the Python | |
#interpreter is preinitialised within the Apache parent process or whether | |
#lazy initialisation is performed, and the Python interpreter only | |
#initialised in the Apache server processes or mod_wsgi daemon processes | |
#after they have forked from the Apache parent process. | |
#WSGILazyInitialization On|Off | |
</IfModule> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/etc/apache2/mods-available/wsgi.load | |
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment