數據庫管理平臺archery搭建

#######################################

archery是一款Django+Python+Bootstrap的Web應用

搭建archery並不是一件簡單的事,要想搭建一個高可用,需要做更多

MySQL

Redis

Golang

Python

keepalived

 

 

 

 

root@a8-cloud-apple-db08 Archery]# virtualenv-3.9.10 venv --python=python3-3.9.10
created virtual environment CPython3.9.10.final.0-64 in 816ms creator CPython3Posix(dest=/root/scripts/Archery/venv, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/root/.local/share/virtualenv)
added seed packages: pip==23.0.1, setuptools==67.4.0, wheel==0.38.4 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

 

 

(venv) [root@a8-cloud-apple-db08 Archery]# pip3-3.9.10 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

 

 

 

 

 

 

libmysqlclient.so.20找不到的問題:

 

 

 

 

 

(venv) [root@a8-cloud-apple-db08 Archery]# find / -name "libmysqlclient.so.20"
/home/work/mysql_3306/lib/libmysqlclient.so.20
/root/scripts/mysql-5.7.40-linux-glibc2.12-x86_64/lib/libmysqlclient.so.20
(venv) [root@a8-cloud-apple-db08 Archery]# ln -s /home/work/mysql_3306/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20

 

 

 

 執行./venv/bin/python3-3.9.10 manage.py migrate,說明需要先在mysql中創建archery庫即可

(venv) [root@a8-cloud-apple-db08 Archery]# ./venv/bin/python3-3.9.10  manage.py migrate
import local settings failed, ignored
Traceback (most recent call last):
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
    self.connect()
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 263, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 247, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect
    return Connection(*args, **kwargs)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__
    super().__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (1049, "Unknown database 'archery'")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/scripts/Archery/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/core/management/__init__.py", line 440, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/core/management/base.py", line 402, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/core/management/base.py", line 448, in execute
    output = self.handle(*args, **options)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/core/management/base.py", line 96, in wrapped
    res = handle_func(*args, **kwargs)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/core/management/commands/migrate.py", line 97, in handle
    self.check(databases=[database])
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/core/management/base.py", line 475, in check
    all_issues = checks.run_checks(
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/core/checks/registry.py", line 88, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/core/checks/database.py", line 13, in check_database_backends
    issues.extend(conn.validation.check(**kwargs))
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/mysql/validation.py", line 9, in check
    issues.extend(self._check_sql_mode(**kwargs))
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/mysql/validation.py", line 14, in _check_sql_mode
    self.connection.sql_mode & {"STRICT_TRANS_TABLES", "STRICT_ALL_TABLES"}
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/utils/functional.py", line 57, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 443, in sql_mode
    sql_mode = self.mysql_server_data["sql_mode"]
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/utils/functional.py", line 57, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 399, in mysql_server_data
    with self.temporary_connection() as cursor:
  File "/usr/local/python-3.9.10/lib/python3.9/contextlib.py", line 119, in __enter__
    return next(self.gen)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 694, in temporary_connection
    with self.cursor() as cursor:
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 323, in cursor
    return self._cursor()
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 299, in _cursor
    self.ensure_connection()
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
    self.connect()
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
    self.connect()
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 263, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 247, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect
    return Connection(*args, **kwargs)
  File "/root/scripts/Archery/venv/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__
    super().__init__(*args, **kwargs2)
django.db.utils.OperationalError: (1049, "Unknown database 'archery'")

 

創建archery庫即可

mysql> CREATE DATABASE `archery` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| archery            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql>

 

 

 

(venv) [root@a8-cloud-apple-db08 Archery]# ./venv/bin/python3-3.9.10  manage.py dbshell<sql/fixtures/auth_group.sql
import local settings failed, ignored
(venv) [root@a8-cloud-apple-db08 Archery]# ./venv/bin/python3-3.9.10  manage.py dbshell<src/init_sql/mysql_slow_query_review.sql
import local settings failed, ignored
(venv) [root@a8-cloud-apple-db08 Archery]# ./venv/bin/python3-3.9.10  manage.py createsuperuser
import local settings failed, ignored
用戶名: work
電子郵件地址: [email protected]
Password:
Password (again):
密碼跟 用戶名 太相似了。
密碼長度太短。密碼必須包含至少 9 個字符。
這個密碼太常見了。
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
(venv) [root@a8-cloud-apple-db08 Archery]# 

 

 

1)安裝nginx

yum -y install nginx

2)配置nginx

 [root@xxx nginx]# cat /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}

http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;

include /etc/nginx/mime.types;
default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

# nginx配置示例
server{
listen 9123; # 監聽的端口
server_name archery;
client_max_body_size 20M; # 處理Request Entity Too Large
proxy_read_timeout 600s; # 超時時間與Gunicorn超時時間設置一致,主要用於在線查詢

location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host:9123; # 解決重定向404的問題,和listen端口保持一致,如果是docker則和宿主機映射端口保持一

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

location /static {
alias /opt/archery/static; # 此處指向settings.py配置項STATIC_ROOT目錄的絕對路徑,用於nginx收集靜態資源
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}

 

 

3)啓動nginx

systemctl start nginx

 

 

 

 

 

 

 

 

 

 

 

問題在這裏:需要

 

 

 啓動:需要在虛擬環境下啓動

 

 

 

 

 

 

 

 

 

 

##############################

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章