1. 环境说明
- 服务器Centos7
- python 3.6
- flask项目
2. 环境准备
- Centos7自带的python版本是2.7,所以需要手动安装python3.6 版本,参考我这篇文章
- https://blog.csdn.net/weixin_44232093/article/details/105248148
3. 搭建虚拟环境
# 下载虚拟环境包
pip3 install virtualenv
# 使用命令新建虚拟环境,我的目录是/usr
# 创建虚拟环境名叫 venv ,如果你是参考我的文章安装的python
# 那么和我的路径保持一致即可,如果在这一步提示bash: virtualenv: 未找到命令...
# 那么参考错误解决链接: https://www.cnblogs.com/hszstudypy/p/11511228.htm
# 指定虚拟环境的python版本 这里指定3.6
virtualenv -p /usr/local/bin/python3 venv
# 激活虚拟环境 source后加你自己的venv目录路径 /bin/activate
source venv/bin/activate
# 查看当前虚拟环境的python版本
python -V
# 在虚拟环境中安装flask、uwsgi库
pip install uwsgi
pip install flask
4. 创建uwsgi配置文件
- 在激活的虚拟环境中
/usr/venv 目录下
创建 uwsgi.ini 配置文件
# 此时的目录为 /usr/venv 当然你在哪创建都行
touch uwsgiconfig.ini
# 编辑配置文件 添加以下内容
vim uwsgiconfig.ini
- 配置文件内容,记得删除注释
[uwsgi]
# uwsgi 启动时所使用的IP地址与端口,0.0.0.0表示所有IP地址都行
socket = 127.0.0.1:5000
# 指向网站目录,也就是你项目根目录
chdir= /usr/flask
# python 你的程序启动文件,如果是app.py那么这里就写app.py
wsgi-file = app.py
# 你的运行程序省略.py后缀的名字
module = app
# 你的启动程序中的 app = Flask(__name__) 变量名,如果是app 那么这里就写app
callable = app
# 进程数量
processes = 5
# 线程数量
threads = 2
#状态检测地址
stats = 127.0.0.1:9191
# 日志输出目录
daemonize = /usr/venv/flask.log
5. 安装nginx
# 添加nginx的yum源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安装nginx 命令安装比较简单,也可以选择源码安装
sudo yum install -y nginx
- 我的安装后nginx目录在 /etc/nginx ,找到配置文件
/etc/nginx/nginx.conf
配置 - 我这里配置 /etc/nginx/nginx.conf 不生效,配置好几遍访问还是nginx欢迎页面,如果你和我的情况一样,那么看看nginx配置文件的引入路径对应哪个配置文件
- 添加如下内容
# default.conf全部内容都在这里 ,我把注释掉的内容都删掉了,一切从简
server {
listen 80;
# 这里改成你自己的IP,如果是域名那么写域名,如果配置成域名,你通过浏览器访问域名的80端口
# 那么就可以转到uwsgi的服务上 127.0.0.1:5000
server_name localhost;
location / {
# 这里是引入的uwsgi_params 注意路径一定要正确,你可以自己找一下
include /etc/nginx/uwsgi_params;
# 前面是固定写法 后面IP+端口号是你自己服务的端口号 只需要和uwsgi的socket保持一致即可
# 记得你主程序中运行需要设置host="0.0.0.0"
# 一定要和uwsgi中的socket保持一致 !!!!!!
uwsgi_pass 127.0.0.1:5000;
# 这里是之前默认的页面 欢迎页面我就没改 ,不需要可以删除
root /usr/share/nginx/html;
index index.html index.htm;
}
# default.conf自带的 错误页面和欢迎页面 不需要可以删除
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
- 配置完毕后启动nginx
systemctl start nginx
- 启动uwsgi项目进入文件目录执行 ,
uwsgi uwsgiconfig.ini
- 我测试的这个没添加日志路径,都输出在终端了这样就是启动成功了
- 访问你自己服务器的IP地址 http://xxx.xxx.xxx.xxx
6. 配置常用命令
# 查看端口占用 :
netstat -lnp | grep 端口号
#启动 nginx
systemctl start nginx
#重新启动 nginx
systemctl restart nginx
#关闭 nginx
systemctl stop nginx
#关闭所属所有进程 适用于所有,只需要更改 -9 后面的名字即可
killall -9 nginx
7. 502访问不到页面
如果你都配置的好好的,但是就是访问的时候提示页面出错,访问不到页面,或者一系列的错误问题,那么你就要考虑端口是否开放的问题了,Centos7有两个安全机制,一个防火墙,一个seLinux,这两个如果你不会调的话,那么直接关闭,只限于测试阶段,如果正式还是要请运维开放服务端口的
# 查看seLinux状态, enforcing为开启、disable为关闭
getenforce
# 临时关闭selinux
setenforce 0
# 永久关闭selinux
vim /etc/selinux/config
把SELINUX=enforcing改为SELINUX=disabled,保存文件重启即可
# 查看防火墙状态
systemctl status firewalld.service
# 关闭防火墙状态
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
# 开放5000端口 --zone是作用于 --permanent永久生效
firewall-cmd --zone=public --add-port=5000/tcp --permanent
# 关闭5000端口
firewall-cmd --zone=public --remove-port=5000/tcp --permanent
# 重新加载配置 刷新
firewall-cmd --reload
# 查看所有开放的端口
firewall-cmd --zone=public --list-ports
转载:https://blog.csdn.net/weixin_44232093/article/details/105270317
查看评论