這是我的第一個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.終於完成了,開心