django项目
# 1、创建django项目
**进入项目路径**
```
d:
cd 毕业设计\django
````
**创建项目**
```
django-admin startproject confidential-containers
```
**进入app路径**
```
d:
cd 毕业设计\django\confidential_containers
```
**创建app(数据库)**
```
python manage.py startapp app
```
**在根目录下创建templates文件夹(存放html)**
::: hljs-center

:::
**在根目录下创建static文件夹(存放hcss、jpg等)**
::: hljs-center

:::
**在app目录下创建urls.py(存放路由)**
::: hljs-center

:::
**项目文件结构**
::: hljs-center

:::
**启动项目**
```
python manage.py runserver
```
# 2、修改配置文件
**加入新建的app**
```
#settings.py文件
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"app"
]
```
**添加mysql数据库**
```
#settings.py文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'projects',
'USER':'projects',
'PASSWORD':'Project123.',
'HOST':'localhost',
'PORT':'3306',
}
}
```
**安装mysqlclient**
```
#settings.py文件
pip install mysqlclient
```
**修改语言和时区**
```
#settings.py文件
LANGUAGE_CODE = "zh-hans"
TIME_ZONE = 'Asia/Shanghai'
```
**添加templates目录路径**
```
#settings.py文件
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [os.path.join(BASE_DIR, 'templates')],
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
],
},
},
]
```
**加入{% load static %}**
```
#html文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Inspire - Admin and Dashboard Template</title>
{% load static %}
<!-- Bootstrap CSS -->
<link rel="stylesheet" type="text/css" href="{% static 'assets/css/bootstrap.min.css' %}">
<!-- Fonts -->
<link rel="stylesheet" type="text/css" href="{% static 'assets/fonts/line-icons.css' %}">
<!--Morris Chart CSS -->
<link rel="stylesheet" href="{% static 'assets/plugins/morris/morris.css' %}">
<!-- Main Style -->
<link rel="stylesheet" type="text/css" href="{% static 'assets/css/main.css' %}">
<!-- Responsive Style -->
<link rel="stylesheet" type="text/css" href="{% static 'assets/css/responsive.css' %}">
```
**添加static路径(存放css、jpg等)**
```
#settings.py文件
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
```
**app内的views.py文件**
```
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the index.")
```
**app内的urls.py文件**
```
from django.urls import path
from . import views
from django.shortcuts import render, redirect
urlpatterns = [
path("", views.index),
]
或
def index(request):
context = {}
return render(request, "index.html", context)
```
**confidential_containers内的urls.py文件**
```
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path("", include("app.urls")),
#path("app/", include("app.urls")), 需要127.0.0.1:8000/app
path("admin/", admin.site.urls),
]
```
# 3、ssh连接虚拟机
**下载paramiko**
`pip install paramiko`
**app内的views.py中添加**
```python
def index(request):
host = '192.168.89.134'
port = 22
username = 'root'
password = '123456'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port, username, password)
command = """
kubectl get pod -A
"""
stdin, stdout, stderr = ssh.exec_command(command)
output_lines = stdout.readlines() #读行
output_split = [line.split() for line in output_lines] #按空格隔开
first = output_split[:1]
second = output_split[1:]
#output = ''.join(output_lines) # 将列表转换为字符串
# output = stdout.read().decode('utf-8')
error = stderr.read().decode('utf-8')
ssh.close()
context = {'first': first, 'second':second, 'error': error}
return render(request, "index.html", context)
```
# 4、Stream源
```
#CentOS-Stream-AppStream.repo
[appstream]
name=CentOS Stream $releasever - AppStream
#mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=AppStream&infra=$infra
baseurl=http://vault.centos.org/$contentdir/$stream/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
```
```
#CentOS-Stream-BaseOS.repo
[baseos]
name=CentOS Stream $releasever - BaseOS
#mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=BaseOS&infra=$infra
baseurl=http://vault.centos.org/$contentdir/$stream/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
```
```
#CentOS-Stream-Extras.repo
[extras]
name=CentOS Stream $releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=extras&infra=$infra
baseurl=http://vault.centos.org/$contentdir/$stream/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
```
```
#CentOS-Stream-Extras-common.repo
[extras-common]
name=CentOS Stream $releasever - Extras common packages
#mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=extras-extras-common
baseurl=http://vault.centos.org/$contentdir/$stream/extras/$basearch/extras-common/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras
```
**POD启动状态一直为ContainerCreating,提示cni0的IP与既有子网不同
报错信息**
使用 kubectl describe pods <pod-name> -n <namespace> 命令可看到提示信息
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox “745720ffb20646054a167560299b19bb9ae046fe6c677b5d26312b89a26554e1”: failed to set bridge addr: “cni0” already has an IP address different from 172.20.2.1/24
进入到对应计算节点,使用ip a命令确认cni0的IP信息,使用cat /run/flannel/subnet.env查看flannel网络插件分配的子网IP,发现两者确实不一致。
解决办法
删掉这个IP错误的网卡cni0, 之后flanneld自动重新创建。命令如下。
```
ifconfig cni0 down
ip link delete cni0
```
**压缩与解压缩**
```
zip -r archive.zip file1 file2 folder1
unzip archive.zip
```
**下载git-lfs并上传**
```
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bash
yum install git-lfs
cd coco
git lfs install
git lfs track "*.psd"
git add .gitattributes
git add file.psd
git commit -m "Add design file"
git push origin main
```