在HarmonyOS Next开发中,ohpm-repo私有仓库的配置直接影响着开发效率和项目的稳定性。其中,config.yaml配置文件扮演着关键角色。今天,咱们就深入剖析一下这个配置文件,并分享一些优化私有仓库性能的实用技巧。
配置文件config.yaml详解
仓库监听地址(listen)
listen
参数用于指定ohpm-repo服务的监听地址和端口,它的格式为三段式,即<proto>://<host>:<port>
。默认值是localhost:8088
,这意味着它只监听本机地址。如果希望其他机器通过IP或域名访问你的私有仓库,就需要将host
修改为ohpm-repo部署机器的IP。例如:listen: http://192.168.1.100:8088
。
这里proto
支持http
和https
协议,缺省时默认为http
。从安全角度考虑,建议使用https
协议。若选择https
,还需配置https_key
和https_cert
,分别指定SSL证书私钥文件和证书文件的路径。比如:
bash
https_key:./ssl/server.keyhttps_cert:./ssl/server.crt
存储路径(deploy_root)
deploy_root
指定了ohpm-repo的部署目录,这个目录用于存储运行时生成的文件数据。如果该字段为空,在Windows系统下,默认路径为~/AppData/Roaming/Huawei/ohpm-repo
;在其他操作系统下,默认路径是~/ohpm-repo
。若要自定义路径,必须使用绝对路径,且该路径所指向的文件夹必须存在,同时不能是ohpm-repo安装包解压根目录。例如:
javascript
deploy_root: /home/user/ohpm-repo-data
最大包大小(max_package_size)
max_package_size
用于限制上传包的大小,单位是MB,默认值为300MB,取值范围是(0, 300]
。在实际项目中,如果你的项目经常需要上传较大的三方库,可能需要根据实际情况调整这个值。比如,若项目中有一些大型的资源库,可适当增大这个限制:
makefile
max_package_size: 500
API超时(api_timeout)
api_timeout
定义了接口请求与响应的超时时间,单位为秒,默认值是60秒,取值范围是(0, 3600]
。如果你的网络环境不稳定,或者某些操作可能需要较长时间,可以适当延长这个超时时间,以避免因网络波动导致请求失败:
makefile
api_timeout: 120
不同存储方式的选择与配置
fileDB vs MySQL存储
db
配置项负责元数据存储,支持fileDB
本地存储和mysql
数据库存储。
- fileDB本地存储:这是默认的存储方式,适合小型项目或对数据存储要求不高的场景。配置相对简单,只需要指定存储路径即可:
lua
db:
type: filedb
config:
path:./db
- MySQL存储 :当项目规模较大,对数据管理和性能有更高要求时,可选择
mysql
存储。需要配置数据库主机地址、端口、用户名、密码和数据库名:
yaml
db:
type: mysql
config:
host: "localhost"
port: 3306
username: "tctAdmin"
password: "password"
database: "repo"
选择mysql
存储时,为了避免潜在的安全风险,建议使用非最高权限的数据库账户进行连接。
local storage vs sftp vs custom存储
store
配置项用于三方库及其元数据等资源文件的存储,支持local storage
、sftp
存储和custom
自定义插件存储。
- local storage本地存储:默认的文件存储方式,适合大多数场景。配置时需指定存储根目录路径和仓库内容的下载地址:
yaml
store:
type: fs
config:
path:./storage
server: http://localhost:8088
- sftp存储 :仅当
db
的类型为mysql
时,store
才能使用sftp
存储。这种存储方式适用于需要将文件存储在远程服务器上的场景。配置时要指定多个参数,如主机地址、端口、用户名、密码和文件路径等:
yaml
store:
type: sftp
config:
location:
- name: test_one_sftp
host: "localhost"
port: 22
read_username: "read"
read_password: "password"
write_username: "write"
write_password: "password"
path: /source22
server: http://localhost:8088
- custom存储 :当你有特殊的存储需求时,可以选择
custom
自定义插件存储。需要指定插件的类名、路径和自定义字段等:
yaml
store:
type: custom
config:
export_name: "MyStorage"
plugin_path: "plugins/storagePlugin/MyStorage"
custom_field: "test"
server: http://localhost:8088
最佳实践:如何优化私有仓库性能
合理配置缓存
- uplink缓存 :
uplink_cache_path
指定了远程包缓存路径,默认是./uplink
;uplink_cache_time
设置了远程包metadata的缓存时间,单位为小时,默认168小时。合理调整这两个参数,可以减少对远程资源的重复请求。如果你的项目依赖的远程包更新不频繁,可以适当延长缓存时间:
javascript
uplink_cache_path: /data/ohpm-repo/uplinkuplink_cache_time: 336
- 本地缓存:ohpm-repo本身会按需缓存依赖项,但可以通过优化存储路径和清理策略来提高缓存效率。比如,将缓存目录设置在读写速度快的磁盘分区上。
调整并发访问限制
user_rate_limit
参数用于控制用户访问频率,单位是次/秒,默认值为100次/秒 。如果你的服务器性能较好,可以适当提高这个值,以支持更多的并发访问,但要注意不要超过服务器的承载能力,避免出现性能问题:
makefile
user_rate_limit: 200
日志管理
日志配置可以帮助我们及时发现和解决问题。在config.yaml中,可以设置不同类型日志的存储级别和路径。
- 日志级别 :
loglevel_run
、loglevel_operate
和loglevel_access
分别用于设置运行日志、操作日志和访问日志的存储级别,默认级别为info
。如果在开发和调试阶段,你可以将日志级别设置为debug
,以获取更详细的日志信息;在生产环境中,为了减少日志文件的大小和对性能的影响,可以将级别设置为warn
或error
:
lua
loglevel_run: debugloglevel_operate: debugloglevel_access: debug
- 日志路径 :
logs_path
指定了日志存储路径,默认是./logs
。可以将日志路径设置到空间充足的磁盘分区,避免因日志文件过大导致磁盘空间不足:
javascript
logs_path: /data/ohpm-repo/logs
通过深入理解config.yaml配置文件,并合理选择存储方式和优化仓库性能,我们可以让ohpm-repo私有仓库更好地服务于HarmonyOS Next开发项目,提高开发效率和项目的稳定性。希望这些经验分享能对大家有所帮助,在实际使用过程中,如果遇到问题,欢迎一起探讨交流。