一: 环境:一台服务器
二:远程连接服务器
三:部署项目需要环境
- 1、首先安装python解释器和pip工具,这个就不多细说
- 2、安装虚拟环境,将项目单独隔离开,python第三方库比较多,有些库可能被弃用,没有维护,全部安装在原生解释器环境,可能导致部分正常库无法使用
sudo pip install virtualenv
sudo pip install virtualenvwrapper
- 3、创建项目存放目录,目录可以自定义,保证和配置文件bashrc中配置的环境目录一致即可
mkdir $HOME/.virtualenvs
- 4、修改配置文件bashrc,配置虚拟环境
vim ~/.bashrc
# 末尾添加配置信息
# 默认python3虚拟环境
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
# 添加虚拟环境目录到环境变量中
export WORKON_HOME=$HOME/.virtualenvs
# 设置开机自动运行虚拟环境 安装完毕virtualenvwrapper库之后,virtualenvwapper.sh文件会默认存在这个位置
source /usr/local/bin/virtualenvwrapper.sh
# 配置文件修改完毕,保存退出 .bashrc 文件
- 5、刷新配置文件
source ~/.bashrc
- 6、创建虚拟环境
mkvirtualenv -p python3 py3_web_flask
# 进入虚拟环境
workon py3_web_flask
# 安装flask框架
pip install flask
- 7、安装完毕,一切准备工作完毕,开始简单项目
# 创建文件夹
mkdir py3_web
# 进入文件夹 py3_web, 创建 main.py
cd py3_web
touuch main.py
- 8、编写demo
vim main.py
项目实例代码
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello World!<h1>'
if __name__ == "__main__":
app.run(host='0.0.0.0',port=80)
- 保存退出
- 9、运行代码
python main.py
- 如下显示,说明框架正常启动
- 10、浏览器访问服务器公网ip,就可以看到Hello World!
重点来了
uwsgi + nginx + flask 部署web项目
1、安装uwsgi
apt-get install uwsgi
任意位置编写uwsgi配置文件
vim uwsgi.ini
[uwsgi]
# localhost port 端口自定义
http=127.0.0.1:9000
# uwsgi 管理的项目入口文件
wsgi-file=/root/web/wether_spider/index.py
# 管理的flask对象app
callable=app
touch-reload=/root/web
启动uwsgiuwsgi --ini uwsgi.ini
启动后日志显示终端uwsgi --ini uwsgi.ini --daemonize /var/log/uwsgi.log
后台运行,日志输出到指定文件
2、安装Nginx
修改Nginx配置
Nginx默认配置文件在 /etc/nginx/nginx.conf
# 主要是修改http 里面的server内容
http{
server {
listen 8080; # 监听端口 默认80
server_name 106.12.194.204; # 本机ip
location / { # 将访问 / url时转发到下面的url
proxy_pass http://127.0.0.1:9000;
}
}
}
配置文件中还有引进了别的配置文件建议注释掉
# include /etc/nginx/conf.d/*.conf;
# include /etc/nginx/sites-enabled/*;
- nginx -t 命令检查Nginx配置是否有错误
- nginx -c /etc/nginx/nginx.conf 重新加载Nginx配置文件
- service nginx restart 重启服务
- nginx -s stop 快速停止或关闭Nginx
- nginx -s quit 正常停止或关闭Nginx
- nginx -s reload 配置文件修改重装载命令
配置过程中可能会用到Linux命令
# 查看端口运行的进程任务 进程pid
lsof -i :80
# 杀死进程
kill -9 pid
# 杀死运行的服务
pkill -9 nginx(服务名)
# 管道过滤查询
ps -ef | grep nginx