想来想去,还是打算从Flask服务器部署开始写。我会用自己写博客的经验,用通俗易懂的语言与大家分享心得,并开始。1.host设置方法使服务器上的网页可以从外部访问。记住烧瓶运行命令。运行后就可以在127.0.0.1:5000访问你本地制作的网页了。想象一下,如果代码在服务器端,输入这行代码后,只能在服务器的黑窗上打开浏览器,访问127.0.0.0.1。页面的。..所以有需要当然有办法解决。在网上查了一下,总结了以下两种方法。直接输入flaskrun-p5000-h0.0.0.0将文件中app.run()的代码改为app.run(host='0.0.0.0',port=5000)其实这两个方法是一样的,但是这个端口和主机是什么意思。港口是港口的意思。端口可以??看作是访问服务器地址的入口。当然,同样的服务只能占用一个入口,相当于不同的房间有不同的门。而hosts是没有扩展名的系统文件。它不是软件或工具。它的作用是在一些常用的网站域名与其对应的IP地址之间建立一个关联的“数据库”。简单的理解就是设置0.0.0.0后,你的服务器IP地址就可以被外网访问了。因此,此时在自己的电脑上访问服务器的IP地址,就相当于在本地访问127.0.0.1:5000和自己的网页是一样的。o(∩_∩)o不是很简单。但是我自己的服务器是阿里云的服务器。经过以上设置,会出现:脑痛!这个地方我已经做了很久了,阿里云自带的教程文档藏在网站的各个角落。找了很久才找到。..其实大家可以仔细想想。既然原理是正确的,那可能是端口的问题。端口被占用或端口未打开。最后发现阿里云控制台有一个接口是开放端口的。这里借用网友的一张图,原来需要手动开启阿里云的服务器端口。试试这个方法,你就完成了!二、设置uWSGI当你认为你设置的方式可以使你的服务器配置成功时,那就大错特错了。你会发现只要关闭用ssh连接服务器的xshell,你的网页就不能再访问了。其实想想就可以想通了。通常,你自己的命令窗口关闭后,你就不能在本地访问你自己的网站了。虽然linux服务器一直是远程开启的,但是关闭xshell就像关闭命令窗口一样。开始了,所以这里需要使用第二种方法。如何配置uWSGI。这时候你应该打开搜索引擎搜索什么是uWSGI和一些相关资料(这是一个很好的学习习惯,你会受益匪浅),你会发现有uWSGI+Nginx等词.先说uWSGI。uWSGI是一个网络服务器。有些朋友可能听说过服务器apache/tomcat等词汇。其实apache/tomcat都是通过tcp/ip协议进行通信的。uWSGI的区别在于它可以提供一个独特的uwsgi协议进行通信,这里的约定一定不能让小伙伴们查资料,当然我也会在以后的文章中讲到,大家不要错过。先执行:pipinstalluwsgi接下来进行configure,首先在你想存放touchuconfig.ini的任意位置执行下面的命令#创建一个uconfig.ini配置文件viuconfig.ini#读取uconfig.ini文件后面写vi/vim的就是一个教程,现在也算是一个文本编辑器了,只是有点奇怪,需要特定的命令。按a开始写文件,记下配置文件:[uwsgi]socket=0.0.0.0:5002#阿里云服务器,将5002端口加入安全组#外部访问地址,可以指定多个协议,这里使用socket到处。chdir=/home/pythonproject/my_flask/py3env/myblog/#指向项目目录wsgi-file=/home/microblogpw/microblog.py#这里是flask启动程序文件。这里不要填错py文件名,或者appNotunderif,否则会报错:nopythonapplicationfound,checkyourstartuplogsforerrorscannotfindyourappinstancecallable=app#flaskappnameinthemicroblog.pyfileprocesses=4#processornumberthreads=2#threadnumberstats=127.0.0.1:9191#状态检测地址touch-reload=/home/microblogpw/#动态监听文件变化,然后重新加载服务,这是uWSGI帝王相关的配置项.当该路径下的文件发生变化时,服务会重新加载。这在部署上线后修改项目内容时非常有用。daemonize=/home/wyz/flask/server.log#daemonize项的出现表示uwsgi服务器作为后台进程启动,该项的值指向一个表示后台进程的文件。所有输出都重定向到此日志。上面的#后面是注释,这里是简明版的配置,记得配置你实际的文件路径。[uwsgi]socket=0.0.0.0:5002chdir=/home/pythonproject/my_flask/py3env/myblog/wsgi-file=/home/microblogpw/microblog.pycallable=appprocesses=4threads=2stats=127.0.0.1:9191touch-reload=/home/microblogpw/daemonize=/home/wyz/flask/server.log配置完成后可以使用命令行工具启动uWSGI服务器:uwsgi--ini/home/uconfig.ini也可以直接使用uwsgiuconfig.ini,当然记得stopuwsgi命令(因为经常报错的内容是uwsgi已经启动了,这个时候停止uwsgi再启动)这时候pkill-f-9uwsgi已经配置好了,现在可以访问了自己电脑上的服务器就算自己关闭xshell也没有问题。现在已经配置完成了,那这个nginx有什么用呢?3.配置nginxNginx实际上充当了一个反代理。nginx的反向代理指向uWSGI的ip和端口,让网页更加安全可靠。接下来安装配置nginxsudoyuinstallnginx#安装文件nginx常用命令:nginx 启动nginxnginx-sstop/reload 停止nginx/reload配置文件nginx-v 查看版本nginx-t 测试配置文件是有语法错误等killall-9nginx杀死进程,当端口被占用时,使用默认的配置文件位置/etc/nginx/nginx.conf进入根目录后,使用vinginx.conf启动配置文件,找到如下文字修改对应位置server{listen80;//默认web访问端口server_namexxxxxx;//服务器名#charsetkoi8-r;access_log/home/wyz/flask/logs/access.log;//请求日志服务端收到,logs目录如果不存在则需要创建,否则nginx会报错error_log/home/wyz/flask/logs/error.log;//错误日志位置/{includeuwsgi_params;//这里是导入的uwsgi配置uwsgi_pass127.0.0.1:5051;//需要和ad一样//uwsgi配置文件中socket项的dress,否则uwsgi无法接收到请求。uwsgi_paramUWSGI_CHDIR/home/wyz/flask;//项目根目录uwsgi_paramUWSGI_SCRIPTmanage:app;//启动项目主程序(在本地运行//这个主程序可以在flask内置的//服务器上访问你的项目)}}最后这样配置就大功告成了。4.总结uwsgi配置的时候,一开始我用的是http。查阅了文档,发现还是需要socket的。这其实是Nginx和uWSGI配置协调的问题。如果uWSGI直接通过HTTP对外提供服务,则需要在nginx中配置proxy_pass,指出HTTP服务的具体socket,从而实现请求的转发。而如果将uWSGI配置为socket,则通过socket对外提供服务(因为socket不涉及具体的协议,外部无法直接通过uWSGI端口访问服务,更加安全。比如可以在nginx中配置一些URL拒绝,防止sql注入等),那么nginx的配置应该是uwsgi_pass来实现请求转发。配置proxy_pass时写http://,表示使用http协议;当uwsgi_pass不指明协议时,表示使用了socket。我定义的是uwsgi_pass,所以socket地址应该定义在uwsgi中,如果定义proxy_pass时写http://,那么http地址应该定义在uwsgi中。(以上如有不妥之处,还请不吝赐教,希望大家批评指正。)
