配置python虚拟环境,参考。
配置scss。
Django版本:
Django 3.1.7
mysql版本:
select version();
=>10.6.8-MariaDB
创建项目:
django-admin startproject NewProject
定义模板路径,并在一级目录下创建Templates文件夹,其中builtins的作用在于内置static标签,原因参考
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [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',
],
'builtins':['django.templatetags.static']
},
},
]
加入网站500的提醒邮件。
数据库创建专门的网站链接用户:
grant all privileges on database.* to zhangxiaofei@'%' identified by "pwd" with grant option;
flush privileges; # 刷新权限!这句话和mysql的分号一样,一定不要少
创建新的数据库。
定义数据库链接:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'database',
'USER': '_web',
'PASSWORD': 'root',
'HOST': 'localhost',
'PORT': '3306',
}
}
时区相关:
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
# USE_TZ = True
USE_TZ = False
#去掉结尾自动添加的斜杠
APPEND_SLASH=False
开发时,打开数据库日志记录,方便随时优化SQL语句,参考文章:
set global general_log=1;
# 查找日志所在路径
show global variables like "%datadir%";
# show variables like "%char%";
根据已有的表生成模型,创建新的app,建立models文件:
python manage.py inspectdb > log
项目上传至服务器,生成迁移语句,建表
python manage.py makemigrations
python manage.py migrate
配置url文件。
添加后台:
# urls.py
urlpatterns = [
path('admin', admin.site.urls),
]
# admin.py
from django.contrib import admin
from .models import yourmodel
admin.site.site_header = 'header'
admin.site.site_title = 'title'
class yourmodelAdmin(admin.ModelAdmin):
'''分页:每页20条'''
list_per_page = 20
'''过滤选项'''
list_filter = ('display', 'state', )
list_display =('vacancy_id','display')
search_fields = ['=vacancy_id']
admin.site.register(yourmodel,yourmodelAdmin)
# 创建superuser
python manage.py createsuperuser
windows电脑上配置mysql、logstash、elasticsearch数据同步。参考文章
# logstash配置文件
input {
jdbc {
#根据type的不同输出到es的不同索引
type => "type_table"
jdbc_driver_library => "D:/mysql-connector-java-8.0.23.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/your_database"
jdbc_user => "root"
jdbc_password => "root"
jdbc_paging_enabled => true
jdbc_page_size => "10000"
tracking_column => "unix_ts_in_secs"
record_last_run => "true"
last_run_metadata_path => "D:/.logstash_jdbc_last_run"
clean_run => "false"
use_column_value => true
tracking_column_type => "numeric"
schedule => "*/10 * * * * *"
statement => "SELECT *, UNIX_TIMESTAMP(up_date) AS unix_ts_in_secs FROM your_table WHERE (UNIX_TIMESTAMP(up_date) > :sql_last_value AND up_date < NOW()) ORDER BY up_date ASC"
}
}
filter {
mutate {
copy => { "id" => "[@metadata][_id]"}
remove_field => ["unix_ts_in_secs"]
}
}
output {
stdout {
codec => "rubydebug"
# JSON格式输出
#codec => json_lines
}
if [type] == "type_table" {
elasticsearch {
index => "your_es_index"
document_id => "aus-%{[@metadata][_id]}"
}
}
}
建立es索引。
换表,重启logstash文件,将数据库数据同步至elasticsearch。
启动项目查看
python3 manage.py runserver 0.0.0.0:8000
没有问题后创建 uwsgi.ini文件。
创建supervisord守护进程。
CF中添加子域名A记录。
一台云服务器上配置多个项目,参考测试-nginx挂载两个域名。由于我是多个子域名挂在CF上,所以干脆使用如下命令申请了一个lets encrypted的泛域名证书*.domain.com
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /root/MyScripts/.secrets/cloudflare.ini \
-d *.domain.com \
配置nginx配置文件,在conf.d文件夹下新建一个second.conf文件
upstream DEMOsite {
# 设定目录自动创建,即ngnix和uwsgi通讯的sock位置
# 一定要和demo1.ini中定义的socket一致
server unix:///srv/XX/YY.sock;
}
server {
listen 80;
server_name DOMAIN.com;
rewrite ^(.*) https://$host$1 permanent;
}
server {
listen 443 ssl;
server_name DOMAIN.com;
charset utf-8;
access_log logs/DOMAIN.access.log main;
ssl_certificate /etc/letsencrypt/live/DOMAIN.com-0001/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/DOMAIN.com-0001/privkey.pem;
ssl_protocols TLSv1.3;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_session_tickets off;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 静态文件访问的url
location /static {
# 静态文件地址
alias /srv/StaticFile;
expires 1h;
}
location /media {
alias /srv/media;
}
location / {
# 这个uwsgi_pass对应的参数一定要和upstream定义的一样
uwsgi_pass DEMOsite;
# uwsgi_params文件地址
include /usr/local/nginx/conf/uwsgi_params;
}
location /robots.txt{
alias /srv/robots/robots.txt;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
python manage.py collectstatic 命令,收集静态文件(主要是admin后台的样式)。
定时切割nginx脚本。
备注:
# windows配置部署es+logstash同步mysql数据库
https://www.cnblogs.com/mrzhao520/p/14119031.html