Flask: Difference between revisions
Jump to navigation
Jump to search
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
==Python3== | ==Python3== | ||
< | <syntaxhighlight lang="bash"> | ||
apt install python3.8 | apt install python3.8 | ||
pip3 install virtualenv | pip3 install virtualenv | ||
Line 9: | Line 9: | ||
pip install Flask | pip install Flask | ||
deactivate | deactivate | ||
</ | </syntaxhighlight> | ||
===Flask=== | ===Flask=== | ||
< | <syntaxhighlight lang="bash" highlight="1,2" line> | ||
mkdir -p /var/www/flask/RestApi/RestApi/{static,templates} | mkdir -p /var/www/flask/RestApi/RestApi/{static,templates} | ||
cat > /var/www/flask/RestApi/RestApi/__init__.py << EOF | cat > /var/www/flask/RestApi/RestApi/__init__.py << EOF | ||
Line 23: | Line 23: | ||
app.run() | app.run() | ||
EOF | EOF | ||
</ | </syntaxhighlight> | ||
===WSGI3=== | ===WSGI3=== | ||
< | <syntaxhighlight lang="bash" highlight="1,2,4-6,11" line> | ||
cd /var/www/flask/RestApi/ | cd /var/www/flask/RestApi/ | ||
cat > /var/www/flask/RestApi/RestApi.wsgi << EOF | cat > /var/www/flask/RestApi/RestApi.wsgi << EOF | ||
Line 42: | Line 42: | ||
application.secret_key = 'Add your secret key' | application.secret_key = 'Add your secret key' | ||
EOF | EOF | ||
</ | </syntaxhighlight> | ||
==Apache2== | ==Apache2== | ||
===WSGI3=== | ===WSGI3=== | ||
< | <syntaxhighlight lang="bash"> | ||
apt install apache2 | apt install apache2 | ||
systemctl restart apache2 | systemctl restart apache2 | ||
apt install libapache2-mod-wsgi python-dev | apt install libapache2-mod-wsgi python-dev | ||
a2enmod wsgi | a2enmod wsgi | ||
</ | </syntaxhighlight> | ||
< | <syntaxhighlight lang="bash"> | ||
a2dismod wsgi | a2dismod wsgi | ||
apt remove libapache2-mod-wsgi python-dev | apt remove libapache2-mod-wsgi python-dev | ||
apt install libapache2-mod-wsgi-py3 python3-dev | apt install libapache2-mod-wsgi-py3 python3-dev | ||
</ | </syntaxhighlight> | ||
< | <syntaxhighlight lang="bash"> | ||
a2enmod wsgi | a2enmod wsgi | ||
apache2ctl -t | apache2ctl -t | ||
systemctl enable apache2 | systemctl enable apache2 | ||
systemctl restart apache2 | systemctl restart apache2 | ||
</ | </syntaxhighlight> | ||
===SITE=== | ===SITE=== | ||
<code>vim /etc/apache2/sites-available/000-default.conf</code> | <code>vim /etc/apache2/sites-available/000-default.conf</code> | ||
< | <syntaxhighlight lang="apache" highlight="1,2,7,8" start="15" line> | ||
WSGIScriptAlias /rest "/var/www/flask/RestApi/RestApi.wsgi" | WSGIScriptAlias /rest "/var/www/flask/RestApi/RestApi.wsgi" | ||
<Directory "/var/www/flask/RestApi/RestApi"> | <Directory "/var/www/flask/RestApi/RestApi"> | ||
Line 80: | Line 80: | ||
Allow from all | Allow from all | ||
</Directory> | </Directory> | ||
</ | </syntaxhighlight> | ||
https://cdn.chorke.org/rest | https://cdn.chorke.org/rest | ||
Line 87: | Line 87: | ||
{| | {| | ||
| valign="top" | | | valign="top" | | ||
< | <syntaxhighlight lang="bash"> | ||
python3 -m venv ~/.venv/flask --prompt="Flask" | python3 -m venv ~/.venv/flask --prompt="Flask" | ||
# source ~/.venv/flask/bin/activate | # source ~/.venv/flask/bin/activate | ||
# (e)flask $ | # (e)flask $ | ||
</ | </syntaxhighlight> | ||
| valign="top" | | | valign="top" | | ||
< | <syntaxhighlight lang="bash"> | ||
python3 -m venv ~/.venv/flask --prompt="Flask" | python3 -m venv ~/.venv/flask --prompt="Flask" | ||
# source ~/.venv/flask/bin/activate | # source ~/.venv/flask/bin/activate | ||
# (e)flask $ | # (e)flask $ | ||
</ | </syntaxhighlight> | ||
| valign="top" | | | valign="top" | | ||
< | <syntaxhighlight lang="PowerShell"> | ||
python -m venv ~\.venv\flask --prompt="Flask" | python -m venv ~\.venv\flask --prompt="Flask" | ||
# ~\.venv\flask\Scripts\activate | # ~\.venv\flask\Scripts\activate | ||
# (e)flask PS> | # (e)flask PS> | ||
</ | </syntaxhighlight> | ||
|- | |- | ||
Line 112: | Line 112: | ||
|- | |- | ||
| valign="top" | | | valign="top" | | ||
< | <syntaxhighlight lang="bash"> | ||
a2enmod wsgi | a2enmod wsgi | ||
a2dismod wsgi | a2dismod wsgi | ||
</ | </syntaxhighlight> | ||
| valign="top" | | | valign="top" | | ||
< | <syntaxhighlight lang="bash"> | ||
apache2ctl -t | apache2ctl -t | ||
apache2ctl -M | apache2ctl -M | ||
</ | </syntaxhighlight> | ||
| valign="top" | | | valign="top" | | ||
< | <syntaxhighlight lang="bash"> | ||
systemctl enable --now apache2 | systemctl enable --now apache2 | ||
systemctl status apache2 | systemctl status apache2 | ||
</ | </syntaxhighlight> | ||
|- | |- | ||
Line 134: | Line 134: | ||
|- | |- | ||
| valign="top" | | | valign="top" | | ||
< | <syntaxhighlight lang="bash"> | ||
sudo chown -R www-data:www-data /opt/env/python/RestApi | sudo chown -R www-data:www-data /opt/env/python/RestApi | ||
sudo chown -R www-data:www-data /opt/www/flask/RestApi | sudo chown -R www-data:www-data /opt/www/flask/RestApi | ||
timeout 60 telnet localhost 1983 ;printf '\n' | timeout 60 telnet localhost 1983 ;printf '\n' | ||
</ | </syntaxhighlight> | ||
| valign="top" | | | valign="top" | | ||
< | <syntaxhighlight lang="bash"> | ||
nohup python RestApi/RestApi/__init__.py>RestApi.log & | nohup python RestApi/RestApi/__init__.py>RestApi.log & | ||
ssh -L 1983:localhost:1983 [email protected] | ssh -L 1983:localhost:1983 [email protected] | ||
nc -w 60 localhost 1983 ;printf '\n' | nc -w 60 localhost 1983 ;printf '\n' | ||
</ | </syntaxhighlight> | ||
| valign="top" | | | valign="top" | | ||
< | <syntaxhighlight lang="bash"> | ||
sudo apt install net-tools | sudo apt install net-tools | ||
ss -lptn 'sport = :1983' | ss -lptn 'sport = :1983' | ||
netstat -nlp | grep :1983 | netstat -nlp | grep :1983 | ||
</ | </syntaxhighlight> | ||
|} | |} | ||
Line 166: | Line 166: | ||
* [https://flask.palletsprojects.com/en/1.1.x/tutorial/templates/ Flask » Jinja Templating Tutorial] | * [https://flask.palletsprojects.com/en/1.1.x/tutorial/templates/ Flask » Jinja Templating Tutorial] | ||
* [https://flask.palletsprojects.com/en/1.1.x/templating/ Flask » Templating with Jinja] | * [https://flask.palletsprojects.com/en/1.1.x/templating/ Flask » Templating with Jinja] | ||
* [https:// | * [https://flask.palletsprojects.com/en/3.0.x/quickstart/ Flask » 3.0 » Quickstart] | ||
* [https://flask.palletsprojects.com/en/3.0.x/api/ Flask » 3.0 » API] | * [https://flask.palletsprojects.com/en/3.0.x/api/ Flask » 3.0 » API] | ||
* [https://flask.palletsprojects.com/en/3.0.x/ Flask » 3.0] | * [https://flask.palletsprojects.com/en/3.0.x/ Flask » 3.0] | ||
| valign="top" | | | valign="top" | | ||
* [https://medium.com/@esteininger/python-3-5-flask-apache2-mod-wsgi3-on-ubuntu-16-04-67894abf9f70 Flask » Python3 » | * [https://medium.com/@esteininger/python-3-5-flask-apache2-mod-wsgi3-on-ubuntu-16-04-67894abf9f70 Flask » Python3 » Apache2 Mod_WSGI on Ubuntu] | ||
* [https://blog.stoplight.io/python-rest-api Flask » Quick Mocking REST API] | |||
* [https://stackoverflow.com/questions/60537557/ Flask » REST server and client] | |||
* [https://stackoverflow.com/questions/10434599/ Flask » Fetch Request Data] | |||
* [https://stackoverflow.com/questions/21133976/ Flask » Load Local JSON] | |||
* [https://stackoverflow.com/questions/20212894/ Flask » Run on port 80] | |||
* [https://stackoverflow.com/questions/54566480/ Flask » Read a File] | |||
| valign="top" | | | valign="top" | | ||
Line 181: | Line 187: | ||
| valign="top" | | | valign="top" | | ||
* [https://www.linode.com/docs/guides/python-variables/ Python » Getting Started with Variables] | * [https://www.linode.com/docs/guides/python-variables/ Python » Getting Started with Variables] | ||
* [https://realpython.com/python-sleep/ Python » Time Delays] | |||
* [[Convention for WSGI]] | * [[Convention for WSGI]] | ||
* [[TensorFlow]] | * [[TensorFlow]] | ||
* [[WinSW]] | * [[WinSW]] | ||
* [https://falconframework.org/ Falcon] | |||
* [[Locale]] | |||
| valign="top" | | | valign="top" | |
Latest revision as of 19:25, 20 April 2024
Python3
apt install python3.8
pip3 install virtualenv
cd /var/www/flask/RestApi/RestApi/
virtualenv venv
source venv/bin/activate
pip install Flask
deactivate
Flask
mkdir -p /var/www/flask/RestApi/RestApi/{static,templates}
cat > /var/www/flask/RestApi/RestApi/__init__.py << EOF
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, Bangladesh!"
if __name__ == "__main__":
app.run()
EOF
WSGI3
cd /var/www/flask/RestApi/
cat > /var/www/flask/RestApi/RestApi.wsgi << EOF
#!/usr/bin/python
activate_this = '/var/www/flask/RestApi/RestApi/venv/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/flask/RestApi/")
from RestApi import app as application
application.secret_key = 'Add your secret key'
EOF
Apache2
WSGI3
apt install apache2
systemctl restart apache2
apt install libapache2-mod-wsgi python-dev
a2enmod wsgi
a2dismod wsgi
apt remove libapache2-mod-wsgi python-dev
apt install libapache2-mod-wsgi-py3 python3-dev
a2enmod wsgi
apache2ctl -t
systemctl enable apache2
systemctl restart apache2
SITE
vim /etc/apache2/sites-available/000-default.conf
WSGIScriptAlias /rest "/var/www/flask/RestApi/RestApi.wsgi"
<Directory "/var/www/flask/RestApi/RestApi">
Order Allow,Deny
Allow from all
</Directory>
Alias /rest/static "/var/www/flask/RestApi/RestApi/static/"
<Directory "/var/www/flask/RestApi/RestApi/static">
Order Allow,Deny
Allow from all
</Directory>
https://cdn.chorke.org/rest
Knowledge
python3 -m venv ~/.venv/flask --prompt="Flask"
# source ~/.venv/flask/bin/activate
# (e)flask $
|
python3 -m venv ~/.venv/flask --prompt="Flask"
# source ~/.venv/flask/bin/activate
# (e)flask $
|
python -m venv ~\.venv\flask --prompt="Flask"
# ~\.venv\flask\Scripts\activate
# (e)flask PS>
|
| ||
a2enmod wsgi
a2dismod wsgi
|
apache2ctl -t
apache2ctl -M
|
systemctl enable --now apache2
systemctl status apache2
|
| ||
sudo chown -R www-data:www-data /opt/env/python/RestApi
sudo chown -R www-data:www-data /opt/www/flask/RestApi
timeout 60 telnet localhost 1983 ;printf '\n'
|
nohup python RestApi/RestApi/__init__.py>RestApi.log &
ssh -L 1983:localhost:1983 [email protected]
nc -w 60 localhost 1983 ;printf '\n'
|
sudo apt install net-tools
ss -lptn 'sport = :1983'
netstat -nlp | grep :1983
|