最新Python部署详细教程

切换python3为默认

一般服务器都是默认python2

直接输入python 可以看到默认是python3 还是python2

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

安装python3-pip

# ubuntu
sudo apt install python3-pip
# centOS
sudo yum install python3-pip

安装虚拟环境

pip3 install virtualenv
pip3 install virtualenvwrapper

如果安装 virtualenvwrapper 报红

sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pbr
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-deps stevedore
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-deps virtualenvwrapper

再次安装 virtualenvwrapper

pip3 install virtualenvwrapper

配置环境变量

mkdir $HOME/.virtualenvs

编辑 bashrc文件

vim ~/.bashrc

如果提示 没有vim

# ubuntu
sudo apt install vim
# centOS
sudo yum install vim

进入编辑状态后直接在文件末尾处添加

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh

12.png

保存退出

按键 Esc
按键 SHIFT + !
按键 wq
按键 Enter

让刚才编辑的 文件生效

source ~/.bashrc

创建虚拟环境

mkvirtualenv django_env

(django_env) 代表进入了虚拟环境

13.png

在虚拟环境种安装项目依赖的包

需要提前准备 requirements.txt文件

# 虚拟环境下
pip install -r requirements.txt

虚拟环境相关操作

进入

workon 虚拟环境名称

退出

deactivate

删除虚拟环境

rmvirtualenv 虚拟环境的名字

项目相关 编辑项目的nginx.conf文件

1.进入到项目根目录

flask : 找到app.py的路径 或者 manage.py 的路径

例如: /home/www/project/app.py

django:找到manage.py的路径

例如:/home/www/project/manage.py

2.创建项目的nginx.conf文件

进入项目根目录
cd /home/www/project
创建该项目的nginx.conf (也可以创建到其他地方如果项目多的话)
vim nginx.conf

nginx.conf编辑的内容

uwsgi_pass版本
# 写入
server {

    listen         80; # nginx 端口号
    server_name    47.100.100.10 
    #server_name:你的服务器外网ip
    charset UTF-8;
    client_max_body_size 75M; # 限制最大请求体大小

    location/{
        # 把vue 的dist 文件放在项目目录下
        root /home/www/project/dist;
        index index.html;
        try_files $uri $uri/index.html $uri.html;
    }

    location /api/ { # / 代表所有路径都到该项目区找
        include uwsgi_params; # 导入uwsgi配置
        uwsgi_pass 127.0.0.1:8000; # 项目运行的ip端口
        uwsgi_read_timeout 300;
        uwsgi_send_timeout 300;
        uwsgi_connect_timeout 300;
    }
    location /static/ {
    #  静态文件配置
        alias /home/www/project/dist/static/;
     }
    #location /media/ {
    #   静态文件配置
    #   alias /home/www/project/media/;
    # }
 }
proxy_pass 版本
# 写入
server {

    listen         80; # nginx 端口号
    server_name    47.100.100.10 
    #server_name:你的服务器外网ip
    charset UTF-8;
    client_max_body_size 75M; # 限制最大请求体大小

    location / { # / 代表所有路径都到该项目区找
        proxy_pass http://127.0.0.1:8000; # 项目运行的ip端口
    }
    location /static {
    #  静态文件配置
        alias /home/www/project/static/;
     }
    #location /media {
    #   静态文件配置
    #   alias /home/www/project/media/;
    # }
 }

nginx相关

查看nginx配置文件路径

locate nginx.conf

或者

find / -name nginx.conf

普通版nginx(非宝塔版)

安装
# ubuntu
sudo apt install nginx 
# centOS
sudo yum install nginx

安装完成后 请访问你的服务器ip 查看是否有nginx的页面

如果没有 请重启nginx(操作步骤如下)

如果有则安装成功

启动
service nginx start
重启
service nginx restart
重加载
service nginx reload
停止
service nginx stop
普通版nginx.conf 文件位置
/etc/nginx/nginx.conf

备份nginx.conf配置文件

nginx搞崩了 十分麻烦 请先备份

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.copy
# 前面的路径是被拷贝的文件 后面的路径是要拷贝到的文件(直接创建)
# 如果在当前目录下 可以不添加路径

宝塔版nginx

安装:在宝塔上直接安装

