Django實戰2-自動化運維之配置管理-02:更換資料庫和數據遷移

上節搭建了虛擬機環境,部署了遠程調試模式,所以本節將把資料庫從sqlite3換到mysql,並把許可權管理的基礎數據導入mysql。

1 安裝資料庫

1.1 安裝Mysql

使用CRT連接sandboxMP虛擬機系統,更新yum源文件,並安裝mysql,操作過程如下:

# 1.安裝Mysql
[root@sandboxmp ~]$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
[root@sandboxmp ~]$ rpm -ivh mysql-community-release-el7-5.noarch.rpm
[root@sandboxmp ~]$ yum -y update
[root@sandboxmp ~]$ yum install mysql-server

# 2.修改配置文/etc/my.cnf,在[mysql]標籤下添加後面三行內容,保存退出vim
[root@sandboxmp ~]$ vim /etc/my.cnf
[mysqld]
collation-server = utf8_unicode_ci
character_set_server=utf8
init_connect=SET NAMES utf8

# 3.啟動mysql,設置開機啟動,為root用戶設置密碼
[root@sandboxmp ~]$ systemctl start mysqld
[root@sandboxmp ~]$ systemctl enable mysqld
[root@sandboxmp ~]$ mysql

mysql> set password for root@localhost=password(1234@abcd.com);
mysql> exit

# 4.再次連接Mysql會提示要使用密碼,連接方式如下,回車,根據提示輸入密碼
[root@sandboxmp ~]$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.

mysql>

# 5.創建資料庫,添加用戶和訪問授權
mysql> CREATE DATABASE sandboxMP;
mysql> GRANT ALL PRIVILEGES ON sandboxMP.* TO ddadmin@% IDENTIFIED BY 1234@abcd.com;
mysql> GRANT ALL PRIVILEGES ON sandboxMP.* TO ddadmin@localhost IDENTIFIED BY 1234@abcd.com;

==備註:項目中是使用root用戶登錄的Linux系統,系統默認提示符是#號結尾,例如:[root@sandboxmp ~]#。因在文檔代碼段中,#被識別成了注釋信息,所以在代碼段中,涉及Linux系統操作的命令,我會把提示符寫成$ 。==

1.2 設置資料庫連接

1.2.1 從SQLite3中導出許可權管理的相關數據

使用CRT連接sandboxMP虛擬機系統,執行如下操作:

[root@sandboxmp ~]# workon sandboxMP
(sandboxMP) [root@sandboxmp ~]$ cd /root/project_file/
(sandboxMP) [root@sandboxmp project_file]$ python manage.py dumpdata system > system_data.json
(sandboxMP) [root@sandboxmp project_file]$ ls -l

知識點介紹: django提供了dumpdata方法可以用來簡單執行數據導出,命令格式:python manage.py dumpdata [app_name] 後面跟的是app 的名字。

1.2.2 設置資料庫連接

使用pycharm打開本地項目,修改sandboxMP/sandboxMP/settings.py配置文件中資料庫配置:

DATABASES = {
default: {
ENGINE: django.db.backends.mysql,
NAME: sandboxMP,
HOST: 127.0.0.1,
USER: ddadmin,
PASSWORD: 1234@abcd.com,
PORT: 3306
}
}

1.2.3將改動同步到遠程伺服器

  • Pycharm遠程部署支持自動上傳,只需要在 Tools → Deployment 下選中Automatic Upload,完成配置後你在Pycharm中對項目做的修改都會自動上傳到遠程伺服器。
  • 也可以採用手動上傳,選擇項目根目錄上傳整個項目,選擇項目文件上傳單個文件。例如在Pycharm左側項目列表中找到剛剛修改的settings.py文件,右鍵settings.py,選擇Upload to SMP_Remote_Server,將修改後的文件上傳到伺服器。

1.2.4 設置保存項目後自動上傳

在項目中修改了多個文件後採用手動一個一個上傳還是挺麻煩的,上傳整個項目又沒有必要,但是又不想自動同步的頻率太高,這時候就可以設置成按ctrl+s鍵 後自動上傳修改的文件。

