我蹭学生优惠,花了9.5买了一个阿里云学生服务器,可以使用的期限是一个月。本来想用AWS的,但是每次绑定credit card的时候都出了一些问题,所以索性放弃,还是阿里云直接支付宝买起来比较方便。
轻量云服务器细节:
系统镜像:Ubuntu 16.04(最新的版本估计已经到了16.10+了)
start with an update and upgrade
sudo apt-get update && sudo apt-get upgrade
这个ppa我也是第一次见,有机会了解一下
sudo add-apt-repository ppa:deadsnakes/ppa
更新
sudo apt-get update
get python3.7:因为服务器是国内的,所以下载起来有点慢,第一次下载还failed了,我就又下载了一次,成功了
sudo apt-get install python3.7 python3.7-dev
后面的详情我就不说了,rent云服务器让我有点心烦意乱,呜呜
Basic Flask Website Tutorial
想了一想,这个国内访问似乎是要的,所以我还是隐忍着抑郁的情绪继续吧......
get pip3.7,这是一个非常实用的python install package,专属于python的包安装管理器
curl https://bootstrap.pypa.io/get-pip.py | sudo python3.7
安装 web server, apache2
sudo apt-get install apache2 apache2-dev
安装WSGI (Web Server Gateway Inferface),这个sentdex介绍说是web server的gate,这个东东我还蛮眼熟,可惜就不知道它是什么,不知道的东西实在是太多了,一定要好好学啊
pip3.7 install mod_wsgi
接下来这个操作会得到两行输出,copy
mod_wsgi-express module-config
nano是一个“类似”与我用的比较多的vim的一个编辑器,下面这个命令运行之后,把刚刚copy的东西paste上去。注意格式,这点很重要!!!要不然就会想我一样浏览器报500【nano使用:Save and exit (ctrl+x
, y
, enter
)】
nano /etc/apache2/mods-available/wsgi.load
enable wsgi
a2enmod wsgi
restart apache server
service apache2 restart
install flask
pip3.7 install flask
have an apache configuration
nano /etc/apache2/sites-available/FlaskApp.conf
Inputting:
ServerName 192.168.0.1
ServerAdmin [email protected]
WSGIScriptAlias / /var/www/FlaskApp/FlaskApp.wsgi
Order allow,deny
Allow from all
ErrorLog ${APACHE_LOG_DIR}/FlaskApp-error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/FlaskApp-access.log combined
只需要变动一个地方,就是ServerName, 换成自己的就可以啦
enable this site
sudo a2ensite FlaskApp
reload apache
service apache2 reload
开始准备运行 Flask app
mkdir /var/www/FlaskApp
cd /var/www/FlaskApp
nano FlaskApp.wsgi
input:
#!/usr/bin/python3.7
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApp/")
from FlaskApp import app as application
mkdir FlaskApp
cd FlaskApp
nano __init__.py
input:
from flask import Flask
import sys
app = Flask(__name__)
@app.route('/')
def homepage():
return "Hi there, how ya doin?"
if __name__ == "__main__":
app.run()
then compile
python3.7 __init__.py
ctrl+c interrupt 之后 重新加载服务器
service apache2 reload
在本地浏览器上访问ip地址应该就可以看到
Hi there, how ya doin?
啦!
下面贴出目录结构图(这个水印看着也太不舒服了8)
运行dash app的话,先下载dash等各种框架和包
pip3.7 install dash dash-renderer dash-html-components dash-core-components plotly
接着把__init__.py中的代码替换成如下:
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div([
dcc.Input(id='my-id', value='initial value', type='text'),
html.Div(id='my-div')
])
@app.callback(
Output(component_id='my-div', component_property='children'),
[Input(component_id='my-id', component_property='value')]
)
def update_output_div(input_value):
return 'You\'ve entered "{}"'.format(input_value)
# nothing else needs changing except adding one more line code, like this
server = app.server
if __name__ == '__main__':
app.run_server(debug=True)
之后返回上一级
cd ../
nano FlaskApp.wsgi
#!/usr/bin/python3.7
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApp/")
# from FlaskApp import app as application:将app换成server即可
from FlaskApp import server as application
Finally,
python3.7 __init__.py
ctrl+c interrupt 之后 重新加载服务器
service apache2 reload
不出意外就能看到预期的网页啦!done!
最后十分感谢在Youtube上乐于分享的sentdex大神,这些步骤都是按照他分享的视频和文章走的,中间遇到了一些问题但还好有stackflow上各路大侠“指点迷津”,一切都还算比较顺利。长路漫漫,继续加油吧!?