FastCGI是Web服务器(如nginix,lighttpd和Cherokee)上Flask应用程序的另一个部署选项。
首先,需要创建FastCGI服务器文件,例如它的名称为: yourapplication.fcgiC 。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.thinktus.com # Date : 2020-08-08 from flup.server.fcgi import WSGIServer from yourapplication import app if __name__ == '__main__': WSGIServer(app).run()
nginx和较早版本的lighttpd需要明确传递一个套接字来与FastCGI服务器进行通信。需要将路径传递给WSGIServer的套接字。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.thinktus.com # Date : 2020-08-08 WSGIServer(application, bindAddress = '/path/to/fcgi.sock').run()
对于基本的Apache部署, .fcgi 文件将出现在您的应用程序URL中,例如http://example.com/yourapplication.fcgi/hello/。 有以下几种方法来配置应用程序,以便yourapplication.fcgi不会出现在URL中。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.thinktus.com # Date : 2020-08-08 <VirtualHost *> ServerName example.com ScriptAlias / /path/to/yourapplication.fcgi/ </VirtualHost>
lighttpd的基本配置看起来像这样 -
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.thinktus.com # Date : 2020-08-08 fastcgi.server = ("/yourapplication.fcgi" => (( "socket" => "/tmp/yourapplication-fcgi.sock", "bin-path" => "/var/www/yourapplication/yourapplication.fcgi", "check-local" => "disable", "max-procs" => 1 ))) alias.url = ( "/static/" => "/path/to/your/static" ) url.rewrite-once = ( "^(/static($|/.*))$" => "$1", "^(/.*)$" => "/yourapplication.fcgi$1" )
请记住启用FastCGI,别名和重写模块。 该配置将应用程序绑定到/yourapplication。