一、确认服务器与客户端之间互通(检查网络 )
ping 192.168.184.131
二、配置环境
1.检查防火墙状态
systemctl status firewalld
#(setenforce 0 次命令可暂时不使用)
#暂停防火墙
systemctl stop firewalld
2.将项目文件传到服务器上
mkdir ~/downloads
#后面用于下载文件保存路径
mkdir /home/conf /home/logs /home/env /home/src
#/home目录下创建 conf logs env src四个目录:
#conf配置文件存放:nginx.conf ,uwsgi.ini文件
logs 日子文件,存放:nginx的启动和失败文件以及uwsgi的运行日子文件
env存放虚拟环境
src项目文件,存放目录代码
a 在本地电脑项目文件下生成package.txt需要包文件
进入项目环境下:
pip freeze > package.txt
b 使用xshell连接服务器,使用xftp将目标项目文件和package.txt
传到服务器:
/home/src/
3.安装python3和pip3
a.首先安装gcc编译器:
yum -y install gcc
gcc --version
b.安装依赖包(python3.7.0以下版本可不装 libffi-devel):
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
c. 下载 :
cd 到下载python3安装包的目录下
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
(在https://www.python.org/ftp/python/中选择自己需要的python源码包,这里下载的是python3.7.0 ,可以页面下载了直接拖到服务器里面去 )
d. 解压Python-3.7.0.tgz:
tar -zxvf Python-3.7.0.tgz
f. 执行配置文件,编译,编译安装python3
源码编译安装
cd Python-3.7.0
./configure --prefix=/usr/local/python3
#配置文件放的位置
make && make install
#编译 安装
安装完成没有提示错误便安装成功了
g. 建立软连接
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
h.查看版本
python3 --version
pip3 --version
4 安装virtualenv
a. 安装
yum install python-virtualenv
#创建虚拟环境env
#进入存放虚拟环境的目录
cd /home/env
virtualenv --no-site-packages testenv
(指定python3安装 :virtualenv -p /usr/bin/python3 --no-site-packages testenv)
cd testenv
#激活虚拟环境 (关闭环境命令:deactivate
这里是:
cd /home/env/testenv/bin/
deactivate )
source bin/activate
(source /home/env/testenv/bin/activate)
b. 安装项目所需要的包环境
pip3 install -r package.txt
(再激活环境情况下安装指定项目的包:
pip install -r /home/src/mintorFlask/package.txt )
5 在激活的虚拟环境下 测试flask服务
python3 manage.py runserver --host 127.0.0.1 -p 5000
正式环境部署时注意debug=False的修改
6 安装配置Uwsgi
a.安装uwsgi
/home/env/testenv/bin/python3/pip3 install uwsgi
b.创建uwsgi配置文件
cd /home/conf
vim uwsgi.ini
编写如下内容: 注释去掉
[uwsgi]
socket= 127.0.0.1:5000 # http 协议对客户端开发的端口号,客户端通过此端口访问 flask web 服务接口
pythonpath = /home/src/my_project # my_project应用整个目录,即python代码所在目录
wsgi-file = /home/src/my_project/manage.py # web 应用python主程序
callable = app # 一般在主运行程序 run_app.py 里指定 app = Flask(__name__)
processes = 4
threads = 2
demonize = /home/log/uwsgi.log # 指定日志文件;如果使用 supervisors 需要注释掉,否则,supervisors 不能自动拉起 uwsgi 程序
home = /home/env/testvenv # python 虚拟环境目录
c.运行项目
进入/home/conf
/home/env/testenv/bin/python3/uwsgi --ini uwsgi.ini
(关闭uwsgi命令 :pkill -f uwsgi -9)
如果没有报错 ls 可以查看当前目录下生成了 uwsgi.log日志文件
7 安装配置nginx
cd /home
a.安装nginx包:
wget -c https://nginx.org/download/nginx-1.12.2.tar.gz
b.解压包:
tar -zxvf nginx-1.12.2.tar.gz
c.切换到nginx-1.12.2下,编译安装配置
/opt/nginx-1.12.2
./configure \
>回车
d.编译安装
make && make install
#安装软连接
ln -s /usr/local/ngnix/sbin/nginx /usr/bin/nginx
这里查看一下 nginx是在哪个目录下可以启动
e.测试
nginx #没有任何提示就是成功了
f.备份配置文件
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak
g.进行配置
vim nginx.conf
server {
listen 80;
server_name src;
#charset koi8-r;
#access_log logs/host.access.log main;
access_log /home/log/flask.log;
error_log /home/log/flaskError.log;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000; #这里要和uwsgi 端口ip一致
uwsgi_param UWSGI_PYHOME /home/env/testenv; //指向虚拟环境目录
uwsgi_param UWSGI_CHDIR /home/src; #项目位置目录
uwsgi_param UWSGI_SCRIPT manage:app; #项目启动文件名
这里是manage.py和主程序注册app
}
}
检查nginx配置正确吗
nginx -t -c /usr/local/nginx/conf/nginx.conf
重启
nginx -s reload
(关闭:nginx -s stop)
重新运行uwsgi
/home/env/testenv/bin/python3/uwsgi --ini /home/conf/uwsgi.ini
如果没有问题,上面就运行成功了!恭喜你!
访问:192.168.184.131 就可以成功了
防火墙相关:
(https://blog.csdn.net/Honnyee/article/details/81535464)
注意:如果起了服务发现,外部无法访问服务 telnet也不通
firewall-cmd --zone=public --add-port=5005/tcp --permanent
(–permanent永久生效,没有此参数重启后失效)
添加端口外部访问权限(这样外部才能访问)
firewall-cmd --add-port=5000/tcp
重新载入,添加端口后重新载入才能起作用
firewall-cmd --reload
这些之后,端口是开启成功的,如果没有成功,重启系统试试
开端口(加入访问规则,添加外部访问权限)-重启防火墙-重启虚拟机
最重要的是还需要有服务监听这个端口(就是服务使用这个端口),才可访问的通!!