分类目录归档:Python

Ubuntu 16.04 上使用Nginx、 Gunicorn、supervisor 部署django项目


本文记录Ubuntu 16.04 上使用Nginx、 Gunicorn、supervisor 部署django项目

准备工作:

  • 创建一个django项目
  • 创建一个python虚拟环境
  • 激活虚拟环境 这里跳过准备工作,假设我已经有了一个项目DjangoBlog和一个虚拟环境alpfaceblog

创建数据库

登录mysql创建一个数据库,这里创建一个名称为blog数据库:

mysql -uroot -p
create database blog charset=utf8;

配置DjangoBlog/setting.py 中数据库 相关配置,如下所示:

DATABASES = {
   ...

Read more

django nginx 502 Bad Gateway


问题描述: 使用nginx在服务器端部署django项目,访问时总是报502 Bad Gateway错误 原因: 通过nginx的错误日志/var/log/nginx/error.log找到了原因:

2018/02/09 17:35:40 [error] 13175#13175: *1 connect() failed (111:Connection refused) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://127.0...

Read more

Ubuntu 16.04安装django-compressor error: command 'x86_64-linux-gnu-gcc' failed with exit status 1


Ubuntu 16.04安装django-compressor 报错:

In file included from rcssmin.c:18:0:
    _setup/include/cext.h:34:20: fatal error: Python.h: No such file or directory
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

错误的关键:_setup/include/cext.h:34:20: fatal erro...

Read more

python浅拷贝和深拷贝


在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用

直接赋值,传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变

import copy

  1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。(比深拷贝更加节省内存)
  2. copy.deepcopy 深拷贝 拷贝对象及其子对象,比如deepcopy 一个列表或元祖会对其子对象也执行深拷贝

Read more

flask web 模板中的url_for()


有多个路由的程序需要连接不同的网页链接,例如导航条

模板中构建正确的动态url较为困难,如果重定义路由,模板中的链接失效

url_for()函数:

使用url映射中保存的信息生成url

用法:

用视图函数名作为参数,返回对应的url

例如url_for(‘index’)得到的结果是”/”

utl_for(‘index’,external=True)

得到的是绝对地址 例如:http://localhost:5000

生成连接程序内放入不同路由的链接时,使用相对地址吗

使用url_for()生成动态地址:

动态部分作为参数传入

url_for(‘user’ name =’wang’,ext...

Read more

unning migrations: No migrations to apply.(Django 中修改表的问题)


django项目 修改了models.py某些表后,执行数据库迁移无效: unning migrations: No migrations to apply.

解决方法:
  • 删除migrations下的init.py
  • 进入数据库,找到django_migrations的表,删除该app名字的所有记录

    django_migrations表记录着数据库的对应表的修改记录。 每次修改后,都执行第三步的命令,然后在第一步的文件夹下生成修改的文件,django_migrations表记录修改的变更过程。

  • 重新生成迁移,并执行迁移:
    python manage.py makemigrations...

Read more

ubuntu python虚拟环境安装及使用


python虚拟环境好处

在开发中安装模块的方法:

pip install 模块名称

之前我们安装模块都是直接在物理环境下安装,这种安装方法,后面一次安装的会覆盖掉前面一次安装的。那如果一台机器上面开发多个项目使用到不同版本的模块呢?怎么样做才能不受版本影响!那么需要用到虚拟环境,每个虚拟环境互相隔离,在一个虚拟环境中安装卸载模块其他不受影响!

python虚拟环境的安装

  • 安装
    sudo apt-get install python-virtualenv
    sudo easy_install virtualenvwrapper
  • 配置虚拟环境

    配置虚拟环境的目的是可以直接在终端使用mkvir...

Read more

Ubuntu 16.04 mysqld.sock找不到导致无法连接mysql


问题: 当运行django项目时,报错无法连接到mysql:

pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1'([Errno 111] Conn

解决步骤: 1.尝试登录mysql, 执行mysql -uroot -p, 继续报错:

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
  1. 进入/var/run目录,发现mysqld目录不存在
  2. 百度搜索出现了各种答案,最...

Read more

django项目在执行迁移数据库时遇到的问题


今天周日我又开始折腾我的blog项目了,项目是使用django,并部署在亚马逊EC2上,系统为ubuntu16.04。

调试过程是在我的mac上的虚拟机中完成的,虚拟机中的系统为ubuntu16.04,基本配置与我在EC2上的一致,我是在本地编写代码并测试的,完成后再push到github,服务器端pull后运行。

今天我主要移除了django自带的admin,并使用了自定义的admin,并添加了markdown中直接上传图片等功能,期间我新建并修改了部分models,在本地进行migrate并没有问题,但是当在服务器端migrate时,却报了各种错误。

当本地测试数据库和服务器数据库进...

Read more