選擇Tools → Deployment → Automatic Upload,啟用自動上傳功能。

選擇Tools → Deployment → Options...,配置自動上傳模式為:On explicit save(Ctrl+S)

完成以上配置,在本地修改完代碼後,按下Ctrl+S Pycharm會自動將代碼上傳到遠程伺服器。

==注意:因為項目是在遠程伺服器上部署運行,所以當修改項目代碼後,想要查看運行效果,記得按下Ctrl+S 保存代碼並自動上傳到遠程伺服器,如果pycharm中項目是運行狀態,當代碼上傳成功後,pycharm會自動重啟項目,運行更新後的代碼。==

1.2.5 將數據導入mysql

回到CRT命令終端(保留了上面操作的虛擬環境和目錄,如果你已經退出了,請重新進入用虛擬環境和進入項目目錄)

# 1.防止安裝mysqlclient報錯:EnvironmentError: mysql_config not found,先安裝下面兩個包
(sandboxMP) [root@sandboxmp project_file]$ yum -y install mysql-devel libmysqlclient-dev

# 2.使用mysql資料庫,需要安裝mysqlclient
(sandboxMP) [root@sandboxmp project_file]$ pip install mysqlclient

# 3.生成數據表,導入資料庫
(sandboxMP) [root@sandboxmp project_file]$ python manage.py migrate
(sandboxMP) [root@sandboxmp project_file]$ python manage.py loaddata system_data.json

完成以上操作可以使用Navicat連接我們的mysql資料庫(172.16.3.100)查看有沒有數據信息,或者運行項目,測試是否可以登陸系統和查看系統許可權數據。

2.安裝redis

項目中會使用celery來做分散式任務隊列,用來處理比較耗時的操作,例如發送郵件,資產掃描等操作。我們使用redis來做中間人,用來存儲任務隊列和接受返回值。

使用CRT連接sandboxMP虛擬機系統,執行下面命令安裝redis:

# 1.安裝擴展源(前面我們已經安裝過擴展源epel-release)和redise
[root@sandboxmp ~]$ yum install epel-release
[root@sandboxmp ~]$ yum install redis

# 2.修改redis配置文件找到bind去掉前面的注釋符號,ip改為0.0.0.0,保存退出
[root@sandboxmp ~]$ vim /etc/redis.conf
bind 0.0.0.0

# 3.啟動redise和設置開機啟動
[root@sandboxmp ~]$ systemctl start redis
[root@sandboxmp ~]$ systemctl enable redis

redis基礎入門參考資料:

http://www.runoob.com/redis/redis-tutorial.html

3.安裝mongodb

項目中mongodb用來存儲日誌信息,安裝方法如下:

使用CRT連接sandboxMP虛擬機系統,執行下面命令安裝mongodb:

# 1.配置yum源文件,添加mongo安裝源,保存退出
[root@sandboxmp ~]$ vim /etc/yum.repos.d/mongo.repo
[mongodb-org-3.4]
name=MongoDB 3.4 Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=0
enabled=1

# 2.安裝mongodb, 修改bindIp(把地址改成0.0.0.0後,保存退出)
[root@sandboxmp ~]$ yum install mongodb-org
[root@sandboxmp ~]$ vim /etc/mongod.conf
bindIp 0.0.0.0 # 修改bindIp

# 3.啟動mongodb,設置開始啟動
[root@sandboxmp ~]$ systemctl start mongod
[root@sandboxmp ~]$ systemctl enable mongod

關於mysql、redis、mongodb網上有好多入門教程,有興趣的朋友可以找來學習下。

最新最全文檔,請關注我的知識星球: t.zsxq.com/a6IqBMr (微信中打開鏈接)

本節文檔對應源碼版本: github.com/RobbieHan/sa

輕量級辦公管理系統項目開源地址:github.com/RobbieHan/gi

推薦閱讀:

TAG:Django(框架) | Python | DevOps |