共计 7332 个字符,预计需要花费 19 分钟才能阅读完成。
[toc]
码好 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
PIP 源更新参考链接
YUM 源更新参考链接
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 上传到根目录下:
http://repo.mysql.com/yum/mys…
复制下面链接通过浏览器下载,速度更快。
# 装置 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 编写代码不便。
1) 关上 pycharm,点击 Tools->Deployment->Configuration
2) 创立新的服务名,参考如下配置:
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,
成果如下:
如果喜爱的我的文章,欢送关注我的公众号:点滴技术,扫码关注,不定期分享