{"version":"https://jsonfeed.org/version/1.1","title":"another jinmo's blog","home_page_url":"https://blog-jinmo-com.pages.dev","feed_url":"https://blog-jinmo-com.pages.dev/json/","description":"","icon":"https://r2.88208820.xyz/blog-jinmo-com/production/images/channel-5ca30c83bb30a0142c51b595de069a15.jpg","favicon":"https://blog-jinmo-com.pages.dev/assets/default/favicon.png","authors":[{"name":"Jinmo"}],"language":"zh-cn","items":[{"id":"5inVTwGHy7v","title":"网站证书更新","url":"https://blog.88208820.xyz/i/gengx-5inVTwGHy7v/","content_html":"<p>网站证书又到期了，不想一次次的手动更新证书了，于是写了一个 bash 脚本更新证书并移动证书文件到 nginx 的配置文件夹，再写了一个 crontab 任务每两个月执行一遍脚本。</p><p><br></p><p>出现错误</p><blockquote>-------------------</blockquote><blockquote>执行时间: Wed May&nbsp;1 00:00:01 CST 2024</blockquote><blockquote>开始更新证书...</blockquote><blockquote>the input device is not a TTY</blockquote><blockquote>ACME 更新失败。</blockquote><p>解决方法是在使用脚本执行 docker 指令时，需要把 -it 去掉</p><p>参考链接</p><p>https://blog.csdn.net/sunmingyang1987/article/details/108877902</p><p><br></p><p><br></p><pre class=\"ql-syntax\" spellcheck=\"false\">#!/bin/bash\n\n\n\n\n# 设置域名和路径变量\n\nDOMAIN=\"jinmo.cloud\"\n\nACME_VOLUME_PATH=\"/data/acme.sh/out/\"\n\nNGINX_CONFIG_PATH=\"/data/nginx/config\"\n\nLOG_FILE=\"/usr/local/script/updateCertificat/updateCertificat.log\"\n\n\n\n\n# 在日志文件中记录执行时间\n\necho \"-------------------\" &gt;&gt; \"$LOG_FILE\"\n\necho \"执行时间: $(date)\" &gt;&gt; \"$LOG_FILE\"\n\n\n\n\n# 使用 ACME 容器更新证书\n\necho \"开始更新证书...\" &gt;&gt; \"$LOG_FILE\"\n\ndocker run --rm -v \"$ACME_VOLUME_PATH:/acme.sh\" neilpang/acme.sh --renew -d \"$DOMAIN\" --force &amp;&gt;&gt; \"$LOG_FILE\"\n\n\n\n\n# 检查更新是否成功\n\nif [ $? -ne 0 ]; then\n\n&nbsp; &nbsp; echo \"ACME 更新失败。\" &gt;&gt; \"$LOG_FILE\"\n\n&nbsp; &nbsp; exit 1\n\nelse\n\n&nbsp; &nbsp; echo \"ACME 更新成功。\" &gt;&gt; \"$LOG_FILE\"\n\nfi\n\n\n\n\n# 复制证书文件到 Nginx 配置路径\n\necho \"复制证书文件到 Nginx 配置路径...\" &gt;&gt; \"$LOG_FILE\"\n\n# 记录执行语句\n\necho \"cp ${ACME_VOLUME_PATH}${DOMAIN}/${DOMAIN}.csr $NGINX_CONFIG_PATH/\" &gt;&gt; \"$LOG_FILE\"\n\ncp ${ACME_VOLUME_PATH}${DOMAIN}/${DOMAIN}.csr $NGINX_CONFIG_PATH/ &amp;&gt;&gt; \"$LOG_FILE\"\n\necho \"cp ${ACME_VOLUME_PATH}${DOMAIN}/${DOMAIN}.cer $NGINX_CONFIG_PATH/\" &gt;&gt; \"$LOG_FILE\"\n\ncp ${ACME_VOLUME_PATH}${DOMAIN}/${DOMAIN}.cer $NGINX_CONFIG_PATH/ &amp;&gt;&gt; \"$LOG_FILE\"\n\necho \"cp ${ACME_VOLUME_PATH}${DOMAIN}/${DOMAIN}.key $NGINX_CONFIG_PATH/\" &gt;&gt; \"$LOG_FILE\"\n\ncp ${ACME_VOLUME_PATH}${DOMAIN}/${DOMAIN}.key $NGINX_CONFIG_PATH/ &amp;&gt;&gt; \"$LOG_FILE\"\n\n\n\n\n# 检查复制操作是否成功\n\nif [ $? -ne 0 ]; then\n\n&nbsp; &nbsp; echo \"复制证书文件失败。\" &gt;&gt; \"$LOG_FILE\"\n\n&nbsp; &nbsp; exit 1\n\nelse\n\n&nbsp; &nbsp; echo \"复制证书文件成功。\" &gt;&gt; \"$LOG_FILE\"\n\nfi\n\n# 重新启动 Nginx 容器\necho \"重新启动 Nginx 容器...\" &gt;&gt; \"$LOG_FILE\"\ndocker restart $NGINX_CONTAINER_NAME &amp;&gt;&gt; \"$LOG_FILE\"\n\n\n# 检查重新启动操作是否成功\nif [ $? -ne 0 ]; then\n&nbsp; &nbsp; echo \"Nginx 容器重新启动失败。\" &gt;&gt; \"$LOG_FILE\"\n&nbsp; &nbsp; exit 1\nelse\n&nbsp; &nbsp; echo \"Nginx 容器重新启动成功。\" &gt;&gt; \"$LOG_FILE\"\nfi\n\n\n\n\n# 输出执行完成的消息\n\necho \"证书更新和复制操作已完成。\" &gt;&gt; \"$LOG_FILE\"\n</pre>","content_text":"网站证书又到期了，不想一次次的手动更新证书了，于是写了一个 bash 脚本更新证书并移动证书文件到 nginx 的配置文件夹，再写了一个 crontab\n任务每两个月执行一遍脚本。\n\n\n\n\n出现错误\n\n> -------------------\n\n> 执行时间: Wed May 1 00:00:01 CST 2024\n\n> 开始更新证书...\n\n> the input device is not a TTY\n\n> ACME 更新失败。\n\n解决方法是在使用脚本执行 docker 指令时，需要把 -it 去掉\n\n参考链接\n\nhttps://blog.csdn.net/sunmingyang1987/article/details/108877902\n\n\n\n\n\n\n\n#!/bin/bash\n\n\n\n\n# 设置域名和路径变量\n\nDOMAIN=\"jinmo.cloud\"\n\nACME_VOLUME_PATH=\"/data/acme.sh/out/\"\n\nNGINX_CONFIG_PATH=\"/data/nginx/config\"\n\nLOG_FILE=\"/usr/local/script/updateCertificat/updateCertificat.log\"\n\n\n\n\n# 在日志文件中记录执行时间\n\necho \"-------------------\" >> \"$LOG_FILE\"\n\necho \"执行时间: $(date)\" >> \"$LOG_FILE\"\n\n\n\n\n# 使用 ACME 容器更新证书\n\necho \"开始更新证书...\" >> \"$LOG_FILE\"\n\ndocker run --rm -v \"$ACME_VOLUME_PATH:/acme.sh\" neilpang/acme.sh --renew -d \"$DOMAIN\" --force &>> \"$LOG_FILE\"\n\n\n\n\n# 检查更新是否成功\n\nif [ $? -ne 0 ]; then\n\n    echo \"ACME 更新失败。\" >> \"$LOG_FILE\"\n\n    exit 1\n\nelse\n\n    echo \"ACME 更新成功。\" >> \"$LOG_FILE\"\n\nfi\n\n\n\n\n# 复制证书文件到 Nginx 配置路径\n\necho \"复制证书文件到 Nginx 配置路径...\" >> \"$LOG_FILE\"\n\n# 记录执行语句\n\necho \"cp ${ACME_VOLUME_PATH}${DOMAIN}/${DOMAIN}.csr $NGINX_CONFIG_PATH/\" >> \"$LOG_FILE\"\n\ncp ${ACME_VOLUME_PATH}${DOMAIN}/${DOMAIN}.csr $NGINX_CONFIG_PATH/ &>> \"$LOG_FILE\"\n\necho \"cp ${ACME_VOLUME_PATH}${DOMAIN}/${DOMAIN}.cer $NGINX_CONFIG_PATH/\" >> \"$LOG_FILE\"\n\ncp ${ACME_VOLUME_PATH}${DOMAIN}/${DOMAIN}.cer $NGINX_CONFIG_PATH/ &>> \"$LOG_FILE\"\n\necho \"cp ${ACME_VOLUME_PATH}${DOMAIN}/${DOMAIN}.key $NGINX_CONFIG_PATH/\" >> \"$LOG_FILE\"\n\ncp ${ACME_VOLUME_PATH}${DOMAIN}/${DOMAIN}.key $NGINX_CONFIG_PATH/ &>> \"$LOG_FILE\"\n\n\n\n\n# 检查复制操作是否成功\n\nif [ $? -ne 0 ]; then\n\n    echo \"复制证书文件失败。\" >> \"$LOG_FILE\"\n\n    exit 1\n\nelse\n\n    echo \"复制证书文件成功。\" >> \"$LOG_FILE\"\n\nfi\n\n# 重新启动 Nginx 容器\necho \"重新启动 Nginx 容器...\" >> \"$LOG_FILE\"\ndocker restart $NGINX_CONTAINER_NAME &>> \"$LOG_FILE\"\n\n\n# 检查重新启动操作是否成功\nif [ $? -ne 0 ]; then\n    echo \"Nginx 容器重新启动失败。\" >> \"$LOG_FILE\"\n    exit 1\nelse\n    echo \"Nginx 容器重新启动成功。\" >> \"$LOG_FILE\"\nfi\n\n\n\n\n# 输出执行完成的消息\n\necho \"证书更新和复制操作已完成。\" >> \"$LOG_FILE\"\n","date_published":"2024-04-18T10:01:31.261Z","_microfeed":{"web_url":"https://blog-jinmo-com.pages.dev/i/网站证书更新-5inVTwGHy7v/","json_url":"https://blog-jinmo-com.pages.dev/i/5inVTwGHy7v/json/","rss_url":"https://blog-jinmo-com.pages.dev/i/5inVTwGHy7v/rss/","guid":"5inVTwGHy7v","status":"published","itunes:episodeType":"full","date_published_short":"Thu Apr 18 2024","date_published_ms":1713434491261}}],"_microfeed":{"microfeed_version":"0.1.2","base_url":"https://blog-jinmo-com.pages.dev","categories":[],"subscribe_methods":[{"name":"RSS","type":"rss","url":"https://blog-jinmo-com.pages.dev/rss/","image":"https://blog-jinmo-com.pages.dev/assets/brands/subscribe/rss.png","enabled":true,"editable":false,"id":"U84VaAjz8yo"},{"name":"JSON","type":"json","url":"https://blog-jinmo-com.pages.dev/json/","image":"https://blog-jinmo-com.pages.dev/assets/brands/subscribe/json.png","enabled":true,"editable":false,"id":"c35eKAH9HxB"}],"description_text":"","copyright":"©2024","itunes:type":"episodic","items_sort_order":"newest_first"}}