赞
踩
服务器端配置使用了gunicorn和nginx,其中gunicorn用于运行Python程序,nginx用于反向代理(缓冲请求和相应)。
因为腾讯云的CentOS系统里面默认安装了python2.7.5(使用python -V查看已安装python版本,注意是大写V),而sqlite3是python自带的一款轻量级数据库,所以我们只需要安装flask即可。安装flask 最便捷的方式是使用虚拟环境。虚拟环境是 Python 解释器的一个私有副本,在这个环境中你可以安装私有包,而且不会影响系统中安装的全局 Python 解释器。
首先安装虚拟环境virtualenv(可以通过pip list查看可安装的内容)
pip install virtualenv
然后进入工程目录并创建虚拟环境
virtualenv env #创建一个名为env的虚拟环境
可以看到在虚拟环境中一样安装了pip,创建完后使用ll或ls指令可以看到已经成功创建了一个名为env的虚拟环境。
激活虚拟环境
source env/bin/activate
当前面出现(env)的时候就证明虚拟环境成功激活(关闭虚拟环境只需要在工程目录下输入deactivate指令即可),此时就可以使用pip来安装flask了。
source env/bin/activate
出现如下字样则安装成功,此时可以开始编写flask程序。
安装Nginx有两种方式可以选择:一是直接yum install nginx(省事);二是下载Nginx的源代码在服务器端重新编译生成(虽然麻烦,但是和服务器更兼容)。
第一种方式就是小白教程,一句指令搞定,这里就不说了。
第二种方式可以参考这个博客。
注意一下不同的安装方法对应的启动Nginx方法也不一样,通过yum install安装的可以直接使用指令service nginx start启动,自己编译的需要到nginx的目录下(可以使用whereis nginx定位目录)再./nginx启动。
进入工程目录,激活虚拟环境,然后
pip install gunicorn
有两种方法可以将本地的python(flask)程序上传至云端。
方案一:使用WinSCP直接把.py文件拷贝到服务器对应位置
方案二:NotePad++和插件NppFTP,把云端的.py程序同步到本地进行修改(此时代码保存后会自动上传至云端)
下面分别介绍这两种方法(假设云端的工程路径为root/test):
1、WinSCP
打开WinSCP,文件协议选择SFTP,主机名输入云端服务器的公网IP地址(注意一定要是公网),端口号选择22,用户名和密码不同服务器的默认用户名不同(也可以根据自己需要新建一个用户)。
成功登陆远程服务器之后找到对应的工程目录,左边是我们电脑的本地文件,右边是服务器的文件。直接把.py文件拖拽至右端即可。
2、NotePad++
打开NotePad++并安装NppFTP插件,安装完成后界面如下
选择Profile Setting(设置方法参考WinSCP设置方法)
然后点击工具栏第一个按钮进行连接,连接成功后进入工程目录下,新建一个.py文件并将本地的代码复制进去,保存后可以看到代码已经成功上传至服务器端。
先进入工程所在目录,再使用以下指令运行代码。
gunicorn -D -w 4 -b127.0.0.1:8080 HelloFlask:app
说明:
-D:表示后台运行
-w 4:表示开启四个线程(效率会高一点,可以根据自己服务器情况决定)
-b 127.0.0.1:8080:表示ip和端口,这里采用本机访问,方便nginx代理
最后面的HelloFlask表示程序名称,:app为全局变量app =Flask(__name__)
pstree -ap|grep gunicorn
启动完后,可以通过上面的指令查看gunicorn树。可以看到,成功开启了四个线程,主线程号为11027。至此,我们的代码已经在服务器上面愉快的跑起来了。
安装完nginx之后,到user/local/nginx/conf路径下,找到nginx.conf文件,修改其中的配置信息。(可以直接在服务器修改,也可以使用前面介绍的方法先下载到本地修改完后再同步到服务器端)
这里我采用NotePad++下载到本地修改。找到关键代码段,这里的意思就是监听80端口,并将80端口的请求转发给8080端口(也就是我们前面gunicorn运行的那个端口)。listen填写要监听的端口号(Http协议默认为80,也可以填写其他端口,但是主要需要去腾讯云-控制台-安全组,开放对应的端口),server_name填写服务器的公网IP,proxy_pass填写上一步gunicorn运行的地址。
配置好之后,启动nginx,浏览器访问203.195.199.250
访问203.195.199.250/user
至此,大功告成!!!
1、列出所有正在运行的端口
netstat -ntlp
可以看到端口80由nginx监听,端口8080是我们的python程序
2、操作文件(其实可以用WinSCP替代)
mkdir dir1 创建 'dir1' 目录
rm -f file1 删除 'file1'
rm -rf dir1 删除 'dir1' 目录及其子目录内容
3、安装文件
yum install ***
4、重启gunicorn(代码修改后需要)
首先pstree -ap|grep gunicorn查看gunicorn树
然后kill -HUP 6264即可关闭gunicorn(6264为gunicorn的主进程号)
最后gunicorn -D -w 4 -b 127.0.0.1:8080 HelloFlask:app重新运行程序
5、重启nginx
/usr/local/nginx/sbin -s stop
/usr/local/nginx/sbin/nginx
(不行的话ps -ef|grep nginx看线程,然后kill -HUP 主进程号强制关闭)
kill -HUP 主进程号(平滑重启)
kill -QUIT 主进程号(从容停止)
kill -TERM 主进程号(快速停止)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。