切换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
保存退出
按键 Esc
按键 SHIFT + !
按键 wq
按键 Enter
让刚才编辑的 文件生效
source ~/.bashrc
创建虚拟环境
mkvirtualenv django_env
(django_env) 代表进入了虚拟环境
在虚拟环境种安装项目依赖的包
需要提前准备 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;
重加载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