大家好,又见面了,我是你们的朋友全栈君。
不使用 Anaconda 可直接跳到创建虚拟环境
root@iZwz9ijwralw5z37wd16xsZ:~# bash ~/Downloads/Anaconda3-5.3.1-Linux-x86_64.sh
回车安装到默认路径即可
建议输入yes,输入No的话还需要自己手动添加路径,否则conda将无法正常运行
是否安装VSCode,随便,我这里不安装
启动服务
root@iZwz9ijwralw5z37wd16xsZ:~# source ~/.bashrc
输入conda list
, 安装成功会显示包名
创建 anaconda 环境
conda create -n name python版本号
root@iZwz9ijwralw5z37wd16xsZ:~# conda create -n MyDjango python=3.6.2
vim ~/.bashrc
# 添加下面代码
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh
# 使 .bashrc 生效
source ~/.bashrc
使用 anaconda环境/python环境 创建新虚拟环境
mkvirtualenv --python='/root/anaconda3/envs/MyDjango/bin/python' MyDjango
默认情况下,新创建的环境将会被保存在/Users/<user_name>/anaconda3/env目录下,其中,<user_name>为当前用户的用户名。 不指定python环境的话,默认会选择本地的python版本
进入虚拟环境
git clone
命令将仓库克隆到服务器 pip freeze > requirement.txt
命令将项目所需包输出到 requirement.txt 文件中pip install -r requirements.txt
命令安装包项目部署时,需要修改 settings.py
文件
DEBUG=FALSE
ALLOWED_HOSTS=['*']
在项目中新建一个文件 uwsgi.ini
,方便启动/终止 uwsgi 服务
[uwsgi]
# 使用nginx链接时使用
# socket=127.0.0.1:8000
# 直接做web服务器使用 python manage.py runserver ip:port
http=127.0.0.1:8000
# 项目目录 [pwd查看 直接填,不需要引号]
chdir=
# 项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=
# 指定启动的工作进程数
processes=4
# 指定工作进程中的线程数
threads=2
# 进程中,有一个主进程
master=True
# 保存启动之后主进程的pid
pidfile=uwsgi.pid
# 设置uwsgi后台运行, uwsgi.log 保存日志信息
daemonize=uwsgi.log
# 设置虚拟环境的路径 [cd .virtualenvs]
virtualenv=
下面是我的
uwsgi.ini
文件配置,可以参考一下。
[uwsgi]
# 使用nginx链接时使用
socket=127.0.0.1:8000
# 直接做web服务器使用 python manage.py runserver ip:port
# http=127.0.0.1:8000
# 项目目录 [pwd查看 直接填,不需要引号]
chdir=/root/MyDjango
# 项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=MyDjango/wsgi.py
# 指定启动的工作进程数
processes=4
# 指定工作进程中的线程数
threads=2
# 进程中,有一个主进程
master=True
# 保存启动之后主进程的pid
pidfile=uwsgi.pid
# 设置uwsgi后台运行, uwsgi.log 保存日志信息
daemonize=uwsgi.log
# 设置虚拟环境的路径 [cd .virtualenvs]
virtualenv=/root/.virtualenvs/MyDjango
ps aux | grep uwsgi
命令可以查看uwsgi 进程这里有一个小问题,如果遇到可以看一下解决方法 问题: 执行启动后,报错信息 uwsgi: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 解决方法: sudo apt-get install libpcre3 libpcre3-dev # 安装需要的包 find / -name libpcre.so.3 # 找到libpcre.so.3(一般在根目录/lib/x86_64-linux-gnu下) 找到 /lib/x86_64-linux-gnu/libpcre.so.3 sudo ln -s /lib/x86_64-linux-gnu/libpcre.so.3 /usr/lib/libpcre.so.1 # 做软链接即可
仅仅使用uwsgi,首页的静态文件不能显示
解决方法: 在uwsgi前面在加一个nginx服务器 nginx中进行配置
uwsgi 需要更改配置文件
[uwsgi]
# 使用nginx链接时使用
socket=127.0.0.1:8080
# 直接做web服务器使用 python manage.py runserver ip:port
# http=127.0.0.1:8080
# 项目目录 [pwd查看 直接填,不需要引号]
chdir=
# 项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=
# 指定启动的工作进程数
processes=4
# 指定工作进程中的线程数
threads=2
# 进程中,有一个主进程
master=True
# 保存启动之后主进程的pid
pidfile=uwsgi.pid
# 设置uwsgi后台运行, uwsgi.log 保存日志信息
daemonize=uwsgi.log
# 设置虚拟环境的路径 [cd .virtualenvs]
virtualenv=
nginx配置转发请求给 uwsgi,配置路径为 /etc/nginx/sites-available/default
http{
server {
listen 80;
server_name localhost;
location / {
# 包含uwsgi的请求参数
include uwsgi_params;
# 转交请求给uwsgi
uwsgi_pass 127.0.0.1:8000 # uwsgi服务器的ip:port
}
}
}
下面是我的 default
配置信息,加了静态文件处理【静态文件处理请继续往下看】,可以参考一下
upstream MyDjango {
server 127.0.0.1:8000;
}
server {
listen 80;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass MyDjango;
}
location /static {
alias /var/www/MyDjango/static;
}
}
ps aux | grep nginx # 查看是否有nginx进程
也可以用如下命令 service nginx start service nginx stop service nginx restart service nginx reload
http{
server {
listen 80;
server_name localhost;
location / {
# 包含uwsgi的请求参数
include uwsgi_params;
# 转交请求给uwsgi
uwsgi_pass 127.0.0.1:8080 # uwsgi服务器的ip:port;
}
# 请求的路径中以static开头,就匹配下列地址
location /static {
# 指定静态文件存放的目录
alias 目录 例如: /var/xxx/static;
/var/www/MyDjango/static;
}
}
}
django settings.py 中配置收集静态文件路径
# settings.py 中设置
STATIC_ROOT=收集的静态文件路径 例如: /var/xxx/static
# 例如,我的路径为 STATIC_ROOT = '/var/www/MyDjango/static'
创建文件夹
sudo mkdir -p /var/www/MyDjango/static
普通用户没有权限,需要修改文件权限 sudo chmod 777 /var/xxx/static/
django 收集静态文件的命令
重启nginx服务
/etc/init.d/nginx reload
到这里,项目就部署完成了,还有其他需求可以继续往下看。
在 location 对应的配置项中增加 proxy_pass 转发的服务器地址,
如当用户访问 127.0.0.1 时,在nginx 中配置把这个请求转发给 172.10.179.115:80(nginx)服务器,让这台服务器提供静态页面
nginx配置如下:
http{
server {
listen 80;
server_name localhost;
location / {
# 包含uwsgi的请求参数
include uwsgi_params;
# 转交请求给uwsgi
uwsgi_pass 127.0.0.1:8080 # uwsgi服务器的ip:port;
}
# 请求的路径中以static开头,就匹配下列地址
location /static {
# 指定静态文件存放的目录
alias 目录 例如: /var/xxx/static;
}
# 等号为精确匹配
location = / {
# 传递请求给静态文件服务器上的nginx
proxy_pass http://ip;
}
}
}
nginx 配置负载均衡时,在 server 配置的前面增加 upstream 配置项
http{
# 名称随便起
upstream ruochen {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
server_name localhost;
location / {
# 包含uwsgi的请求参数
include uwsgi_params;
# 转交请求给uwsgi
# uwsgi_pass 127.0.0.1:8080 # uwsgi服务器的ip:port;
uwsgi_pass ruochen; # 上面名字是啥,这里就是啥
}
# 请求的路径中以static开头,就匹配下列地址
location /static {
# 指定静态文件存放的目录
alias 目录 例如: /var/xxx/static;
}
# 等号为精确匹配
location = / {
# 传递请求给静态文件服务器上的nginx
proxy_pass http://ip;
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/194773.html原文链接:https://javaforall.cn