· 5 years ago · Mar 02, 2020, 04:00 PM
1Asennetaan pakettimanageri pythonille nimeltä pip
2sudo apt-get install python-pip
3
4Asennetaan flask pipillä
5pip install flask
6
7Testataan flaskin toimivuus
8python ja paina enter
9import flask ja paina enter
10jos ei tule erroria flaski toimii
11
12
13Hello world!
14
15Onnistuuu siten, että luodaan tiedosto hello.py vaikka työpöydälle
16cd ~/Desktop && nano hello.py
17
18from flask import Flask
19app = Flask(__name__)
20
21@app.route('/')
22def index():
23 return 'Hello World'
24
25tallenna ja sulje tiedosto
26
27käynnitetään skripti komennolla
28python -m flask hello.py
29
30avaa osoite selaimessa
31127.0.0.1:5000
32
33
34tuotanto foo
35
36varmista, että apache2 on asennettu, jos ei ole niin asenna se ensin
37
38sudo apt-get update
39sudo apt-get install apache2
40
41tarkista python versio
42python --version // minulla on asennettuna 2.7
43
44asennetaan siihen sopiva wsgi moduuli apacheen
45sudo apt-get install libapache2-mod-wsgi
46
47apache2_invoke: Enable module wsgi // worked!!!
48
49luodaan seuraavaa hak
50mkdir /var/projects/FooFlask && cd $_
51
52luo tiedostot __init__.py, FooFlask.py
53touch __init.py FooFlask.py
54
55luo hakemisto ja sinne uusi tiedosto nimeltä FooFlask.wsgi
56mkdir ../wsgiSettings/ && touch $_/FooFlask.wsgi
57
58__init__.py tiedosto jätetään tyhjäksi
59
60avaa tiedosto foo.py
61nano foo.py
62
63from flask import Flask
64app = Flask(__name__)
65
66
67@app.route("/")
68def foo():
69 return "Foo!"
70
71if __name__ == "__main__":
72 app.run()
73tallenna ja sulje tidosto
74
75avaa foo.wsgi
76nano foo.wsgi
77
78kopio alla oleva teksti
79shebangiin merkitse käyttämsi python versio
80sys.path riville sulkujen sisään projektin hakemisto
81secret_key = joku tosi salainen avain
82
83#!/usr/bin/env python2.7
84
85import logging
86import sys
87logging.basicConfig(stream=sys.stderr)
88sys.path.insert(0, '/var/projects/FooFlask/')
89from my_flask_app import app as application
90application.secret_key = '1two3four5six'
91
92luodaan uusi virtuaalipalvelimen konffitiedosto kopioimalla default konffitiedosto
93sudo cd /etc/apache2/sites-available && cp 000-default.conf FooFlask.conf
94
95avataan ko. tiedosto
96sudo nano FooFlask.conf
97
98ServerName www.fooflaskprod.com
99DocumentRoot /var/projects/FooFlask //määritä vastaamaan hakemistoa, jossa tiedostot ovat
100WSGIScriptAlias / /var/projects/wsgiSettings/FooFlask.wsgi //lisää uusi rivi
101
102<Directory /var/projects/FooFlask/> // lisää vielä oikeudet
103 Options FollowSymLinks
104 AllowOverride None
105 Require all granted
106</Directory>
107
108<Directory /var/projects/wsgiSettings/>
109 Require all granted
110 </Directory>
111
112
113tallenna ja sulje tiedosto
114
115aktivoidaan virtualhost komennolla
116sudo a2ensite /etc/apache2/sites-available/FooFlask.conf
117
118kokeile osoitetta: http://www.fooflaskprod.com/
119
120
121
122Muottien lisäys
123
124
125Lisätään FooFlask kansioon uusi hakemisto nimeltä "templates" ja sinne kaksi tiedostoa
126
127mkdir templates && touch $_/header.html $_/footer.html
128
129
130header.html
131<!DOCTYPE html>
132<head>
133 <title>Very nice title over here!</title>
134</head>
135<body>
136 <h1>Body starts here</h1>
137
138
139
140footer.html
141 <h4>Body ends here</h4>
142 <h1>Footer starts here</h1>
143 </body>
144 <footer>
145 <p>This is a fantasticly simple footer message that acknowledges you where the footer resides. <b>This also marks where the footer en$
146 </footer>
147</html>
148
149
150avataan päätiedosto FooFlask.py ja muokataan sitä seuraavasti
151nano ../FooFlask.py
152
153from flask import Flask, render_template
154app = Flask(__name__)
155
156@app.route("/")
157def index():
158 return getHeader() + ' Not a very functional MVC ' + getFooter()
159
160def getHeader():
161 return render_template('header.html')
162
163def getFooter():
164 return render_template('footer.html')
165
166if __name__ == "__main__":
167 app.run()
168
169
170
171Kirjataan käyttäjätietoja!
172
173
174luodaan uusi template tiedosto kansioon templates
175touch userDetails.html
176
177<ul>
178 <li>User Agent: {{ request.user_agent.string }}</li>
179 <li>Remote Address: {{ request.remote_addr }}</li>
180</ul>
181
182
183
184
185
186lisätään kyseiset rivit FooFlask.py tiedostoon
187
188@app.route("/user")
189def ipPage():
190 return getHeader() + getUserDetails() + getFooter()
191
192def getUserDetails():
193 return render_template('userDetails.html', request=request)