1. 程式人生 > >Django安裝與簡單配置(1)

Django安裝與簡單配置(1)

[toc] --- 碼好python的每一篇文章. --- 大家好!又有一段時間沒更新文章了,沒錯,是真的忙了。想要寫一篇文章,確實要花幾天時間的功夫,因為要保障文章的質量。 後面的文章我會通過寫些基礎理論和實戰文章,畢竟幹技術的,光看理論確實會沒那麼多耐心,總之,我會穿插一些,保證各位看官滿意為止。 # 1. 環境準備 ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091847382-247846284.png) | 序號 | IP地址 | 作業系統 | 安裝軟體 | 備註 | | :--: | ------------- | --------------- | ------------------- | ---------------------------------- | | 1 | 192.168.8.130 | CentOS 7.6.1810 | python3.6+django2.2 | 都執行在虛擬環境 | | 2 | 192.168.8.131 | CentOS 7.6.1810 | mysql | mysql資料 | | 3 | 192.168.8.1 | windows 10 | PyCharm Pro | 專業版能夠使用與centos遠端同步配置 | - CentOS7安裝環境,請谷歌 或百度查詢安裝文件,該步驟略。 - python環境安裝 [pyenv虛擬環境管理python多版本和軟體庫](https://mp.weixin.qq.com/s?__biz=MzU1NDYwNDYzMg==&mid=2247484154&idx=1&sn=5d8f52dcc02b5bdc35734d527720388c&chksm=fbe043cdcc97cadb538af4b4e30397a2c6ca0d395176e37b5b4d5aa4276e067167c1664631f3&token=537192343&lang=zh_CN#rd) 請參考此文。 如何更新`pip`源步驟: ```shell [root@localhost ~]# mkdir .pip [root@localhost ~]# cd .pip/ [root@localhost .pip]# touch pip.conf [root@localhost .pip]# vim pip.conf [global] index-url = https://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com # 新增或修改後,記得儲存。 ``` 如何更新`YUM`源步驟: ```shell # 安裝wget,有則忽略,跳過 [root@localhost ~]# yum install wget -y # 備份yum源 [root@localhost python]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# mkdir repo_bak [root@localhost yum.repos.d]# mv *.repo repo_bak/ # 下載新的repo [root@localhost yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo # 清除系統yum快取並生成新的yum快取 [root@localhost yum.repos.d]# yum clean all [root@localhost yum.repos.d]# yum makecache # 安裝EPEL(Extra Packages for Enterprise Linux )源 [root@localhost yum.repos.d]# yum install -y epel-release # 再次清除系統yum快取並生成新的yum快取 [root@localhost yum.repos.d]# yum clean all [root@localhost yum.repos.d]# yum makecache # 檢視系統可用的yum源和所有的yum源 [root@localhost yum.repos.d]# yum repolist enabled ``` [PIP源更新參考連結](https://developer.aliyun.com/mirror/pypi) [YUM源更新參考連結](https://developer.aliyun.com/mirror/centos) # 2. 開始安裝 ## 2.1 安裝Django *說明:* 此臺CentOS IP地址是 192.168.8.130(通過NAT對映,可以上網際網路) ```shell # 安裝django2.2版本 (py369) [python@localhost Python]$ pip install django==2.2 # 檢視已安裝的版本資訊 (py369) [python@localhost Python]$ python -m django --version 2.2 # 安裝mysql拓展 (py369) [python@localhost Python]$ pip install mysqlclient ``` ## 2.2 安裝 Mysql資料庫 *說明:* 此臺CentOS IP地址是 192.168.8.131(通過NAT對映,可以上網際網路) - 安裝與啟動 提前下載如下安裝包,通過winscp上傳到根目錄下: http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql-community-server-5.7.31-1.el7.x86_64.rpm 複製上面連結通過瀏覽器下載,速度更快。 ```shell # 安裝mysql及拓展 [root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm [root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm [root@localhost ~]# yum -y install mysql-community-server-5.7.31-1.el7.x86_64.rpm # 啟動mysql服務 [root@localhost ~]# systemctl start mysqld.service # 檢視mysql服務狀態 [root@localhost ~]# systemctl status mysqld.service ...此處省略字元 # active 就表示正常在運行了 Active: active (running) since Tue 2020-07-21 10:14:23 CST; 2s ago ...此處省略字元 ``` - 修改密碼及建立資料庫 ```shell # 查詢密碼,uQjeSi?N(2zH,這個就是預設密碼 [root@localhost ~]# grep "password" /var/log/mysqld.log 2020-07-21T20:48:28.965616Z 1 [Note] A temporary password is generated for root@localhost: uQjeSi?N(2zH # 用預設密碼登陸資料庫 [root@localhost ~]# mysql -uroot -p Enter password:uQjeSi?N(2zH # 輸入密碼 # 修改密碼 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'DevOps@2020'; Query OK, 0 rows affected (0.01 sec) # 授權訪問資料庫 mysql> grant all on *.* to 'root'@'%' identified by 'DevOps@2020'; Query OK, 0 rows affected, 1 warning (0.00 sec) # 重新整理許可權 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) # 建立新的資料庫 mysql> CREATE DATABASE IF NOT EXISTS devops default charset utf8 COLLATE utf8_general_ci; Query OK, 1 row affected (0.00 sec) # 檢視已建立的資料庫 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | devops | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) # 退出資料庫,修改配置檔案,結果如下所示: [root@localhost ~]# cat /etc/my.cnf |grep -v ^#|grep -v ^$ [client] default-character-set = utf8 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid character-set-server = utf8 collation-server = utf8_general_ci # 重啟資料庫 [root@localhost ~]# service mysqld restart ``` - 資料庫連線驗證正常: windows 10下安裝mysql拓展並驗證連線資料庫: ```python C:\>pip install mysqlclient ``` ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091847569-749145291.gif) *備註:* 我是通過pycharm匯入模組pymysql進行測試。 # 3. 開始配置 ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091847841-1822854427.jpg) 各位先簡單意淫下這種圖,應該有個初步的認識。 - 當一位屌絲開啟瀏覽器訪問某頁面的時候,輸入http://www.baidu.com,然後回車; - django後臺urls就會匹配到連結,可以把urls看作是http連結,專業叫做路由; *說明*:不是我們攻城獅理解的路由協議哈。 - urls匹配到了就會在View檢視查詢程式碼,然後做出響應; *說明*:view就是我們要寫的python程式碼 - template簡單理解就是html頁面模板; - Model簡單理解資料庫的一張表; ## 3.1 Django簡單配置 ### 3.1.1 建立一個工程(project)為devops: ```python # 先安裝個tree軟體包 [python@localhost ~]$ sudo yum install tree # 建立一個新的工程project (py369) [python@localhost Python]$ django-admin startproject devops (py369) [python@localhost Python]$ tree devops devops ├── devops │   ├── __init__.py │   ├── __pycache__ │   │   ├── __init__.cpython-36.pyc │   │   ├── settings.cpython-36.pyc │   │   ├── urls.cpython-36.pyc │   │   └── wsgi.cpython-36.pyc │   ├── settings.py │   ├── urls.py │   └── wsgi.py └── manage.py ``` ### 3.1.2 通過PyCharm遠端同步伺服器程式碼 *說明:* pycharm將django專案下載到window電腦上進行編輯,然後再實時同步到CentOS上,pycharm編寫程式碼方便。 1) 開啟pycharm,點選Tools->Deployment->Configuration ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091848131-1839010358.png) 2) 建立新的服務名,參考如下配置: ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091848605-1193109324.png) 3)下載遠端django的project: ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091848927-635922886.png) 4)修改自動同步配置,Tools->Deployment->Options ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091849175-730830418.png) ### 3.1.3 在pycharm上直接修改django的配置檔案: 1)devops->devops->settings.py: ```python # 允許所有主機訪問django,星號表示所有主機 ALLOWED_HOSTS = ['*'] # 增加資料庫資訊 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'devops', 'HOST':'192.168.8.131', 'USER':'root', 'PASSWORD':'root@123', 'PORT':3306, } } #修改語言編碼和時區 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' ``` 2) 改完配置後,會自動同步到遠端django那裡。 摘取log部分: `2020/3/27 23:07] Automatic upload completed in 33 ms: 1 file transferred (103.6 kbit/s)` ### 3.1.4 啟動django服務 1)通過命令啟動:`python manage.py runserver 0.0.0.0:8888` ```python (py369) [python@localhost devops]$ python manage.py runserver 0.0.0.0:8888 Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). March 27, 2020 - 23:45:14 Django version 2.2, using settings 'devops.settings' Starting development server at http://0.0.0.0:8888/ Quit the server with CONTROL-C. ``` 2)開啟瀏覽器,輸入`http://192.168.8.130:8888`: ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091849401-961432312.png) 3)還可以進入後臺許可權管理系統,輸入`http://192.168.8.130:8888/admin` ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091849552-797397849.png) 此時,還沒有建立超級管理員使用者和密碼,不能夠登陸。 4)接下來啟動自帶的APP admin ```shell (py369) [python@localhost devops]$ python manage.py migrate ``` *備註:*此命令會把系統自帶的admin app資料庫寫入到mysql中。 5)登陸資料庫mariadb,看是否正常寫入 ```shell [root@localhost ~]# mysql -u root -pDevOps@2020 # 檢視資料庫 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | ddjsdb | | devops | | devops01 | | mysql | | performance_schema | | sys | +--------------------+ 7 rows in set (0.73 sec) # 切換到資料庫devops中 mysql> use devops # 檢視資料庫devops中的表,已經成功寫入了 mysql> show tables; +----------------------------+ | Tables_in_devops | +----------------------------+ | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | django_admin_log | | django_content_type | | django_migrations | | django_session | +----------------------------+ 10 rows in set (0.00 sec) ``` 6)建立一個管理員使用者 ```shell (py369) [python@localhost devops]$ python manage.py createcachetable # 依次輸入使用者名稱、郵箱地址、密碼 ``` 7)成功登陸後臺管理系統 ```shell # 再次啟動django (py369) [python@localhost devops]$ python manage.py runserver 0.0.0.0:8888 ``` ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091849738-2017307462.png) ## 3.2 建立新的APP ### 3.2.1 建立新的app hello ```shell (py369) [python@localhost devops]$ python manage.py startapp hello # 手工建立urls.py 檔案 (py369) [python@localhost devops]$ touch hello/urls.py # 檢視app hello 樹結構 (py369) [python@localhost devops]$ tree hello hello ├── admin.py ├── apps.py ├── __init__.py ├── migrations │   └── __init__.py ├── models.py ├── tests.py ├── urls.py └── views.py ``` ### 3.2.2 pycharm同步下載遠端hello目錄 *說明*:方法同章節3.1.2一樣。 ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091849959-823810028.png) ### 3.2.3 修改django配置指令碼 1) 修改devops->devops->setting.py配置 ```python INSTALLED_APPS = [ ...此處已省略 'hello.apps.HelloConfig', # 方式一:新增hello app資訊 'hello', # 方式二:新增hello app資訊 ] ``` 2) 修改devops->hello->views.py配置 ```python from django.shortcuts import render from django.http import HttpResponse def index(request): return HttpResponse('

hello django

') ``` 3) 修改devops->hello->urls.py配置 ```python from django.urls import path from . import views urlpatterns = [ path('hello/', views.index, name='index'), ] ``` 4)最後修改devops->devops->urls.py配置 *說明:* 此urls.py為根路由入口(即總入口)。 第一種靜態路由urls演示方法: ```python from hello import views urlpatterns = [ path('admin/', admin.site.urls), # 預設 path('hello/', views.index), # 新增 ] ``` 登陸瀏覽器,輸入`http://192.168.8.130:8888/hello/,`效果如下: ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091850122-1239994612.png) 第二種靜態路由urls演示方法: ```python from django.urls import path,include # 新增,匯入include模組 urlpatterns = [ path('admin/', admin.site.urls), # 預設 path('hello/', include('hello.urls')), # 新增 ] ``` 登陸瀏覽器,輸入`http://192.168.8.130:8888/hello/hello,`效果如下: ![](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091850287-1180382775.png) ---- 如果喜歡的我的文章,歡迎關注我的公眾號:點滴技術,掃碼關注,不定期分享 ![公眾號:點滴技術](https://img2020.cnblogs.com/other/1813756/202007/1813756-20200723091850554-148856