碼好python的每一篇文章.
大家好!又有一段時間沒更新文章了,沒錯,是真的忙了。想要寫一篇文章,確實要花幾天時間的功夫,因為要保障文章的質量。
後面的文章我會通過寫些基礎理論和實戰文章,畢竟幹技術的,光看理論確實會沒那麼多耐心,總之,我會穿插一些,保證各位看官滿意為止。
1. 環境準備
序號 | 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多版本和軟體庫 請參考此文。
如何更新
pip
源步驟:[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
源步驟:
# 安裝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
2. 開始安裝
2.1 安裝Django
說明: 此臺CentOS IP地址是 192.168.8.130(通過NAT對映,可以上網際網路)
# 安裝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上傳到根目錄下:
複製上面連結通過瀏覽器下載,速度更快。
# 安裝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
...此處省略字元
- 修改密碼及建立資料庫
# 查詢密碼,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擴充並驗證連線資料庫:
C:\>pip install mysqlclient
備註: 我是通過pycharm匯入模組pymysql進行測試。
3. 開始配置
各位先簡單意淫下這種圖,應該有個初步的認識。
-
當一位屌絲開啟瀏覽器訪問某頁面的時候,輸入http://www.baidu.com,然後回車;
-
django後臺urls就會匹配到連結,可以把urls看作是http連結,專業叫做路由;
說明:不是我們攻城獅理解的路由協議哈。
-
urls匹配到了就會在View檢視查詢程式碼,然後做出響應;
說明:view就是我們要寫的python程式碼
-
template簡單理解就是html頁面模板;
-
Model簡單理解資料庫的一張表;
3.1 Django簡單配置
3.1.1 建立一個工程(project)為devops:
# 先安裝個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編寫程式碼方便。
- 開啟pycharm,點選Tools->Deployment->Configuration
- 建立新的服務名,參考如下配置:
3)下載遠端django的project:
4)修改自動同步配置,Tools->Deployment->Options
3.1.3 在pycharm上直接修改django的配置檔案:
1)devops->devops->settings.py:
# 允許所有主機訪問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
(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
:
3)還可以進入後臺許可權管理系統,輸入http://192.168.8.130:8888/admin
此時,還沒有建立超級管理員使用者和密碼,不能夠登陸。
4)接下來啟動自帶的APP admin
(py369) [python@localhost devops]$ python manage.py migrate
備註:此命令會把系統自帶的admin app資料庫寫入到mysql中。
5)登陸資料庫mariadb,看是否正常寫入
[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)建立一個管理員使用者
(py369) [python@localhost devops]$ python manage.py createcachetable
# 依次輸入使用者名稱、郵箱地址、密碼
7)成功登陸後臺管理系統
# 再次啟動django
(py369) [python@localhost devops]$ python manage.py runserver 0.0.0.0:8888
3.2 建立新的APP
3.2.1 建立新的app hello
(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一樣。
3.2.3 修改django配置指令碼
1) 修改devops->devops->setting.py配置
INSTALLED_APPS = [
...此處已省略
'hello.apps.HelloConfig', # 方式一:新增hello app資訊
'hello', # 方式二:新增hello app資訊
]
2) 修改devops->hello->views.py配置
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse('<p>hello django</p>')
3) 修改devops->hello->urls.py配置
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.index, name='index'),
]
4)最後修改devops->devops->urls.py配置
說明: 此urls.py為根路由入口(即總入口)。
第一種靜態路由urls演示方法:
from hello import views
urlpatterns = [
path('admin/', admin.site.urls), # 預設
path('hello/', views.index), # 新增
]
登陸瀏覽器,輸入http://192.168.8.130:8888/hello/,
效果如下:
第二種靜態路由urls演示方法:
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,
效果如下:
如果喜歡的我的文章,歡迎關注我的公眾號:點滴技術,掃碼關注,不定期分享