mysql 部署时的utf8 中文支持问题

在发布django网站时,在向数据库中录入中文时,发生错误:

Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

该问题是由于mysql默认字符编码是latin,不是utf8,因此需要修改mysql的编码格式。
操作过程如下:
进入mysql,执行 show variables like ‘character%’;


可以看到database的编码不是utf8.
编辑文件 /etc/mysql/mysql.conf.d/mysqld.cnf
增加两行:
character_set_server=utf8
init_connect=’SET NAMES utf8′

保存后,重启mysql ,  service mysql restart

再次查看mysql编码

进入mysql命令行,执行以下操作


    SET collation_connection = 'utf8_general_ci';
    ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
    ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

经过以上更改以后,成功录入中文

apache2 部署错误

今天部署django+apache2+mysql过程中,一直无法成功,显示HTTP 500错误。查了两个小时,最后居然是有一句我以为没作用的语句

就是这一句,下次记得这个路径一定要与工程目录一致。

还有一个问题,就是工程目录不要放到其他目录下,就放在/var/www/html下,否则会出现页面禁止访问的错误。

ubuntu 16.04 基于apache2发布Django网站

最近公司有个项目可能会使用python开发基于AI的网站,由于系统使用人数不会太多,网站执行效率不会成为太大的问题,考虑直接使用python开发网站系统,框架就用Django,为了实现这种架构,我申请了一台阿里云的服务器,作为运行平台。以下是记录整个平台的搭建过程,一方面便于自己后期维护,另外也可以给需要的朋友提供一些参考。

准备环境:

ubuntu16.04

sudo apt-get update

sudo apt-get upgrade

先更新一下系统

步骤如下:

一、安装基本的框架

  1. 安装HTTP服务器

sudo apt-get install apache2

安装完成确认一下服务器是否正常

2. 安装PHP

sudo apt-get install php libapache2-mod-php

/var/www/html/目录下新建一个文件info.php,内容如下:

<?php

phpinfo()

?>

访问该文件(IP地址/info.php),如果可以查看到如下页面,说明PHP安装正常

3. 安装MYSQL

由于Django运行需要数据库的支持,自带的sqlite性能较差,因此我们需要安装MySQL数据库

sudo apt-get install mysql-server mysql-client

sudo apt-get install libmysql-dev

sudo apt-get install libmysqlclient-dev

sudo apt-get install python-dev

pip3 install mysqlclient

安装mysql数据库及连接客户端,安装过程中,记录好数据库的root密码

安装完成后,运行mysql -uroot  -pxxxxxx 进入mysql xxxxxx是数据库密码

运行show databases; 能查看到当前安装的数据库,则证明数据安装正常

4. 安装phpMyAdmin

为了管理MySQL数据库,我们安装phpMyAdmin

sudo apt-get install phpmyadmin

sudo apt-get install php-mbstring

sudo apt-get install php-gettext

下面两个是php扩展,如果不安装,进入php会有错误提示,安装过程会在数据库中建立phpmyadmin用户并要求输入密码,数据库类型选择apache

建立/var/www/html 下的软连接

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

修改php配置文件(参考http://blog.csdn.net/l6807718/article/details/51374915)

sudo vim /etc/php/7.0/apache2/php.ini

display_errors= On

extension=php_mbstring.dll(开启mbstring)

sudo service apache2 restart

顺利进入系统,输入root及密码进入,在数据库中新建一个库mysite,用于存放我们Django网站的数据,并建立用户Django_user

至此,我们的准备工作完成,开始建立Django项目及应用

二、建立网站及应用

  1. 安装Django

先运行python3,确认当前的python3版本是否正常,python3 ubuntu系统自带,不用另外安 装。

本项目开发都基于python3,故不讨论python2设置

安装pip3

sudo apt-get install python3-pip

通过pip3安装Django

sudo pip3 install Django

验证Django是否正常,进入python3,运行

如能正确显示版本号,则Django已正确安装

2. 建立Django项目

/var/www/html/ 目录下运行 django-admin startproject mysite django-admin startapp polls 建立mysite项目,项目可先在本地测试好,再上传至云服务器/var/www/html/目录下

安装apache2wsgi扩展

sudo apt-get install libapache2-mod-wsgi-py3

配置apache2启动加载wsgi模块

修改/etc/apache2/apache2.conf ,在最后增加一行

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so

重启apache2

sudo service apache2 restart

创建apache2新站点mysite.conf

/etc/apache2/sites-available目录下新建mysite.conf文件

<VirtualHost *:80>

ServerName mysite.com

DocumentRoot /var/www/html/mysite

<Directory /var/www//html/mysite>

    Require all granted

</Directory>

WSGIScriptAlias / /var/www/html/mysite/mysite/wsgi.py

SetEnv DJANGO_SETTINGS_MODULE /var/www/html/mysite/mysite/settings.py

</VirtualHost>

WSGIPythonPath /var/www/html/mysite

启动新站并停止旧站

sudo a2ensite mysite.conf

sudo a2dissite 000-default.conf

service apache2 reload

service apache2 restart

/etc/apache2/sites-enabled目录下确认新站已激活

在浏览器中输入http://IP地址/polls访问服务器

如果出现外部访问被禁止的情况,就修改一下 mysite/settings.py文件,将

ALLOW_HOSTS= [] 改为ALLOW_HOSTS= [‘*’] 

至此,Django项目顺利在Apache中运行。