Skip to content

Commit 5e1101e

Browse files
author
pptfz
committed
更新archary笔记
1 parent 3315b03 commit 5e1101e

2 files changed

Lines changed: 292 additions & 2 deletions

File tree

Lines changed: 290 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,290 @@
1+
# Archery安装
2+
3+
[Archery官网](https://archerydms.com/)
4+
5+
[Archery github](https://github.com/hhyo/Archery)
6+
7+
8+
9+
## 安装报错
10+
11+
### `SECRET_KEY` 未设置
12+
13+
```shell
14+
[2026-01-13 11:12:20 +0800] [20] [INFO] Worker exiting (pid: 20)
15+
[2026-01-13 11:12:20 +0800] [21] [ERROR] Exception in worker process
16+
Traceback (most recent call last):
17+
File "/opt/venv4archery/lib/python3.11/site-packages/gunicorn/arbiter.py", line 609, in spawn_worker
18+
worker.init_process()
19+
File "/opt/venv4archery/lib/python3.11/site-packages/gunicorn/workers/base.py", line 134, in init_process
20+
self.load_wsgi()
21+
File "/opt/venv4archery/lib/python3.11/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
22+
self.wsgi = self.app.wsgi()
23+
^^^^^^^^^^^^^^^
24+
File "/opt/venv4archery/lib/python3.11/site-packages/gunicorn/app/base.py", line 67, in wsgi
25+
self.callable = self.load()
26+
^^^^^^^^^^^
27+
File "/opt/venv4archery/lib/python3.11/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
28+
return self.load_wsgiapp()
29+
^^^^^^^^^^^^^^^^^^^
30+
File "/opt/venv4archery/lib/python3.11/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
31+
return util.import_app(self.app_uri)
32+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
33+
File "/opt/venv4archery/lib/python3.11/site-packages/gunicorn/util.py", line 371, in import_app
34+
mod = importlib.import_module(module)
35+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
36+
File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
37+
return _bootstrap._gcd_import(name[level:], package, level)
38+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
39+
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
40+
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
41+
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
42+
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
43+
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
44+
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
45+
File "/opt/archery/archery/wsgi.py", line 16, in <module>
46+
application = get_wsgi_application()
47+
^^^^^^^^^^^^^^^^^^^^^^
48+
File "/opt/venv4archery/lib/python3.11/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
49+
django.setup(set_prefix=False)
50+
File "/opt/venv4archery/lib/python3.11/site-packages/django/__init__.py", line 24, in setup
51+
apps.populate(settings.INSTALLED_APPS)
52+
File "/opt/venv4archery/lib/python3.11/site-packages/django/apps/registry.py", line 91, in populate
53+
app_config = AppConfig.create(entry)
54+
^^^^^^^^^^^^^^^^^^^^^^^
55+
File "/opt/venv4archery/lib/python3.11/site-packages/django/apps/config.py", line 123, in create
56+
mod = import_module(mod_path)
57+
^^^^^^^^^^^^^^^^^^^^^^^
58+
File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
59+
return _bootstrap._gcd_import(name[level:], package, level)
60+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
61+
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
62+
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
63+
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
64+
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
65+
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
66+
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
67+
File "/opt/venv4archery/lib/python3.11/site-packages/django_q/apps.py", line 3, in <module>
68+
from django_q.conf import Conf
69+
File "/opt/venv4archery/lib/python3.11/site-packages/django_q/conf.py", line 31, in <module>
70+
class Conf:
71+
File "/opt/venv4archery/lib/python3.11/site-packages/django_q/conf.py", line 171, in Conf
72+
SECRET_KEY = settings.SECRET_KEY
73+
^^^^^^^^^^^^^^^^^^^
74+
File "/opt/venv4archery/lib/python3.11/site-packages/django/conf/__init__.py", line 101, in __getattr__
75+
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
76+
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
77+
```
78+
79+
80+
81+
#### 解决方法
82+
83+
编辑 `.env` 新增
84+
85+
:::caution 注意
86+
87+
`SECRET_KEY` 的长度必须大于32位,否则 `archery` 容器会报错如下
88+
89+
```shell
90+
AssertionError:
91+
django-mirage-field key length (MIRAGE_SECRET_KEY or SECRET_KEY) must be longer than 32 characters!
92+
```
93+
94+
::;
95+
96+
```shell
97+
SECRET_KEY="4GjsJiFenGBICVd0HDhcCoLRusXmJCNr"
98+
```
99+
100+
101+
102+
### `/opt/archery/.env not found`
103+
104+
执行 `python3 manage.py makemigrations sql` 报错如下
105+
106+
```shell
107+
2026-01-13 14:23:09,043 - environ.environ - INFO - /opt/archery/.env not found - if you're not configuring your environment separately, check this.
108+
```
109+
110+
111+
112+
#### 解决方法
113+
114+
修改 `docker-compose.yml` 文件,在 `archery` 容器 `volumes` 下挂载 `.env` 文件
115+
116+
```yaml
117+
volumes:
118+
......
119+
- "./.env:/opt/archery/.env"
120+
```
121+
122+
123+
124+
## 安装步骤
125+
126+
### 克隆代码
127+
128+
import Tabs from '@theme/Tabs';
129+
import TabItem from '@theme/TabItem';
130+
131+
<Tabs>
132+
<TabItem value="github" label="github" default>
133+
134+
```shell
135+
git clone -b v1.13.0 https://github.com/hhyo/Archery.git
136+
```
137+
138+
</TabItem>
139+
<TabItem value="gitee" label="gitee">
140+
141+
```shell
142+
git clone -b v1.13.0 https://gitee.com/rtttte/Archery
143+
```
144+
145+
</TabItem>
146+
</Tabs>
147+
148+
149+
150+
### 修改文件
151+
152+
修改 `docker-compose.yml` 文件,在 `archery` 容器 `volumes` 下挂载 `.env` 文件
153+
154+
```yaml
155+
volumes:
156+
......
157+
- "./.env:/opt/archery/.env"
158+
```
159+
160+
161+
162+
修改 `.env` 文件,新增 `SECRET_KEY`
163+
164+
```shell
165+
SECRET_KEY="4GjsJiFenGBICVd0HDhcCoLRusXmJCNr"
166+
```
167+
168+
169+
170+
171+
172+
### 启动容器
173+
174+
```shell
175+
cd Archery/src/docker-compose
176+
docker compose up -d
177+
```
178+
179+
180+
181+
### 查看启动
182+
183+
```shell
184+
$ docker compose ps
185+
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
186+
archery hhyo/archery:v1.13.0 "bash /opt/archery/s…" archery 8 minutes ago Up 8 minutes 0.0.0.0:9123->9123/tcp, :::9123->9123/tcp
187+
goinception hanchuanchuan/goinception "/usr/local/bin/dumb…" goinception 9 minutes ago Up 9 minutes 0.0.0.0:4000->4000/tcp, :::4000->4000/tcp
188+
mysql mysql:5.7 "docker-entrypoint.s…" mysql 9 minutes ago Up 9 minutes (healthy) 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
189+
redis redis:5 "docker-entrypoint.s…" redis 9 minutes ago Up 9 minutes (healthy) 6379/tcp
190+
```
191+
192+
193+
194+
### 表结构初始化
195+
196+
```shell
197+
docker exec -ti archery /bin/bash
198+
cd /opt/archery
199+
source /opt/venv4archery/bin/activate
200+
python3 manage.py makemigrations sql
201+
python3 manage.py migrate
202+
```
203+
204+
205+
206+
### 数据初始化
207+
208+
```shell
209+
python3 manage.py dbshell<sql/fixtures/auth_group.sql
210+
python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql
211+
```
212+
213+
214+
215+
### 创建管理用户
216+
217+
```shell
218+
$ python3 manage.py createsuperuser
219+
用户名: admin
220+
电子邮件地址: xxx@xxx.com
221+
Password:
222+
Password (again):
223+
Superuser created successfully.
224+
```
225+
226+
227+
228+
229+
230+
## django配置 `settings.py`
231+
232+
编辑 `archery/settings.py` 增加如下安全配置项
233+
234+
:::caution 注意
235+
236+
如果访问的域名前边是云厂商的lb,则必须注释如下配置,否则访问会变成 `域名:9123`
237+
238+
```python
239+
SESSION_COOKIE_SECURE = True
240+
```
241+
242+
:::
243+
244+
```python
245+
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
246+
#SECURE_SSL_REDIRECT = True # 将所有非SSL请求永久重定向到SSL
247+
SESSION_COOKIE_SECURE = True # 仅通过https传输cookie
248+
CSRF_COOKIE_SECURE = True # 仅通过https传输cookie
249+
SECURE_HSTS_INCLUDE_SUBDOMAINS = True # 严格要求使用https协议传输
250+
SECURE_HSTS_PRELOAD = True
251+
SECURE_HSTS_SECONDS = 60
252+
SECURE_CONTENT_TYPE_NOSNIFF = True # 防止浏览器猜测资产的内容类型
253+
CSRF_TRUSTED_ORIGINS = ['192.168.1.3'] # 这里填写访问 archery的 ip或域名
254+
CORS_ORIGIN_WHITELIST = (
255+
'192.168.1.3',
256+
)
257+
```
258+
259+
260+
261+
在不配置 `settings.py` 相关安全配置的情况下,登陆显示如下
262+
263+
![iShot_2026-01-13_14.52.50](https://raw.githubusercontent.com/pptfz/picgo-images/master/img/iShot_2026-01-13_14.52.50.png)
264+
265+
266+
267+
并且 `archery` 容器会有如下报错
268+
269+
```shell
270+
2026-01-13 14:50:06,022 - django.security.csrf - WARNING - Forbidden (Origin checking failed - https://archery.xxx.com does not match any trusted origins.): /authenticate/
271+
```
272+
273+
274+
275+
## 启动后配置
276+
277+
在启动后 Archery 有一些配置(如Inception , 资源组, 权限组等)需要按需配置, 请详细阅读 [配置项说明](https://archerydms.com/configuration/) , 按照自己的需要进行配置
278+
279+
280+
281+
## 登陆
282+
283+
![iShot_2026-01-13_15.36.18](https://raw.githubusercontent.com/pptfz/picgo-images/master/img/iShot_2026-01-13_15.36.18.png)
284+
285+
286+
287+
登陆后首页面
288+
289+
![iShot_2026-01-13_15.37.36](https://raw.githubusercontent.com/pptfz/picgo-images/master/img/iShot_2026-01-13_15.37.36.png)
290+

docs/博客工具/Docusaurus/docusaurus更新.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# docusaurus更新
22

3-
查看安装的版本
3+
查看当前已安装的版本
44

55
```javascript
6-
npx docusaurus --version
6+
$ npx docusaurus --version
77
3.6.2
88
```
99

0 commit comments

Comments
 (0)