启动
nginx -s start
重启
nginx -s restart
重加载
nginx -s reload
停止
nginx -s stop
宝塔版nginx.conf 文件位置
/www/server/nginx/conf/nginx.conf

备份nginx.conf配置文件

nginx搞崩了 十分麻烦 请先备份

cp /www/server/nginx/conf/nginx.conf /www/server/nginx/conf/nginx.conf.copy
# 前面的路径是被拷贝的文件 后面的路径是要拷贝到的文件(直接创建)
# 如果在当前目录下 可以不添加路径

编辑 nginx自带的nginx.conf文件

编辑之前请先备份nginx.conf文件 (重要步骤)

此nginx.conf 区别于 项目的nginx.conf

# 非宝塔版
vim /etc/nginx/nginx.conf
# 宝塔版
vim /www/server/nginx/conf/nginx.conf 

大致在第63行添加内容

把刚刚配置的项目的nginx.conf 文件 导入到 原nginx.conf文件中

include /home/www/project/nginx.conf;
1594396731453

重加载nginx.conf 文件 ( reload)

# 看上面 普通版 或者 宝塔版

无任何反应 说明 正常

有提示 则错误 :配置文件 应该是多打了 东西 或者少打 了东西

可以按照提示去查找原因

使用uwsgi 或者 gunicorn启动

一. 使用UWSGI

虚拟环境下 安装uwsgi

pip install uwsgi

创建并配置uwsgi.ini文件

vim uwsgi.ini
# 最好创建在项目目录下 方便管理
# 例如 /home/www/project/uwsgi.ini

编辑的内容

django版

# uwsgi.ini 的内容
[uwsgi]

#django 端口号

# 和nginx交互的ip端口
# 注意和项目下的nginx.conf文件中的uwsgi_pass的ip端口一样
socket = 127.0.0.1:8000

#项目 目录
chdir = /home/www/project/

#Django 项目下 wsgi.py 文件路径
module = django_work.wsgi:application

# 其他 根据自己需求 查询uwsgi配置 改变
master = true

#进程数4个的  配置
processes = 4
# 线程数5个
threads = 5
enable-threads = true
listen = 100
harakiri = 60
idle = 500
vacuum = true
# logto = /home/user/log/uwsgi.log
# 测试时不开logo日志,可以直接看到后台的print信息 以及一些错误信息

flask版

# uwsgi.ini 的内容
[uwsgi]

#django 端口号

# 和nginx交互的ip端口
# 注意和项目下的nginx.conf文件中的uwsgi_pass的ip端口一样
socket = 127.0.0.1:5000

#项目 目录
chdir = /home/www/project/

#flask 项目下 manage.py 文件路径 app 代表app.run()
# 如果是manage.run() 则 module = manage:manage
module = manage:app
# 或者app.py
# module = app:app


# 其他 根据自己需求 查询uwsgi配置 改变
master = true

#进程数4个的  配置
processes = 4
# 线程数5个
threads = 5
enable-threads = true
listen = 100
harakiri = 60
idle = 500
vacuum = true
# logto = /home/www/project/log/uwsgi.log
# 测试时不开logo日志,可以直接看到后台的print信息 以及一些错误信息

启动 uwsgi

直接启动
uwsgi --ini uwsgi.ini
后台启动
uwsgi -d -ini uwsgi.ini
关闭后台所有uwsgi进程
sudo pkill -9 uwsgi
检测uwsgi是否在后台启动
ps -ef | grep uwsgi

二. 使用gunicorn

一种是通过配置文件启动 类似 uwsgi

另一种是命令行输入相关配置

现在说一种不一样的

(我比较喜欢用这种方式,比较简单,不用写配置文件)

虚拟环境下安装gunicorn

pip install gunicorn

django版

django是通过wsgi.py启动的

在项目的根目录下

gunicorn -w 2 127.0.0.1:8000 项目的文件名.wsgi -D

-w 2 : 代表启动两个进程

-D 代表后台启动

flask版

flask 是通过 app.py文件里的app启动的

app.app

如果是manage.py 里面的 manage 则是

manage.manage

在app.py的同级目录下
gunicorn -w 1 127.0.0.1:8000 app.app -D

pip安装mysql-client 报错

sudo apt-get install python-dev default-libmysqlclient-dev
sudo apt-get install python3-dev
sudo apt-get install libssl-dev

再次安装mysql-client

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355