【Part1:安裝】
環境信息
1、os:CentOS Linux release 7.8.2003 (Core)
2、python:Python 3.6.5
3、redis:Redis server v=5.0.11
https://my.oschina.net/guiguketang/blog/3043486
4、mysql:mysql Ver 14.14 Distrib 5.7.33
https://my.oschina.net/guiguketang/blog/4966611
1、安裝Python和virtualenv
編譯安裝
# 安裝依賴 yum install wget gcc make zlib-devel openssl openssl-devel wget "https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz" tar -xvJf Python-3.6.5.tar.xz # 編譯 cd Python-3.6.5 ./configure prefix=/usr/local/python3 make && make install ln -fs /usr/local/python3/bin/python3 /usr/bin/python3 ln -fs /usr/local/python3/bin/pip3 /usr/bin/pip3 # virtualenv pip3 install virtualenv -i https://mirrors.ustc.edu.cn/pypi/web/simple/ ln -fs /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
2、準備虛擬環境
# 編譯安裝python的使用 virtualenv venv4archery --python=python3 # 切換python運行環境到虛擬環境 source venv4archery/bin/activate
3、下載最新release包,安裝依賴庫
wget "https://github.com/hhyo/archery/archive/v1.8.0.tar.gz" tar -xzvf v1.8.0.tar.gz # 安裝系統依賴 yum -y install gcc gcc-c++ python-devel mysql-devel openldap-devel unixODBC-devel gettext # 安裝依賴庫 cd archery-1.8.0 pip3 install -r requirements.txt -i https://mirrors.ustc.edu.cn/pypi/web/simple/ # 如果使用yum安裝的python3,安裝mysqlclient可能提示提示缺少Python.h,可安裝 yum -y install python36-devel
4、準備MySQL、Redis實例
- MySQL推薦版本>=5.6
手動創建db,dbname爲archery - Redis提供任務隊列和緩存
5、MySQL配置
建議MySQL版本5.6以上
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'archery', # 數據庫名稱 'USER': 'root', # 數據庫用戶 'PASSWORD': '', # 數據庫密碼 'HOST': '127.0.0.1', # 數據庫HOST,如果是docker啓動並且關聯,可以使用容器名連接 'PORT': '3306', # 數據庫端口 'OPTIONS': { 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", # SQL_MODE,爲了兼容select * group by,可以按需調整 'charset': 'utf8mb4' }, 'TEST': { 'NAME': 'test_archery', 'CHARSET': 'utf8mb4', }, } }
6、緩存配置
緩存使用redis,可參考 django_redis 文檔 http://django-redis-chs.readthedocs.io/zh_CN/latest/
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", # redis://host:port/db "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PASSWORD": "" } } }
7、啓動準備
# 數據庫初始化 python3 manage.py makemigrations sql python3 manage.py migrate # 數據初始化 python3 manage.py dbshell<sql/fixtures/auth_group.sql python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql # 創建管理用戶 python3 manage.py createsuperuser
8、archery手動啓動服務
runserver啓動(僅作爲本地測試)
source /opt/venv4archery/bin/activate
#啓動Django-Q,需保持後臺運行
python3 manage.py qcluster &
#啓動服務
python3 manage.py runserver 0.0.0.0:9123 --insecure &
訪問地址:
http://ip:9123
如果啓動成功,但無法訪問,看一下防火牆是不是處於開啓狀態。
以上就是手動安裝archery的quanguoc
【Part2:管理系統配置】
1、語法檢測goinception配置參考
ps:
異常一、數據庫初始化異常
手動配置的話,需要自己創建數據庫
執行python3 manage.py migrate
出現數據庫初始化異常
原因是數據庫編碼的問題,創建庫的時候設置編碼即可
mysql> show global variables like '%character%';
mysql> drop database archery;
mysql> create database archery default character set utf8;
(venv4archery) [root@localhost Archery-1.8.0]# python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, django_q, sessions, sql
Running migrations:
Applying contenttypes.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0001_initial... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sql.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying django_q.0001_initial... OK
Applying django_q.0002_auto_20150630_1624... OK
Applying django_q.0003_auto_20150708_1326... OK
Applying django_q.0004_auto_20150710_1043... OK
Applying django_q.0005_auto_20150718_1506... OK
Applying django_q.0006_auto_20150805_1817... OK
Applying django_q.0007_ormq... OK
Applying django_q.0008_auto_20160224_1026... OK
Applying django_q.0009_auto_20171009_0915... OK
Applying django_q.0010_auto_20200610_0856... OK
Applying django_q.0011_auto_20200628_1055... OK
Applying django_q.0012_auto_20200702_1608... OK
Applying django_q.0013_task_attempt_count... OK
Applying sessions.0001_initial... OK
Traceback (most recent call last):
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 73, in execute
return self.cursor.execute(query, args)
File "/usr/local/src/archery/venv4archery/lib64/python3.6/site-packages/MySQLdb/cursors.py", line 206, in execute
res = self._query(query)
File "/usr/local/src/archery/venv4archery/lib64/python3.6/site-packages/MySQLdb/cursors.py", line 319, in _query
db.query(q)
File "/usr/local/src/archery/venv4archery/lib64/python3.6/site-packages/MySQLdb/connections.py", line 259, in query
_mysql.connection.query(self, query)
MySQLdb._exceptions.OperationalError: (1366, "Incorrect string value: '\\xE6\\x85\\xA2\\xE6\\x97\\xA5...' for column 'name' at row 1")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/core/management/base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/core/management/base.py", line 371, in execute
output = self.handle(*args, **options)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/core/management/base.py", line 85, in wrapped
res = handle_func(*args, **kwargs)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 268, in handle
self.verbosity, self.interactive, connection.alias, apps=post_migrate_apps, plan=plan,
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/core/management/sql.py", line 54, in emit_post_migrate_signal
**kwargs
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/dispatch/dispatcher.py", line 179, in send
for receiver in self._live_receivers(sender)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/dispatch/dispatcher.py", line 179, in <listcomp>
for receiver in self._live_receivers(sender)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/contrib/auth/management/__init__.py", line 83, in create_permissions
Permission.objects.using(using).bulk_create(perms)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/models/query.py", line 507, in bulk_create
objs_without_pk, fields, batch_size, ignore_conflicts=ignore_conflicts,
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/models/query.py", line 1277, in _batched_insert
self._insert(item, fields=fields, using=self.db, ignore_conflicts=ignore_conflicts)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/models/query.py", line 1254, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1397, in execute_sql
cursor.execute(sql, params)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/backends/utils.py", line 98, in execute
return super().execute(sql, params)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/backends/utils.py", line 66, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "/usr/local/src/archery/venv4archery/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 73, in execute
return self.cursor.execute(query, args)
File "/usr/local/src/archery/venv4archery/lib64/python3.6/site-packages/MySQLdb/cursors.py", line 206, in execute
res = self._query(query)
File "/usr/local/src/archery/venv4archery/lib64/python3.6/site-packages/MySQLdb/cursors.py", line 319, in _query
db.query(q)
File "/usr/local/src/archery/venv4archery/lib64/python3.6/site-packages/MySQLdb/connections.py", line 259, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xE6\\x85\\xA2\\xE6\\x97\\xA5...' for column 'name' at row 1")
異常二、ModuleNotFoundError: No module named 'Crypto'
解決:
pip3 uninstall crypto
pip3 uninstall pycrypto
pip3 install pycrypto
官網:
https://github.com/hhyo/archery