Python Web程序部署到Ubuntu服务器上的方法


Posted in Python onFebruary 22, 2018

在本文记录了我在Ubuntu中部署Flask Web站点的过程, 其中包括用户创建、代码获取、Python3环境的安装、虚拟环境设置、uWSGI启动程序设置,并将Nginx作为前端反向代理。希望对各位有所帮助。

Python Web程序部署到Ubuntu服务器上的方法

建立一个Python Web程序专用账户

adduser haseo
vim /etc/sudoers #将haseo用户加入导sudo用户清单中
sudo usermod -a -G www-data haseo

安装Python3并配置程序运行环境

1.更新Ubuntu的软件库

sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev #安装一些必要的工具包

2.安装python包管理工具

python3 -V
sudo apt-get install -y python3-pip
pip3 install virtualenv

配置Python 程序

1.创建程序目录

mkdir -p /var/www/html/pricing-service

2.修改目录权限

sudo chown haseo:haseo /var/www/html/pricing-service

3.创建一个SSH Key使得用户可以同步GitHub的代码

ssh-keygen
cat ~/.ssh/id_rsa.pub # 复制公钥并增加到GitHub(https://github.com/settings/keys)

4.复制GitHub上的代码

git clone git@xxx .

5.创建log目录

mkdir log

6.创建虚拟目录

pip3 install virtualenv
python3 -m virtualenv venv # 在pricing-service目录下执行
./venv/bin/pip install -r requirements.txt
./venv/bin/pip install uwsgi

配置uwsgi

1.测试一下python直接运行程序是否可以访问

vim ~/myproject/wsgi.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
 return "<h1 style='color:blue'>Hello There!</h1>"
if __name__ == "__main__":
 app.run(host='0.0.0.0')
python wsgi.py

2.创建WSGI入口文件

vim ~/myproject/wsgi.py
from myproject import app
if __name__ == "__main__":
 app.run()

3.测试uWSGI是否正常运行

uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi:app

4.创建uWSGI配置文件

前面测试没问题之后我们开始创建uWSGI配置文件

vim ~/myproject/wsgi.ini

[uwsgi]
module = wsgi:app
master = true
processes = 5
socket = socket.sock
chmod-socket = 660
vacuum = true
die-on-term = true

5.创建systemd文件

sudo vim /etc/systemd/system/price_service.service

[Unit]
Description=uWSGI instance to serve price_service
After=network.target
[Service]
User=haseo
Group=www-data
WorkingDirectory=/var/www/html/pricing-service
Environment="PATH=/var/www/html/pricing-service/venv/bin"
ExecStart=/var/www/html/pricing-service/venv/bin/uwsgi --ini wsgi.ini
[Install]
WantedBy=multi-user.target

6.启动并启用wsgi服务

sudo systemctl start price_service
sudo systemctl enable price_service

配置Nginx

1.安装nginx

apt-get install nginx

2.Nginx状态查看及进程管理

systemctl status nginx
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//' #获取服务器的IP地址
sudo systemctl start nginx
sudo systemctl reload nginx
sudo systemctl disable nginx # 精致nginx在系统启动的时候启动
sudo systemctl enable nginx

3.配置Nginx站点

vim /etc/nginx/sites-available/default
server {
  listen 8080; #监听IP
  real_ip_header X-Forwarded-For;
  set_real_ip_from 127.0.0.1; # 告诉Python程序是谁发送的请求
  server_name localhost;
  location / { # 用户访问的根目录比如 http://www.bihell.com/
    include uwsgi_params; # Flask程序需要uwsgi解析
    uwsgi_pass unix:/var/www/html/pricing-service/socket.sock; #uwsgi通过这个文件传递信息
    uwsgi_modifier1 30;
  }
  # 404错误页面配置,下同
  error_page 404 /404.html;
  location = /404.html {
    root /usr/share/nginx/html;
  }
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
  root /usr/share/nginx/html;
 }
}

4.软链接导nginx sites-enabled 目录

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled

5.测试配置

sudo nginx -t

6.重新启动nginx大功告成

sudo systemctl restart nginx

总结

以上所述是小编给大家介绍的Python Web程序部署到Ubuntu服务器上的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python 中文乱码问题深入分析
Mar 13 Python
Python使用urllib2获取网络资源实例讲解
Dec 02 Python
Python守护进程用法实例分析
Jun 04 Python
Python字符串拼接六种方法介绍
Dec 18 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
Jun 27 Python
详解python编译器和解释器的区别
Jun 24 Python
Python 等分切分数据及规则命名的实例代码
Aug 16 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
解决python 找不到module的问题
Feb 12 Python
pytorch实现查看当前学习率
Jun 24 Python
django inspectdb 操作已有数据库数据的使用步骤
Feb 07 Python
python使用torch随机初始化参数
Mar 22 Python
Python中 传递值 和 传递引用 的区别解析
Feb 22 #Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 #Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 #Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 #Python
基于Django用户认证系统详解
Feb 21 #Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 #Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 #Python
You might like
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
php使用百度天气接口示例
2014/04/22 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
2010/02/09 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
JavaScript页面倒计时功能完整示例
2019/05/15 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
python实现备份目录的方法
2015/08/03 Python
Python实现进程同步和通信的方法
2018/01/02 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
wxPython实现画图板
2020/08/27 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
美国温暖商店:The Warming Store
2018/12/15 全球购物
幼师自我鉴定
2014/02/01 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
青年教师听课心得体会
2016/01/15 职场文书
高中化学教学反思
2016/02/22 职场文书
golang 实现并发求和
2021/05/08 Golang