DevsDawn
DevsDawn

DevsDawn

解决Vite无法获取env环境变量的问题

在使用Vite 5时,出现使用import.meta.env仅包含默认的一些环境变量,无法获取到在.env文件定义的环境变量的问题。 查阅 官方文档 有以下说明: Vite 默认是不加载 .env 文件的,因为这些文件需要在执行完 Vite 配置后才能确定加载哪一个,举个例子,root 和 envDir 选项会影响加载行为。不过当你的确需要时,你可以使用 Vite 导出的 loadEnv 函数来加载指定的 .env 文件。 因此,需要在vite.config.js中手动定义所需的环境变量。例如获取.env文件中的VITE_MY_APP_ENV变量,可…

2024-09-14  

使用acme.sh发布更新证书到阿里云CDN

近期各大云平台将免费SSL证书的有效期从1年缩短到90天,证书续期从1年一次变成了一年4次,非常繁琐。虽然我们的业务服务器上已经使用了.acme.sh实现证书自动续期,但由于网站使用了CDN,依然需要人工在阿里云CDN上进行证书配置。 最近看到acme.sh的Github仓库上有贡献者提了阿里云CDN的Deploy Hook PR,于是开始着手给业务部署CDN证书自动续期的功能。 操作步骤 由于该 PR 尚未合并到主分支,因此需要手动获取该 ali_cdn.sh 文件,上传到服务器~/.acme.sh/deploy目录下。 在阿里…

2024-07-19  

解决小程序chooseLocation:fail api scope is not declared问题

小程序在调用chooseLocation接口时出现如下报错: chooseLocation:fail api scope is not declared in the privacy agreement 原因为未在小程序后台的“用户隐私保护指引”维护权限声明信息。 进入小程序后台“设置”→“服务内容声明”→“用户隐私保护指引”处,点击“增加信息类型”,选中“选择的位置信息”然后补充权限说明。 等待协议审核通过,接口即可正常使用。

2024-07-08  

Sentry自部署切换文件存储到阿里云OSS

Sentry是一个流行的开源错误跟踪解决方案,在自部署(Self-hosted)版本中,默认情况下,Sentry使用本地文件系统来存储各种文件,例如Releases中上传的制品(Source Maps)、Replays等数据。随着时间的推移,硬盘空间的占用会因这些文件的累积而越来越大。 因此,需要将部分文件转移到外部存储以降低服务器的硬盘占用。另外,也可以充分利用OSS的生命周期功能将不常访问的数据沉降以节省存储成本。 切换文件系统到阿里云OSS 在sentry目录下找到sentry/config.yml文件,该文件是se…

2024-06-22  

在宝塔面板中开启HTTP/3支持

HTTP/3优点 HTTP/3是目前最新的网络传输协议,在HTTP/2的基础上进一步优化了性能。HTTP/3的主要优点包括: 减少延迟:HTTP/3使用基于UDP的QUIC协议,减少了连接建立时的延迟。 改善连接可靠性:即使网络环境变化,HTTP/3也能保持连接稳定。 提高传输速度:通过多路复用技术,HTTP/3能更有效地处理多个请求。 配置方法 在宝塔面板中开启HTTP/3支持,可按照以下步骤操作: 1. 升级Nginx到1.25.5版本 确保Nginx版本至少为1.25.5。 2. 修改站点配置文件 在宝塔面板的站点配置文…

2024-05-09  

解决使用宝塔备份数据库时出现死锁问题

在使用宝塔面板内建的数据库备份功能备份数据库时,如果数据库数据比较大,备份耗时长,则在备份途中很可能会出现应用程序的数据库事务操作出现死锁或超时的问题,可通过以下方法解决。 打开宝塔安装目录下的/www/server/panel/class/panelBackup.py文件,搜索 backup_shell = "'{mysqldump_bin}' --routines... 所在位置,添加--single-transaction参数即可。

2024-01-10  

ThinkPHP模型关联设置允许查询软删除数据

