安装
1.在线上服务器安装虚拟开发环境(pyenv/virtualenv)
1.1安装pip
pip python专⽤的包管理⼯具
sudo apt install python3-pip
使⽤pip安装包
pip install 包名
pip install 包名 -i 下载源(https://pypi.douban.com/simple)
使⽤pip卸载包 pip unistall 包名
pip freeze 列出我们⾃⼰安装的所有依赖包
pip list 列出我们所有的依赖包
1.2安装virtualenv
sudo apt install virtualenv -y
1.3安装virtualenvwrapper管理虚拟环境
pip3 install virtualenvwrapper
1.3.1创建虚拟环境目录
mkdir ~/.virtualenvs
1.3.2修改虚拟环境变量
#打开⽂件
vi ~/.bashrc
#在⽂件内容末尾添加如下内容:
export WORKON_HOME=$HOME/.virtualenvs # 所有虚拟环境存储的⽬录
export VIRTUALENVWRAPPER_PYTHON=/usr/local/python36/bin/python
#指定python解释器
source /usr/local/bin/virtualenvwrapper.sh #执⾏virtualenvwrapper
安装脚本
#让配置⽂件其⽣效
source ~/.bashrc
1.3.3基本使⽤virtualenvwrapper
#创建⼀个虚拟环境:
$ mkvirtualenv my_django115
这会在 ~/.virtualenvs 中创建 my_django115 ⽂件夹。
#激活虚拟环境my_django115
$ workon my_django115
再创建⼀个新的虚拟环境
$ mkvirtualenv my_django2
virtualenvwrapper 提供环境名字的tab补全功能。
#退出虚拟环境
deactivate
#删除虚拟环境,需要先退出虚拟环境
rmvirtualenv my_django115
如果没有装virtualenvwrapper
用一下命令操作虚拟环境
virtualenv 虚拟环境名
# 指定python解释器
virtualenv -p python解释器路径 虚拟环境名
激活
source 虚拟环境名/bin/activate
退出
deactivate
2.安装nginx
sudo service apache2 stop #停⽌apache
sudo apt-get install nginx-full -y
#虚拟站点配置
#1.⾸先切换⽬录到sites-available⽬录
cd /etc/nginx/sites-available
#2.复制虚拟站点配置模板,⽣成⾃⼰虚拟站点的配置⽂件
sudo cp default www.blog.com.conf
#3 编辑模板
server {
listen 80; #监听端⼝
#站点的根⽬录
root /var/www/html/www.blog.com;
# Add index.php to the list if you are using PHP
#⽹站默认⾸⻚打开顺序
index index.html index.htm;
#站点名称,可以有多个名称,中间⽤空格隔开
server_name www.blog.com blog.com;
}
重启nginx服务
sudo service nginx restart (start/stop)
或者
sudo /etc/init.d/nginx restart
3.安装mysql
sudo apt-get install -y mysql-server mysql-client
4.创建虚拟环境
看第1点创建
5.在虚拟开发环境中安装依赖库
#在开发的虚拟环境中执⾏
pip freeze > requirement.txt
#将requirement.txt上传到服务器
#在新建的虚拟环境中执⾏
pip install -r requirement.txt
6.安装uwsgi
pip install uwsgi
7.上传项目
8.在项⽬中根⽬录下创建uconfig.ini的⽂件 代码在下⽅(项目同名目录下)
[uwsgi]
# 外部访问地址,可以指定多种协议,现在⽤http便于调试,之后⽤socket #
socket = 0.0.0.0:8000 # uwsgi的监听端⼝
# 指向项⽬根⽬录
chdir = /var/www/online
# wsgi.py所在位置
wsgi-file = day09/wsgi.py
module = day09.wsgi
# 虚拟开发环境位置(python所在⽬录)
virtualenv = /home/python/.pyenv/versions/env3.6.6
#plugins = python
master = true
# 处理器数
processes = 1
# 线程数
threads = 2
9.更改nginx的default⽂件代码在下⽅
详细见上方nginx安装
server {
listen 80;
server_name www.blog.com;
location / {
# 转发端⼝必须和uconfig.ini中socket端⼝⼀致
uwsgi_pass 127.0.0.1:8000;
include uwsgi_params;
}
# 静态资源所在位置
location /static {
alias /var/www/online/static/;
} }
10.重启nginx
见nginx安装
11.回到虚拟环境⽬录启动 uwsgi
#启动uwsgi
uwsgi uconfig
#关闭uwsgi
uwsgi —stop uconfig.ini
#如果关闭不掉杀死进程
可能存在问题(出现问题再操作,没问题不需要以下操作)
django admin没有样式 admin管理⻚⾯找不到base.css,dashboard.css⽂件
解决办法:
在settings⽂件中设置STATIC_ROOT⽬录,该⽬录不能在STATICFILES_DIRS中. 然后,执⾏命令
python manage.py collectstatic
执⾏后,django会将STATICFILES_DIRS下的所有⽂件以及admin所需要⽤到的
js,css,image⽂件全都放到STATIC_ROOT⽬录下.
例如, 像下⾯这样写:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'collectstatic')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]
简单描述⼀下这⼏个变量的意思 STATIC_URL: 当访问什么样的⽹址时, 按照访问静态⽂件的⽅式去查找⽂件. STATICFILES_DIRS: 当访问静态⽂件是, 会在每个app中 的static⽬录中查找, 然后再从STATICFILES_DIRS设置的路径列表中逐⼀查找.
STATIC_ROOT: 当执⾏ python manage.py collectstatic 时, 收集的静态⽂件放在该⽬录下.
此刻项⽬下就会多出⼀个collectstatic的静态资源⽂件⽬录
nginx配置更改为
server{
listen 80; # 服务器监听端⼝
server_name 192.168.1.132; # 这⾥写你的域名或者公⽹IP
location / {
uwsgi_pass 127.0.0.1:8000; # 转发端⼝,需要和uwsgi
配置当中的监听端⼝⼀致
include uwsgi_params; # 导⼊uwsgi配置
}
location /static{
alias /home/xlg/项⽬⽬录名/collectstatic/;
} }
403没有权限的问题
解决办法
找到nginx.conf⽂件的位置
将第⼀⾏的代码进⾏修改
#user www-data;
user root;
或者将 www-data更改权限