一.购买阿里云服务器
1.登录阿里云官网,购买云服务器ECS,
此处有两种方法,一是购买云服务器ECS,费用较高,二是购买学生机(24岁以下默认学生)
2.自行选择服务器配置(此处以学生机为例),一般选择云服务器ECS,CentOS7.3,64位。
3.购买成功后,进入控制台,查看服务器IP及配置
4.重置root账号密码
在上述图片中点击更多,选择密码/密钥>>重置密码
5.修改好密码,重启云服务器,然后用xshell链接服务器试试
二.配置项目需要的环境
1.安装python
2.安装msyql数据库
3.安装redis数据库
三.Flask简单项目部署(nginx代理项目,同时需要注意服务器防火墙设置)
1.安装nginx
centos7系统库中默认是没有nginx的rpm包的,所以我们自己需要先更新下rpm依赖库
命令: rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
安装: yum install nginx
启动: systemctl start nginx
查看状态: systemctl status nginx
开机自启: systemctl enable nginx.service
2.编写Flask项目
新建app.py文件
3.配置Nignx--(cd //etc/nginx/nginx.conf)(可选择配置,默认80端口)
proxy_pass此处的启动端口一定要和项目的启动端口一致,这样才能保证项目能够被nginx代理,之前在此迷糊了好久。
#只用nginx代理的配置
server {
listen 80;
server_name 47.106.218.225; # 阿里云公网ip
location / {
proxy_pass http://127.0.0.1:5000; # 本机:启动端口(此处端口与项目端口一致)
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
配置完nginx重启nginx服务
nginx -s reload
如果出现报错:nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
可能是nginx服务没有启动
systemctl start nginx # 启动nginx
4.启动项目,可以直接通过IP:http://47.106.218.225访问,nginx代理会将访问指向项目
python app.py
5.后台启动Flask项目(可先使用python启动项目测试,如果可以正常访问,就使用后台代理的方法启动)
nohup python app.py >> app.out & 将运行日志输出到app.out文件
6.查看实时项目状态运行状态:
tail -f app.out/tailf app.out
四.Flask项目部署(使用uwsgi+nginx代理启动项目,同时需要注意服务器防火墙设置)
1.安装uwsgi,并创建uwsgi软连接,不然报错找不到uwsgi命令
pip install uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
2.配置uwsgi
在部署项目的跟目录下新建一个配置文件uwsgiconfig.ini,添加配置内容
[uwsgi]
# uwsgi 启动时所使用的地址与端口
socket = 127.0.0.1:5000(可以与项目端口不一致)
# 指向网站目录
chdir=/usr/local/project/demo03/clxt4.0
# python 启动程序文件
wsgi-file = manage.py
# python 程序内用以启动的 application 变量名
callable = app
# 处理器数
processes = 4
# 线程数
threads = 2
# 缓冲区
buffer-size = 32768
#状态检测地址
stats = 127.0.0.1:9191
3.保存并退出
:wq
4.配置nginx(在此时配置nginx时,之前配置的单独nginx代理项目的配置代码需要隐藏,然后添加新的配置文件)
备注此处的listen,和server_name一定要写上,之前就是因为这个导致迷糊了好久
cd /etc/nginx/conf.d,添加代码
server {
listen 80;
server_name 47.106.218.225; # 阿里云公网ip
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;
uwsgi_param UWSGI_PYHOME /path/mtenv; #python位置,要么是虚拟机,要么是运行的环境变量位置
uwsgi_param UWSGI_CHDIR /path/python-prj/flask-prj; #项目根目录
uwsgi_param UWSGI_SCRIPT manage:app; #启动项目的主程序,如果manage.py位域flask-prj的src/flask/这样的目录下,那么就写成src/flask/manage:app这样
#root /usr/share/nginx/html;
#index index.html index.htm;
}
5.配置重启nginx服务
nginx -s reload
service nginx restart # 重启nginx服务
service nginx star # 启动服务
service nginx stop # 停止服务
6.运行uwsgi服务(通过执行启动脚本运行项目)
uwsgi --ini /usr/local/project/demo03/clxt4.0/uwsgiconfig.ini (启动脚本存放位置)
# 后台运行
uwsgi --ini /usr/local/project/demo03/clxt4.0/config.ini --daemonize /usr/local/project/demo03/clxt4.0/manage.out
# 停止uwsgi服务,可通过查询uwsgi进程号kill进程
kill 进程号(不完全停止服务,服务会重启)
kill -9 进程号(服务完全停止,需要重新启动)
7.遇到问题:使用uwsgi启动项目之后一直提示是使用python2启动的?(不知怎么配置导致uwsgi使用python2的版本启动)
# 1.查看uwsgi使用的python版本
uwsgi --python-version
# 2.查看uwsgi软连接指向
cd /usr/local/python3/bin # 切换到指定目录
ll # 查看所有软连接指向
# 3.删除uwsgi软连接
rm -rf /usr/bin/uwsgi
# 4.重新创建链接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
# 5.再次查看uwsgi使用python版本
uwsgi --python-version
# 6.可以使用启动uwsgi的方法启动项目
注:本文总结可能会有些乱,具体步骤总结如下:
安装python3.6可以参考文章《linux安装python3.6》
安装mysql服务可以参考文章《linux安装mysql》
安装redis服务可以参考文章《阿里云Centos7安装redis》
使用nginx代理可以从《nginx代理项目》开始实施
安装uwsgi服务可以从《使用uwsgi+nginx代理启动flask项目》开始实施
ps:此方法不使用于生产环境下,生产环境下应该使用Python+Gunicorn(web服务器)+nginx(正反向代理)方式部署。