yanhy的学习记录匣 - 网站 https://www.yanhy.top/index.php/tag/%E7%BD%91%E7%AB%99/ windows下使用certbot续订/申请SSL域名证书 https://www.yanhy.top/index.php/archives/358/ 2024-06-19T15:40:00+08:00 有好一段时间没更新博客了,自从运营的MC服务器社区解散后,空余时间多起来了,可以去研究一些新的玩意了~certbot Windows版本 Github下载链接脚本内容本文简单分享一下在windows系统下,使用certbot程序续订/申请SSL证书,为此我简单写了个Bat脚本可供使用。07/10 更新:在系统用户非管理员情况下需要脚本提权才能运行,因此修改脚本使其可以打开后提权@echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0" echo 请确保安装了Certbot,如未安装可以前往下载 https://github.com/certbot/certbot/releases/download/v2.9.0/certbot-beta-installer-win_amd64_signed.exe echo 脚本作者by.yanhy2000 echo 申请证书需要准备一个邮箱,邮箱第一次申请会自动注册,只需要两次输入"y"并回车即可 echo 验证证书需要手动添加修改DNS的TXT记录 set /p email="请输入您的邮箱地址: " set /p domain="请输入您的域名: " certbot certonly -m %email% -d "%domain%" -d %domain% --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory if %errorlevel% neq 0 ( echo 证书申请过程中发生错误。 pause exit /b %errorlevel% ) echo 证书申请成功。 pause其中,执行certbot程序的指令简单分析一下certonly 安装模式 -m 申请证书所需的邮箱 -d 申请证书的域名 --manual 使用交互式或脚本钩子的方式获取证书 --preferred-challenges dns 使用 DNS 方式校验域名所有权 --server Let's Encrypt指定的V2版本接口因此,只需要传入邮箱和域名,即可开始申请证书。使用方法填入邮箱和所申请的域名如果邮箱第一次申请,会提示注册等,可以直接输入y回车(可能有两次)随后会提示这样(域名和记录值为虚拟)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name: _acme-challenge.www.test.com. with the following value: aaaaaaaaaaaaaaaa Before continuing, verify the TXT record has been deployed. Depending on the DNS provider, this may take some time, from a few seconds to multiple minutes. You can check if it has finished deploying with aid of online tools, such as the Google Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.oooyn.top. Look for one or more bolded line(s) below the line ';ANSWER'. It should show the value(s) you've just added. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Press Enter to Continue此时不要按回车,前往域名注册站(如阿里云域名、腾讯云的DNSPod等),为目标域名添加一条记录:主机记录为“_acme-challenge.www.test.com.”去掉其中的主域名,也就是“_acme-challenge.www”记录类型为TXT记录值为上文中“aaaaaaaaaaaaaaaa”的内容添加完成后,等待几分钟(最快几十秒也可能,dns解析和缓存需要时间),然后在命令行敲下回车键,等待验证。如果不确定有没有解析好的话,可以先清理一下本地的DNS缓存,然后手动本地验证一下是否解析成功,再去回车。否则失败后需要重新解析DNS。本地清理DNS缓存方法:win+r,输入CMD回车,输入ipcondif /flushdns回车本地测试TXT解析方法: win+r,输入指令回车nslookup -qt=txt _acme-challenge.test.com服务器: DNS1.aaaaaa.net Address: 1.2.3.4 非权威应答: _acme-challenge.text.com text = "aaaaaaaaaaaaaaaaaaaaaaaa"回车后待显示以下内容即为成功,证书文件在 C:\Certbot\live 目录内,取出可部署需要的地方。Successfully received certificate. Certificate is saved at: C:\Certbot\live\example.top\fullchain.pem Key is saved at: C:\Certbot\live\example.top\privkey.pem This certificate expires on 2023-08-05. These files will be updated when the certificate renews. ​ NEXT STEPS: - This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date. ​ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -查错问题一Certbot failed to authenticate some domains (authenticator: manual). The Certificate Authority reported these problems: Domain: www.test.com Type: dns Detail: DNS problem: looking up TXT for _acme-challenge.www.test.com: DNSSEC: DNSKEY Missing Hint: The Certificate Authority failed to verify the manually created DNS TXT records. Ensure that you created these in the correct location, or try waiting longer for DNS propagation on the next attempt. Some challenges have failed. Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile C:\Certbot\log\letsencrypt.log or re-run Certbot with -v for more details. 证书申请过程中发生错误。 请按任意键继续. . .dns尚未解析好,需要多等一会。如果等很久还是失败,可以试试看清理本地的DNS缓存问题二Saving debug log to C:\Certbot\log\letsencrypt.log An unexpected error occurred: requests.exceptions.SSLError: HTTPSConnectionPool(host='acme-v02.api.letsencrypt.org', port=443): Max retries exceeded with url: /directory (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)'))) Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile C:\Certbot\log\letsencrypt.log or re-run Certbot with -v for more details. 证书申请过程中发生错误。 请按任意键继续. . .电脑网络通讯问题,检查是否开启了代理,关闭代理即可 Debian10系统下LNMP三件套安装与配置——Nginx与初始环境篇 https://www.yanhy.top/index.php/archives/231/ 2022-05-22T04:37:00+08:00 近期需要搭建个简易的小型网站,原想着用服务器面板解决,但是网站程序要求苛刻(如使用PHP函数、安装模块、资源性能分配等),环视了一圈服务器面板也没有找到中意的,不是限制太多就是自身占用过大,因此决定自己搭建配置LNMP三件套来部署网站程序,以达到最佳性能与最小损耗...预备LNMP是一种用于配置网站前端程序的运行环境组合。‘L’指Linux系统环境,‘N’指Nginx,‘M’指MySQL或者MariaDB数据库,‘P’指PHP程序。类似的环境组合还有LAMP,该包使用Apache作为网页服务器驱动程序,与Nginx相比占用较大但是相对稳定,但是近年来搭建小型网站项目依然是Nginx更加流行。此处我预备的环境版本为:Linux = Debian 10.2 64bit Nginx = 稳定版1.20.2 MySQL = 8.0.29 PHP = 8.1/7.4 服务器使用腾讯云的香港区域服务器,配置为2C2G,搭建小型网站性能足够使用LNMP环境包之‘L’——Linux服务器使用腾讯云提供的纯净Debian 10.2镜像,无预装其他环境进入系统后先更新软件包:apt update apt upgrade由于腾讯云的服务器都是预置好软件源的,因此购买大厂的机器后一般无需手动换源即可开箱即用LNMP环境包之‘N’——Nginx本文使用的Nginx版本官网下载链接(适用于Debian buster系统): nginx_1.20.2-1~buster_amd64.debCentOS 8系统Nginx下载链接: nginx-1.20.2-1.el8.ngx.x86_64.rpm其他系统或者版本下载链接可见列表: http://nginx.org/packages/安装步骤通过SSH连接至服务器,并获取root权限:su下载Nginx 1.20.2软件安装包(下载链接可根据自己的系统环境从上方列表查找),本文以Debian 10.2为例:wget http://nginx.org/packages/debian/pool/nginx/n/nginx/nginx_1.20.2-1~buster_amd64.deb安装Nginx软件包:dpkg -i nginx_1.20.2-1~buster_amd64.deb安装完成后查看版本:nginx -v如果显示为nginx version: nginx/1.20.2即为安装成功,删除软件包即可初始化配置Nginx的配置文件一般存放于/etc/nginx/conf.d/文件夹内,编辑里面的文件即可默认网站配置文件名为default.conf,使用nano编辑器进行初始配置:nano /etc/nginx/conf.d/default.conf文件内容有这几处需要修改:在"location"项的index内需要添加 index.php ,root项内的路径可指定好也可保持默认,后面配置网页时可再修改。如图所示:找到"location ~ .php$"项,将其与大括号内的内容注释取消掉,并修改:root项指定好网站根目录修改 fastcgi_pass 项为 unix:/run/php-fpm/www.sock;,Nginx 通过 UNIX 套接字与 PHP-FPM 建立联系,该配置与 /etc/php-fpm.d/www.conf 文件内的 listen 配置一致。将 fastcgi_param SCRIPT_FILENAME 后的 /scripts$fastcgi_script_name; 替换为 $document_root$fastcgi_script_name;。修改完成后如下图所示:按Ctrl+O写入文件,Ctrl+X退出编辑最后将Nginx配置为开机启动即可:systemctl start nginx systemctl enable nginx验证配置本文修改后的配置文件如图:由于测试所用的为一个静态页面,因此只需要指定根目录与域名即可。另存为test.conf,重启Nginx,检查无报错后所用浏览器访问域名,网页加载正常,说明Nginx配置验证成功。拓展:多网站配置如果要配置多个网站,只需要在域名服务商多解析几个到服务器IP的域名,然后将/etc/nginx/conf.d/default.conf文件重复拷贝作为模板使用,每次修改完配置文件,需要重新启动Nginx服务使其生效,同时要确保Nginx没有报错。在配置文件时,只需要使location项内的root所指定的网站根目录不相同、server_name所指定的域名不相同,即可通过不同域名访问到不同站点根目录的index文件。反代、伪静态本文暂且不提及。 服务器上部署小游戏之《人生重开模拟器》(附screen使用方法) https://www.yanhy.top/index.php/archives/118/ 2021-10-11T00:12:00+08:00 偶然发现个开源的js项目,部署到服务器上玩玩~简介该项目名为 lifeRestart ,开源在github,源码主要为JS编写,可同时运行在本地控制台、网页上。以下为控制台截图:步骤环境安装由于本项目为js项目,依赖于Node运行,因此先在服务器安装上NodeJS与npm:sudo apt install nodejs sudo apt install npm如果报错找不到该软件包,请先执行sudo apt update 与 sudo apt upgrade安装完后输入node -v即可查看安装版本,验证是否安装成功如果出现的版本号为14版本以下的旧版本,可能运行不了项目,请输入sudo apt autoremove nodejs来卸载旧版本node,然后跟着下面的教程安装最新版node:去 node官网 找到最新版后,选择Linux 二进制文件 (x64) 或者选择自己平台的下载,复制下载链接,然后进入ssh。先新建文件夹为node(个人习惯,不想把目录搞的很乱),再使用wget将node下载下来并解压,下载链接与安装包名不一定一致,自行变通:mkdir node cd node wget https://npm.taobao.org/mirrors/node/v16.10.0/node-v16.10.0-linux-x64.tar.xz tar –xvf node-v16.10.0-linux-x64.tar.xz再将解压后的重命名,然后移动到要长期存放的地方,个人推荐在usr文件夹下创建,以下教程就是在usr下创建个soft,防止目录管理起来乱:mv node-v16.10.0-linux-x64 node mkdir /usr/soft mv node /usr/soft/node最后一步,将node添加到系统环境变量:sudo nano /etc/profile 在文档最下面回车一行,并添加: export NODE_HOME=/usr/soft/node (此处填Node所在路径)(注释不要复制!) export PATH=$NODE_HOME/bin:$PATH然后输入source /etc/profile刷新环境变量,再输入node -v确认版本如果是用上述链接下载,应该是显示 v16.10.0至此,node算是安装完成(如果在其他地方输入node -v没有反应,可以重新输入source /etc/profile来刷新,或者重启后也可以全局刷新)运行环境安装完成后,还需要有个能在服务器上持续运行该项目的环境,否则ssh连接一旦断开项目将会被终止。如果服务器已经安装了VNC或者Xrdp,可无视下面的安装,直接远程连接后到部署项目步骤即可。为了让项目在服务器持续运行且不需要值守,只需要使用Screen软件包即可:sudo apt install screen安装后可输入screen -v查看版本来验证是否安装成功。附:Screen使用方法简要总结(指令区分大小写!)screen -ls 列出所有创建的窗口screen -S xxxx 新建一个名字为xxxx的新窗口并进入screen -r xxxx 进入一个名字为xxxx的窗口,如果没有这个名字的窗口会显示There is no screen to be resumed matching xxxx.screen -R xxxx 进入一个名字为xxxx的窗口,如果没有这个窗口会自动创建新窗口且名字为xxxx关闭screen : 进入一个窗口,然后关闭当前的项目,再输入exit,即可退出窗口并从列表中移除Ctrl + a + d 暂离当前窗口(进入一个窗口后,先按ctrl+a,保持ctrl键再按d即可离开该窗口,不影响运行的项目)screen -wipe 列出全部窗口并自动移除无效的窗口出现名字相同的多个窗口时,进入窗口时需要输入id而不是窗口名,如:列表中有114514.test 1919810.test,进入窗口时需要输入screen -r 114514kill 9 id号 强制杀死窗口进程(id号为23333.Name中的23333,如 kill 9 23333,不能输入窗口名)项目部署1、先创建一个窗口用于专门跑项目:screen -S lifeRestart2、根据github文档,首先需要下载项目包:git clone https://github.com/VickScarlet/lifeRestart.git lifeRestart cd lifeRestart3、进入文件夹后,先安装依赖(如果服务器是第一次安装node环境,可能会安装久一些):npm install4、启动本地服务器:npm run dev5、开放端口8080各服务商开放端口的方法自行百度,如果是使用宝塔面板的,可以在宝塔后台-安全-添加放行端口,手动添加8080即可(暂时没找到哪里可以改端口,待我琢磨一下...)6、连接网页在浏览器输入http://服务器ip地址:8080/view/index.html本文到此结束,感谢支持! Termux——安卓终端快速入门 https://www.yanhy.top/index.php/archives/98/ 2021-09-13T19:59:00+08:00 为了学习linux,很多时候都是选择装个虚拟机,或者买个服务器来练习linux操作。除了使用wsl或者虚拟机之外,还有一个更便携的linux终端,那便是安卓上的Termux...软件介绍Termux这个软件,可以说是安卓上的linux虚拟机,又不完全是个虚拟机。据官方文档介绍:Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager.”“Termux 是一个Android 终端模拟器和 Linux 环境应用程序,无需 root 或设置即可直接运行。自动安装最小的基本系统 - 使用 APT 包管理器可以使用其他包。”在安卓系统本身环境下,Termux得到了很好的运行优势,无需额外虚拟化操作即可使用linux操作界面。在使用过程中,只需要像Debian系一样操作即可,你可以使用pkg安装软件包,也可以更换为apt软件包管理器等等。它可以运行很多Arm及Arm64的项目,比如nodejs、python、java等等。Termux可以用来运行脚本、编译小型项目、学习linux系统操作而不会轻易影响主系统等。准备工具一部安卓手机(性能、配置不限,储存大于4g,有root权限最好)Google Play应用商店科学上网工具开始安装下载termux首先启用科学上网环境,打开Google Play应用商店搜索Termux(该版本较低,可以去F-Droid或者gothub下载),下载安装,安装后打开(期间保持科学网络环境)也可以去github下载:https://github.com/termux/termux-app/actions/找到最新构建的版本,选择对应版本下载打开后会加载几秒钟,随后会进入初始界面(如下图),此时可以关闭科学上网环境使用前非常重要的一步:给Termux换源,并更新软件包。步骤如下:在较新版本中,官方提供了图形化界面换源方式,可以快速更换,缺点是源站固定无法修改,日常足够使用图形化换源界面如图所示在Termux中输入指令 termux-change-repo 并回车,将会进入需要更换的。库列表一般换源只需要更换主仓库(Main repository)即可,空格可以选择取消选择要更换的仓库,默认主仓库是被选择状态选择后直接回车,进入选择镜像源列表。使用“↓”移动并用空格选择到BFSU源,然后回车即可更换并触发update。这个是国内的北京外国语大学开源软件镜像站,在软件更新、安装时速度会快上不少。在运行update时可能会报错,因为部分软件包可能未收录原因,但也可以正常使用。如果有特殊需要或者强迫症等,可以参考下面的手动换源到其他源。也可以手动修改文件来替换源站推荐清华源(复制执行): sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list sed -i 's@^\(deb.*games stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable@' $PREFIX/etc/apt/sources.list.d/game.list sed -i 's@^\(deb.*science stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable@' $PREFIX/etc/apt/sources.list.d/science.list 清华源手动修改文件: 执行 apt edit-sources 将文件内第二行deb及后面文件删除 粘贴 deb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main 中科大源: sed -i 's@packages.termux.org@mirrors.ustc.edu.cn/termux@' $PREFIX/etc/apt/sources.list手动更换源后可以输入 pkg up 或者 apt update && apt upgrade来更新软件包,有时候会提示是否安装更新(y/n),推荐选择默认选项,如下图默认选项为N,如果有需要的话可以自行决定。更新过程较长且耗费较多流量,建议wifi下更新常用软件安装到了这一步,Termux本身已经配置完成了,你可以在termux上练习使用linux操作,也可以在上面安装相关环境来部署一些小项目。如果手机有root,可以执行sudo权限,需要先安装sudo包:pkg install tsu脚本编程环境软件包:nodejs、python,推荐使用独立配置环境方法,当然如果没有特殊需求也可以直接使用apt install python或者apt install node,执行后输入y即可安装。经测试,从apt安装的版本中,nodejs版本为14.15.4;python版本为3.9.7也可以在终端里面安装java环境,可以参考我之前博客写的树莓派安装java教程,同为arm架构,安装过程大同小异。如果喜欢折腾,甚至可以在termux安装xfce4桌面,然后通过配置vnc来远程连接termux的可视化桌面当然,也可以在termux配置静态博客hexo,一方面可以当做本地服务器,浏览器访问127.0.0.1即可访问自己的网站;另一方面,也可以在本地折腾好后打包到服务器。termux可以直接ssh连接到安装linux系统的服务器。连接方式:ssh root@10.111.111.111 其中,root@表示使用root用户连接到服务器。优化termux使用termux我个人认为并非是独立的虚拟机,还是基于安卓系统操作。因此如果需要termux与系统进行文件交互,并非是难事,创建个软连接即可。(有root权限的用户还可以直接去根目录找termux内系统的/目录)首先开启termux访问手机存储的权限termux-setup-storage,然后手机会弹窗是否授权termux访问储存权限,点击确认软链接相对于文件夹的快捷方式,创建在termux的home目录,便于访问,同时也可以用文件管理器去修改文件夹内容。先用文件管理器在储存主目录创建文件夹为share(可自行修改),然后打开终端,输入ln -s /storage/emulated/0/share share即可在home目录创建share文件夹,指向主目录的share文件夹。同时,授权了储存访问权限后会在home目录生成 storage 文件夹,可以通过这个文件夹访问到几个基本文件夹,如download等在termux启动时会显示welcome to Termux! 欢迎信息,可以手动编辑nano $PREFIX/etc/motd来修改启动信息可以使用Termux-ohmyzsh来美化终端,安装sh -c "$(curl -fsSL https://github.com/Cabbagec/termux-ohmyzsh/raw/master/install.sh)" 由于github访问速度不定,可能下载较慢第一次打开脚本时会列出可调整的颜色、字体,可以随意选择一个,后续要更改颜色与字体,可以输入~/.termux/colors.sh修改颜色或者~/.termux/fonts.sh修改字体其他美化脚本推荐:bash