在使用ThinkPHP的模型关联和软删除功能时,我们可能会遇到一些特殊的需求。例如在某些情况下,我们希望关联数据即使已经被软删除,也需要查询出来。此时如果直接使用belongsTo之类的关联方法,查询出来的数据默认过滤了软删除数据。 例如,在获取一篇文章的发布者时,如果对应的用户已被删除,那么关联方法就无法获取对应的发布者信息。如果不想让软删除的用户影响关联结果,那么可以在模型关联中添加removeOption('soft_delete')方法: public function user() { return $this…

2023-11-06  

解决MySQL ERROR 3029 错误

ERROR 3029 (HY000): Expression #1 of ORDER BY contains aggregate function and applies to the result of a non-aggregated query 这个错误是指在使用聚合函数(如sum, count, max, min等)进行排序时,没有将排序的列包含在分组的列中,或者排序的列与分组的列没有函数依赖关系。这种情况下,MySQL无法确定如何对分组后的结果进行排序,因此会报错。这个错误与MySQL的sql_mode设置有关,如果sql_mode包含only_full_group_by,那么就会出现这个错误。 有两种解决办法: - 一种…

2023-10-19  

Linux下swap的配置和使用

swap是Linux系统中的一种虚拟内存技术,它可以在物理内存不足时,将一部分硬盘空间作为内存使用,从而提高系统的性能和稳定性。本文将介绍如何在Linux下配置和使用swap。 配置swap 配置swap有两种方式,一种是使用分区,一种是使用文件。使用分区的优点是速度快,缺点是需要预留硬盘空间;使用文件的优点是灵活,缺点是速度慢。下面分别介绍这两种方式。 使用分区 如果你在安装Linux时已经为swap分配了一个分区,那么你可以直接跳过这一步。如果没有,你可以使用fdisk或者其他工…

2023-07-07  

MySQL Incorrect key file for table 报错排查

近期一个项目在运行过程中数据库经常出现Incorrect key file for table 'xxx.MYI'; try to repair it. MySQL Errno: 126的错误,导致项目完全无法正常运行。业主急死,打了十几个电话过来,被迫在下班的路上继续加班:joy:。 首先通过搜索找到了这两种可能性: 一种可能的原因是您的查询获取的数据大于您的/tmp文件夹(即用于存储临时表的文件夹)的大小。解决方法是更改/tmp文件夹的位置,或者增加/tmp文件夹的空间。 另一种可能的原因是表损坏。解决方法是重新创建或修复…

2023-06-12  

DigitalOcean 2023年最新官方测速地址列表

DigitalOcean是一家知名的云计算基础设施提供商,成立于2011年,总部位于美国纽约,专注于为开发者、初创公司和中小企业提供云基础设施平台。DigitalOcean已于2021年3月上市,具有一流的稳定性、易用性和安全性,可放心用于运行如电商平台等企业级业务负载。 DigitalOcean在全球范围内提供了数十个地域的数据中心,本文提供最新的DigitalOcean数据中心地址列表,可用于速度测试Speedtest,帮助大家寻找适合自身业务的最优数据中心。 上次更新:2023-08-07 注意: 由于DigitalOc…

2023-01-02  

DigitalOcean 2022年最新官方测速地址列表

DigitalOcean是知名的云计算基础设施提供商,成立于2011年,专注于为开发者、初创公司和中小企业提供云基础设施平台。其已于2021年3月上市,具有一流的稳定性、易用性和安全性,可放心用于运行企业级业务负载。 DigitalOcean在全球范围内提供数十个地域的数据中心可供选用,本文提供最新的DigitalOcean数据中心地址列表,可用于速度测试,寻找适合自身业务的最优数据中心。 上次更新:2022-12-23 2023更新版 2023更新版:https://devsdawn.com/2023/01/digitalocean-2023-latest-…

2022-12-23  

修改已有Docker容器的DNS

在Docker中,如果创建容器时没有指定相关参数,etc/docker/daemon.json中也没有进行相关配置的话,容器的DNS配置默认复制宿主机的配置。 容器创建后,即使宿主机修改了DNS,容器的DNS配置仍然会保持创建时的状态,不会跟随宿主机的修改。 如需修改容器DNS,有以下两种方法: 1. 进入容器手动修改/etc/resolv.conf 通过docker exec -it <name> /bin/bash进入容器,手动修改/etc/resolv.conf文件。 2. 宿主机修改对应容器的配置文件 首先通过docker ps确定容器id,记为cont…

2022-12-15  

解决MySQL in select子查询无法使用索引问题

近期在编写一个业务逻辑,需要从订单表中找出所有手机号属于某一个用户的订单,而每个用户可关联多个手机号,于是有以下的查询语句: select * from mall_order where phone in (select phone from user_phone where user_id = #{id]}) 以上mall_order表的phone字段和user_phone的user_id字段均已添加索引。 然而,通过对以上语句explain后发现索引失效,语句对mail_order进行了全表查询,并没有使用到已经添加的phone索引。 经过排查,发现mall_order表和user_phone表的phone字…

2022-12-07  

Linux SSH设置超时自动断开连接

Linux的SSH会话默认没有登录超时时间限制,为了避免运维人员完成运维工作后忘记断开SSH连接,提高服务器的安全性,有时候我们希望Linux的SSH会话能在用户空闲一段时间没有操作后自动断开连接,可使用以下方式。 编辑/etc/profile文件,末尾加入以下内容: # 超时时间,这里设置为3600秒(1小时) export TMOUT=3600 # 设置只读,防止参数被手动修改 readonly TMOUT 保存并退出,该配置会对后续的新会话生效。也可以使用以下指令立即对当前会话生效: source /etc/profile 使用…

2022-12-03  
加载更多