前几天阿里云搞活动,云服务器ECS活动,30元一个月,没禁住诱惑买了一年,那好吧,就把我之前练手做的Django项目部署一下传送门 ,这个项目是什么就不细说了,本文主要说的是部署到阿里云
先说下我的环境,免得有的哥们对照我的这个做出来,发现不能用:
系统ubuntu16.04、python2.7.12、django1.10.6、mysql5.7、apache2.4.18
买了阿里云回来,发现里面有python2.7,那正好,我的项目就是2.7版本,不需要改了
然后就是按照网上教程的套路pip install Django、sudo apt-get install Apache2等等,但是发现不行,我真的不知道是为啥,连apache登录的记录都没有,那么如果你正在部署而且与我的环境一样,请按照我下面的步骤,不敢保证百分百成功,但是至少可以借鉴:
1.安装django1.10.6 pip install Django==1.10.6
2.安装mysql sudo apt-get install mysql-server mysql-client ,因为我的系统版本是16.04,所以下载好之后就是5.7的
3.因为你是部署Django,所以你的django项目里settings.py肯定连接的你的数据库,那么请你这时候配置mysql的时候按照原来的数据配置,免得出现未知错误,主要就是数据库的登录密码和新建数据库【这个不会的话就自己百度】
4.数据库建好了后,如果你原先的数据库使用的字符集是utf-8,就需要修改字符集,否则传数据的时候有异常,字符集修改,命令 sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf,【vi 指令,不会的话,也是百度学习】,在[mysqld]域下加上:character-set-server=utf8,再重新启动 MySQL 服务即可:sudo systemctl restart mysql
5.如果你的原工程使用过数据库,并且在moudle中没有删除0001_initial.py,那就到对应的目录下用rm -fr 0001_initial.py的撒谎年初该文件,之后到django的目录下用 python manage.py makemigrations 和 python manage.py migrate 把数据表新建上去
6.这时候就可以查看你的django工程是否已经安装好了,python manage.py runserver 0.0.0.0:8000,正确运行就说明django是没有问题的,那么下面就开始部署到apache2中,但是如果出现python未连接mysql的话,就需要安装pymysql , sudo pip install pymysql,安装好在启动一次,测试是否成功,如果没有的话,请检查以上步骤,你是否正确
7.先sudo apt-get install httpie装一个测试网络的工具吧,下面会用的
8.安装apache2, sudo apt-get install apache2,安装好之后注意了,不要按照网上说的在 /etc/apache2/sites-available目录下vi xxx.conf,然后重启apache2服务器,这样不行,可能是我的方法问题,但是我真的没打开过网页
9.我是这么做的,我在/etc/apache2/目录下,打开apache2.conf按照下图的形式添加【红色框框是我自己新加的内容】,我的django工程是放在/var/www/下的
10.然后有人会说,要配置wsgi.py,真的不要配置,就这样就好了,重启apache2 service apache2 restart,之前不是安装过httpie么,现在就用上了,http 127.0.0.1:8000测试你的工程通了没,然后在测试公网IP,如果是和我一样的阿里云还需要配置安全组【这个在阿里云网站配置,在你的控制台左下方有个 安全组,然后在入方向添加安全组规则就好了】
说下service apache2 restart会遇到问题,有时候会遇到job for apache2.server faild because the control process exited with error code ....这个很有可能是你的配置文件写错了,请自己仔细检查一下
大概就这么些内容,如果你在部署中有遇到问题,也欢迎留言