惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
大猫的无限游戏
大猫的无限游戏
B
Blog
J
Java Code Geeks
T
Tailwind CSS Blog
腾讯CDC
A
About on SuperTechFans
GbyAI
GbyAI
H
Help Net Security
IT之家
IT之家
L
LangChain Blog
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
SegmentFault 最新的问题
博客园 - 叶小钗
小众软件
小众软件
I
InfoQ
爱范儿
爱范儿
有赞技术团队
有赞技术团队
博客园 - 司徒正美
博客园 - 【当耐特】
Jina AI
Jina AI
D
Docker

isaced

使用 TypeScript 构建的 appstore-connect-sdk 归档 我用 SwiftUI 写了一个 V2ex 客户端 Docker 容器化多应用部署 Swift Server-side SDWebImage 为什么无法读取 webpmux 生成的 WebP 动图? [译] 探索 Swift 4 中新的 String API 对一个 Django 站点做 ab 压力测试 fir-mac 开发笔记 iOS10 Safari 引导用户信任企业签名 Swift Web 开发之 Vapor - 模版 Leaf(三) Swift Web 开发之 Vapor - 路由(二) HoloLens 初体验 Swift Web 开发之 Vapor - 入门(一) Jenkins for iOS 搭建日记 iOS HOOK 注入与重签名 Xcode 使用 Configuration 来配置不同的项目环境 图床从SAE迁移到七牛 给 UIProgressView 脱掉那层微弱的渐变 初用 CocoaAsyncSocket 记一次 SQLite 性能优化 有多色 - 开发小记 海岛风情 - 泰国普吉岛六日游 EGOCache 源码解析 日语五十音假名临摹校验算法 [iOS] UITextView 追加文字自动跳到顶部解决方法 Cocoa 新的依赖管理工具:Carthage 新年快乐! 博客主机换到搬瓦工 写了个iOS小游戏:有多色
Apache + Flask + mod_wsgi + Koding 部署小记
2014-01-16 · via isaced

之前发现了Koding,一直没怎么注意,今天试用了一下练练手,也算是第一次在真正的服务器上操作,用它搭个 Flask 站点出来,一路也是坑坑包包啊,特别是 Apache 的配置,复杂的无脑,第一次搞还是推荐先看看 Apache 的文档。话说 Koding 还真是不错,虽然不能拿来当生产环境,弄弄玩还是挺好,特别是像我们这种新手来练手。用 Koding 的原话来说是这样:

Koding is first and foremost a Development Environment, and not a Production Host. VMs Shutdown After Logout,Approximately 20 minutes after you log out, your Free VMs will shut down.

如上所说,Koding 是一个开发环境而不是生产环境,这也是 Koding 主办方的意思。在退出登陆后 20 分钟,你的主机将会自动关闭,详情可见 Koding 的FAQ 页面。 不过这已经很好了,完全和真实主机一模一样,支持 SSH 远程登陆,强大的 Web 面板(支持文件浏览和 Terminal),用来学习已经完全足够了。

安装 mod_wsgi

如果服务器是用的 Apache,那么 Flask 官方推荐用mod_wsgi,文档可以戳这,其实 Flask 官方文档已经写的很清楚了,我还是贴一下吧。

Ubuntu or Debian:

# apt-get install libapache2-mod-wsgi

修改 Apache 配置:

然后修改/etc/apache2/sites-enabled/000-default

WSGIPythonPath /home/isaced/test
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /home/isaced/test/
    WSGIScriptAlias / /home/isaced/test/app.wsgi
<Directory /home/isaced/test/>
<Files app.wsgi>
    Order deny,allow
    Allow from all
</Files>
</Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

添加.wsig 文件

然后在 isaced 目录下新建项目目录”test“,其中新建文件app.wsgi,内容如下:

def application(environ,start_response):
    status='200 OK'
    output='Hello wsgi!'
    response_headers=[('Content-type','text/plain'),
                       ('Content-Length',str(len(output)))]
    start_response(status,response_headers)
    return[output]

赶紧试试

重启 Apache 试试,看看效果吧:

sudo /etc/init.d/apache2 restart

浏览器打开“http://xxx.kd.io/”,就会输出“Hello wsgi!”。

启动 Flask

按耐住小鸡动,我们继续来启动一个 flask 实例。

新建test.py文件,作为 flask 入口文件,内容如下:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return "Hello World!"

if __name__ == '__main__':
    app.run(host='0.0.0.0')

然后修改app.wsgi文件内容为:

from test import app as application

这里的 test 就是当前目录的 test.py 文件,看到网上很多文章还要 import sys,再 append 当前目录,其实如果在同一目录下的话就不需要了。

大功告成

至此一个简单的 Flask 项目就部署完成了,以上路径、域名什么的请自行替换。

最大收获

我终于会盲打出 Apache 这个单词了!!!

参考资料: