这是我的第一个Demo级别的Django项目,仅用到Python3.7.0+Django2.2.2+Mysql5.7
首先安装阿里云的环境
1.阿里云安装Python 3.7.0
1.1安装编译环境
sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev
1.2下载安装包
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
说不出话,学生机9.5/月网速慢,可以windows下载完直接传过去,但是上传也只有100k/s,不说了
1.3解压
tar -xvzf Python-3.7.0.tgz
1.4 配置安装位置
进入python3.7.0目录,执行./configure --prefix=/usr/bin/python3.7
1.5编译及安装
sudo make && sudo make install
1.6设置python3.7.0版本为默认python
sudo rm /usr/bin/python
sudo ln -s /usr/bin/python3.7/bin/python3.7 /usr/bin/python
1.7验证 直接输入python
2.阿里云安装Django
2.1升级pip3
进入到/usr/bin/python3.7/bin需要升级一下pip3方可使用,使用如下命令进行升级。
sudo /usr/bin/python3.7/bin/pip3 install –upgrade pip
上面这条可能会报错,执行这条命令:pip install --upgrade pip
现在需要更改pip3配置
vim pip3
改下面圈起来的2个地方
输入pip -V ,显示是安装在python3.7下,成功。
如下图,就成功:
2.2接下来安装Django
sudo /usr/bin/python3.7/bin/pip3 install Django
使用python3.7测试一下,发现也是安装Django成功了。
3.阿里云安装Mysql
刚收到短信,就10元买了阿里的RDS,也就是云Mysql。但是以后续费有点贵,还是自己在服务器上装个,省钱。
3.1安装mysql命令
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
3.2.安装成功后可以通过下面的命令测试是否安装成功
sudo netstat -tap | grep mysql
3.3.现在已经启动mysql,进入mysql
mysql -uroot -p123456
出现以下错误
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解决方案:
①找到mysql的安装目录,我的是在/etc/mysql/mysql.conf.d ,该文件夹下有个mysqld.cnf文件,使用管理员权限编辑:sudo vim mysqld.cnf,然后在文件最后一行加入:skip-grant-tables ,然后保存退出(大概就是跳过验证的意思吧)
root@dev:/etc/mysql/mysql.conf.d# vim mysqld.cnf
在文件最后一行加入:skip-grant-tables
②要重启mysql服务
Service mysql restart
③
接下来用空密码进入mysql管理命令行,切换到mysql库,直接命令:mysql 回车即可进入mysql命令模式,然后就是修改下root密码(其他用户也一样,只是权限不一样),修改密码语句如下:
root@dev:/etc/mysql/mysql.conf.d# mysql
mysql> update mysql.user set authentication_string=password('密码') where user='root' and Host ='localhost';
Query OK, 1 row affected, 1 warning
然后刷选配置,使之立即生效:
mysql> flush privileges;
接着退出mysql命令行模式;
mysql> quit;
Bye
④下一步便是把刚才我们改的mysqld.cnf文件,把刚才加入的那一行注释或者删除:skip-grant-tables ,保存退出。
⑤然后就可以用mysql -u root -p 登录了。
3.4Window Navicat连接liunx Mysql
①默认安装的mysql没有外部访问权限,所以需要开启访问权限
grant [权限] on [数据库名].[表名] to ['用户名']@['web服务器的ip地址'] identified by ['密码']; "%" 表示所有 10.0.0.1这样格式的ip地址 10-0-0-1
root@dev:/etc/mysql/mysql.conf.d# mysql -uroot -proot
mysql>grant all on *.* to 'root'@'%' identified by '密码';
mysql> flush privileges;
②root@dev:/etc/mysql/mysql.conf.d# vim mysqld.cnf
将bind-address=127.0.0.1注释掉
特别注意:阿里云服务器开放3306端口! 通过添加安全组规则,开放3306端口
至此,环境搭建完毕。现在需要把windows的Django部署到linux。
4.部署
1.修改django项目一些配置setting.py
Debug改不改都可以,因为我们的项目是自己的,不怎么对外。
DEBUG是调试模式,开发推荐DEBUG=True,而项目上线必须DEBUG=Flase
ALLOWED_HOSTS=['*']必须改,*任何表示该机器的地址都可以访问当前项目
如果允许被其他机器访问的话,启动服务时,必须使用以下方式:
python manage.py runserver 0.0.0.0:端口号
2.生成依赖包
pip -r freeze > requirements.txt
3.将windows项目上传到linux
4.进入项目文件夹,安装依赖包
pip install -r requirements.txt
5.将windows的数据库的表导入到linux对应的数据库表上
我这里采用了navicat
6.修改mysql的错误
运行的时候会出现以下错误
是因为Mysql5.7版本不兼容问题
解决方案:
进入/usr/bin/python3.7/lib/python3.7/site-packages/django/db/backends/mysql目录
将python安装路径下的base.py的 if version 注释掉:
vim base.py
将python安装路径下的operations.py的146行的decode改为encode
vim operations.py
7.运行
进入项目中,
输入python manage.py runserver 0.0.0.0:端口号
我这里是端口号给了80,直接输入ip地址就可以访问。
5.终于完成了,开心