前言本文主要是写一下我在部署Django项目到阿里云服务器时遇到的一些坑,分享一下,希望遇到同样问题的人可以参考一下解决它。需要注意的是,这不是部署教程。它不会教你如何部署,更不会教你如何使用Django建站。这些内容可以很容易地在Internet上找到。Ubuntu16.04出现unableresolvehost的错误,然后我的系统换成CentOS。解决方法是使用sudovi/etc/hosts命令,编辑这个文件,在127.0.0.1localhost这一行后面加上你自己的机器名。settings.py拥有云服务器后,可以通过一些工具直接上传本地文件。由于我把代码放在了GitHub上,settings.py中的一些敏感信息,比如mysql密码,可以放到Bashvariables中或者文件中,不要显式放到开源文件中,或者建一个私有的GitHub仓库.withopen('env.json')asenv:ENV=json.load(env)SECRET_KEY=ENV['SECRET_KEY']ifENV.get('ENV')=='dev':DEBUG=Trueelse:DEBUG=False例如上面的。注意,如果你创建了env.json之类的文件,记得在.gitignore中忽略它,否则上传到GitHub就是沙雕了。即使不开源代码,Django也建议最好将SECRET_KEY放在系统环境变量中。另外,在生产环境(服务器)中,DEBUG选项要设置为False,ALLOWED_HOSTS:ALLOWED_HOSTS=['.elliot00.com','127.0.0.1','localhost']不推荐使用通配符*配置。当DEBUG设置为False时必须配置这个列表,否则会报错。ALLOWED_HOSTS是一个字符串列表,表示此Django网站可以提供的主机名或域。这是为防止HTTP主机标头攻击而采用的安全措施,即使在许多看似安全的服务器配置中也能成功。CentOS使用Mysql,使用sqlite开发服务器,生产环境替换成Mysql。如果你的云服务器系统是CentOS,恭喜你中奖了,你有更多的机会学习(zhua)和学习(kuang)。这是安装命令:&sudocd/usr/local/src/&sudowgethttp://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm&sudorpm-ivhmysql57-community--release-el7-8.noarch.rpm&sudoyum-yinstallmysql-server我用&符号表示linux命令行的提示符,注意不要输入。然后更改配置,sudovi/etc/my.cnf,修改下面这块。#删除前导#以设置主要对报告服务器有用的选项。#对于事务和快速SELECT,服务器默认值更快。#根据需要调整大小,通过实验找到最佳值。#join_buffer_size=128M#sort_buffer_size=2M_2read_r=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockserver_id=1expire_logs_days=3OK,然后sudoservicemysqldrestart重启,使用mysql-uroot-p即可使用它(难怪),在Debian系统中如果使用apt安装MySQL,同学们会发现为什么安装时没有让我设置密码。是的,安装后第一次登录密码是随机的。。。随机输入一个密码,报错,然后**grep"password"/var/log/mysqld.log**输出密码,用这个随机密码登录,然后按照以下步骤操作:mysql>alteruser'root'@'localhost'identifiedby'yournewpassword';QueryOK,0rowsaffected(0.00sec)mysql>flushprivileges;QueryOK,0rowsaffected(0.00sec)mysql>showdatabases;+--------------------+|数据库|+--------------------+|信息模式||数据库||性能模式||sys|+------------------+4行集合(0.00秒)mysql>createdatabaseMyBlogcharactersetutf8;QueryOK,1rowaffected(0.00sec)mysql>showdatabases;+------------------+|数据库|+------------------+|信息模式||我的博客||数据库||性能模式||sys|+------------------+5rowsinset(0.00sec)mysql>exitBye重置密码,并创建一个同名的新表PyMysql我的Django项目。这是一个很奇怪的bug,至今没找到原因。我只能分别在Windows10、KaliLinux2019、CentOS7.3、Ubuntu16.04、Manjaro18.1.0上用pip3安装pymysql0.9.3版本。这样你的Django项目一运行就会报错。目前我找到了两个解决办法:回去用Django2.1版本找到你的django/db/backends/mysql/base.py文件,把里面关于版本错误的两行注释掉。#ifversion<(1,3,13):#raiseImproperlyConfigured('mysqlclient1.3.13ornewerisrequired;youhave%s.'%Database.__version__)没有仔细看报错信息,突然发现那个Python还有一个mysqlclient库,怪不得我查到的pymysql最新版本是0.9.3……用这个库也是可以的。扫码关注:
