首页
碎碎念
东邻西舍
本站信息
前来吐槽
统计
Search
1
openwrt系统上安装第三方插件
26,761 阅读
2
ubuntu下zerotier的基本使用教程
13,581 阅读
3
给小米R3G更换系统:从padavan刷成openwrt
12,849 阅读
4
openwrt使用第一步:设置上网拨号
10,744 阅读
5
openwrt无线中继功能:实现不插网线就能上网
9,522 阅读
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
登录
Search
标签搜索
Linux
建站
Java
踩坑实录
Ubuntu
MySQL
折腾搞机
HTML
CSS
MyBatis
Spring
SQL
Nginx
路由器
树莓派
OpenWrt
Maven
Git
Win10
只言片语
知识分子没文化
累计撰写
83
篇文章
累计收到
152
条评论
首页
栏目
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
页面
碎碎念
东邻西舍
本站信息
前来吐槽
统计
搜索到
20
篇与
的结果
2021-05-21
typecho设置伪静态规则
环境说明: Nginx:1.18 ubuntu:20.04 博客框架:typecho 1.1-17.10.30 前言 记得当时我自己手动搭建好LNMP环境,安装上typecho之后,满心欢喜的打开网站首页,却发现除了首页其他的页面都是打不开的,全部显示“403”。当时还困饶了我大半天(后来才知道是没有正确设置伪静态的原因),一度以为是环境没搭好,重置服务器再搭环境这么试了好几次,还是一样的错误。后来,直到在其官方文档里看到服务器设置伪静态的方法,就尝试了一下,果然有用。(不过很奇怪的是在官方文档中是找不到这个文档页面的,当时还是在搜索引擎中才找到的) 以下为整个过程: 正文 首先找到网站的nginx配置文件,像我这样手动安装nginx的话,配置文件应该在/etc/nginx/site-enabled目录下面。在配置文件中加入以下的配置信息: if (-f $request_filename/index.html) { rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php) { rewrite (.*) $1/index.php; } if (!-f $request_filename) { rewrite (.*) /index.php; } 保存文件之后重启Nginx服务器: sudo nginx -s reload 然后进入博客的后台(域名/admin/),依次点击“网站设置”->“永久链接”->“是否使用地址重写功能”,选择“启用”,然后下面会有错误提示,不用管直接在下面打对勾,强制启用。 现在再访问网站,其他页面就可以打开了。 最后附上一些安装typecho博客过程中其他可能会出现的问题,转自服务器环境设置 - Typecho Docs : 1. 无法登录后台,出现"405, method not allowed" 这主要是由于nginx的固有bug导致,因为typecho使用的是静态化地址,而nginx 0.7之前的版本是不允许对静态地址做post请求的,所以会出现这个错误。 解决方法 升级nginx至0.7或者0.7以上的版本即可 2. 无法登录后台,点击前台链接或者后台登录时出现"404, not found" 这是nginx的设置时没有注意支持pathinfo导致的,具体关于php pathinfo的信息可以在网上搜索到。 解决方法 一般的出现这种情况时,nginx.conf里的的location设置都是类似这样 location ~ .*\.php$ 要支持pathinfo,要改成 location ~ .*\.php(\/.*)*$ 然后在location里加上 set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name;fastcgi_param PATH_INFO $path_info; 在某些老版本的php里面,可能还要打开php.ini里的cgi.fix_pathinfo cgi.fix_pathinfo = 1
2021年05月21日
2,111 阅读
0 评论
0 点赞
2021-04-04
免费的网站运行状态监控工具——UptimeRobot
目录: 前言 一、将网站添加到监控列表 二、获取监控网站的api 三、修改项目文件 前言 这是我利用UptimeRobot搭建的网站状态监控站:https://status.wlplove.com UptimeRobot是国外的一个网站监控服务,添加网站到监控列表之后,可以24小时监控网站的运行状态,当网站无法访问时会立即通知用户。该服务提供了免费和付费两个版本,免费版的服务是5分钟检测一次,这个频率对于我的个人网站来说已经足够,所以就不考虑付费了(白嫖怪嘤嘤嘤)。 设置了监控服务之后,在UptimeRobot网站可以查看网站的监控状态,但是配置起来还挺麻烦的,访问速度也不快。因此不使用这种方式,而是基于官方提供的API,在本地搭建一个页面来显示网站的运行状态。 要用到的是github上一个基于UptimeRobot API的项目。 这是项目的github地址:https://github.com/yb/uptime-status 将这个项目clone拉取到本地。 一、将网站添加到监控列表 进入UptimeRobot官网,使用邮箱注册一个账号 之后登陆,点击“Go to Dashboard”,进入监控仪表盘 点击左上角“Add New Monitor”。按照如下设置给自己的网站添加监控: 二、获取监控网站的api 在仪表盘界面点击“My Setting”: 往下找到“Read-only API Key”选项,点击最后一行的“Create the read-only API key”,创建一个API key,然后复制下这个API,后面会用到这个API key。 三、修改项目文件 打开刚才从github上拉取下来的项目文件夹,我们要修改其中的“config.js”这个文件,只需要修改“SiteName”、“SiteUrl”、“ApiKeys”这三项,,前两项就是网站名和网站链接,第三项改成上一步复制的Api Keys,最后还有一个项是“Navi”,是指页面右上角的导航栏菜单项,改不改都行,不影响前面的显示。这个具体的修改细则作者已经在注释中说的很详细了。 整个修改完之后别忘了保存,然后打开 “index.html”,就能看到网站的运行状态了,大概是这样: 接下来把整个项目文件扔到网站的目录下,就算是大功告成了。
2021年04月04日
989 阅读
0 评论
0 点赞
2021-03-23
在网站的下方添加站点运行时间
在网站的下方添加站点运行时间 目录: 在网站的下方添加站点运行时间 1.修改function.php文件 2.修改footer.php文件 环境说明: 博客框架:Typecho V1.1-17.10.30-release 主题:Joe 4.7.7 系统:ubuntu20.04 我的博客目前在用的是 Typecho 框架 + Joe 主题。目前(截止2021 年 3 月)已经更新到了 6.1.0 版本,新版本较旧版本(4.x)在 UI 界面上整体变化不大,主要是多了不少细节,但是同时在设置选项里也阉割掉了不少之前可以设置的项,以及我很喜欢的文章归档功能也没了,所以在新版本主题没有稳定版之前先保持观望状态。可以我又十分眼馋新版本里加入的显示站点运行时间的功能,就去网上找到了些资料,所以有了这篇博客。 2021.07.03 - 更新: 新版本 7.3.0 发布,还是升级了主题,所以本篇问题终结。 以下的方法理论上来说也是适用于wordpress框架的博客,但是由于精力有限(不是我懒),只在 Typecho 框架的 Joe 主题上成功实行,所以本篇博客只讨论 Typecho 的情况。建议在折腾之前生成一次服务器快照,在修改不合适的时候可以回滚到之前的状态。 下面为具体的实施方法: 1.修改function.php文件 进入当前使用的 Typecho 主题的所在目录,找到 function.php 文件,进行编辑。 直接划到文件末尾,找到“ ?> ”结束标志,在结束标志前将以下代码粘贴进去(注意代码格式): // 设置时区 date_default_timezone_set('Asia/Shanghai'); /** * 秒转时间,格式 年 月 日 时 分 秒 * */ function getBuildTime() { // 在下面按格式输入本站创建的时间 $site_create_time = strtotime('2020-11-29 00:00:00'); $time = time() - $site_create_time; if (is_numeric($time)) { $value = array( "years" => 0, "days" => 0, "hours" => 0, "minutes" => 0, "seconds" => 0, ); if ($time >= 31556926) { $value["years"] = floor($time / 31556926); $time = ($time % 31556926); } if ($time >= 86400) { $value["days"] = floor($time / 86400); $time = ($time % 86400); } if ($time >= 3600) { $value["hours"] = floor($time / 3600); $time = ($time % 3600); } if ($time >= 60) { $value["minutes"] = floor($time / 60); $time = ($time % 60); } $value["seconds"] = floor($time); //在下面可以修改站点运行时间的文字说明和颜色等 echo '本站点运行了<span class="btime" style="color:#6495ED">'.$value['years']. '年'.$value['days']. '天'.$value['hours']. '小时'.$value['minutes']. '分</span>'; } else { echo ''; } } 这段代码里自行修改站点的运行时间以及时间的文字提示,具体修改位置在注释中也有说明,修改完保存。 2.修改footer.php文件 在 Joe 主题中,footer.php 文件在主题目录下的 public 文件夹中,其他主题就不一定了。(反正就是写页脚的那个 php 文件) 打开文件,调用刚才新添加的函数: <?php getBuildTime(); ?> 当然,添加位置决定了运行时间在下方的具体显示位置,我在以下的地方调用了这个函数: 保存之后,刷新之后,就可以查看到效果了,显示位置为页脚的右边:
2021年03月23日
2,152 阅读
0 评论
0 点赞
2021-02-16
收集几个常用的搜索引擎网站收录入口
网站建立好之后,流量不可能立即就有,除了网站自身内容要优秀之外,还得想点其他办法来吸引流量,因为有时候“酒香也怕巷子深”。让搜索引擎去收录我们的网站有时候就是一种重要的引流途径,甚至对于我这种不善于做也懒得做广告宣传的来说就是唯一的引流途径,所以让搜索引擎来收录网站就显得很重要了。下面是我收集的几个常用搜索引擎的网站收录入口: 百度:https://ziyuan.baidu.com/linksubmit/url 谷歌:https://www.google.com/webmasters/tools/submit-url 微软必应:https://www.bing.com/webmasters/homepage 搜狗:http://zhanzhang.sogou.com/index.php/sitelink/index 360搜索:http://info.so.com/site_submit.html
2021年02月16日
1,345 阅读
1 评论
0 点赞
2021-02-07
免费的泛域名证书——Let's encrypt证书
目录: 安装之前 1.安装acme.sh脚本 2.获取域名服务商的DNS api 3.生成证书 4.续签证书 5.问题及注意事项 5.1.安装脚本时提示加载 api 脚本失败 5.2.添加 TXT 解析记录失败 5.3.申请证书时卡在验证步骤 5.4.注意事项 环境说明: Linux:ubuntu 20.0.4 nginx:1.18 域名服务商:阿里云 安装之前 关于如何给 Nginx 服务器安装 SSL 证书,在之前的博客 为Nginx服务器安装SSL证书实现站点的HTTPS访问 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) 这一篇中写过,里面详细介绍了申请到安装的一系列流程,只不过,上一篇是以申请阿里云的免费单域名证书为例来介绍SSL证书的安装,而本篇则主要来详细介绍一下泛域名证书(也叫通配符证书)的申请。 如果你不明白单域名证书与泛域名证书的区别,那么可以看看这篇:通配符ssl证书与单域名、多域名版的区别,通配符证书有哪些品牌呢?。 简单来说,单域名证书只适用于单个三级域名,而泛域名证书适用于二级域名以及二级域名下所有带前缀的的三级域名。 阿里云、腾讯云等平台的单域名证书很容易就能免费申请到,但是泛域名证书普遍都是收费的。对于个人来说,如果需要使用泛域名证书,也有免费的渠道可以申请到,那就是 Let's encrypt 签发的泛域名证书。 可以用来申请 Let's encrypt 证书的工具太多了,官网文档上列出来的就有几十种,本篇博客使用 acme.sh 脚本来申请 Let's encrypt 证书。 1.安装acme.sh脚本 这是其 Github 项目链接:https://github.com/acmesh-official/acme.sh 官方说明文档:安装脚本-英文说明、中文说明 官方文档中安装脚本有这么几种方法: 从https://get.acme.sh上安装: curl https://get.acme.sh | sh 或者: wget -O - https://get.acme.sh | sh 从github安装: curl https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | sh 从github上克隆整个项目: # 这一步要用到git,安装过的可以忽略,没有安装的用以下命令安装git: sudo apt install git # 克隆项目目录 git clone https://github.com/acmesh-official/acme.sh.git # 进入克隆完成的目录 cd acme.sh # 给脚本文件执行权限 chmod a+x acme.sh # 运行脚本文件,这个邮箱用来接收证书续订的通知,不可省略 ./acme.sh --install --accountemail [邮箱] 1.执行脚本时,如果碰到报错: /usr/bin/env: ‘sh\r’: No such file or directory 可尝试这个方法:Linux系统下运行bash脚本提示/usr/bin/env: ‘bash\r’: No such file or directory - Cqlismy - 博客园 (cnblogs.com) 2.关于安装时acme.sh的一些高级选项及其用法: --home:自定义安装 acme.sh 的目录. 默认情况下安装在 ~/.acme.sh。 --config-home:设置一个目录来保存证书、密钥、配置等文件,默认情况下,保存在 --home。 --cert-home:保存证书的目录,默认情况下,保存在 --config-home。 --accountemail:用来注册 Let's Encrypt 账户的邮箱,通过这个邮箱来接收证书续订通知的邮件。 --accountkey:保存帐户私钥的文件,默认情况下,保存在 --config-home。 --user-agent:访问 Let's Encrypt 服务器时的浏览器标识。 3.脚本在安装的过程中,做了3件事: 复制 acme.sh 到 HOME 目录($HOME):~/.acme.sh/ 之后所有生成的证书也会放在这里 创建别名:acme.sh=~/.acme.sh/acme.sh 创建 cron 每日任务去检查是否有证书需要更新 如: 0 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null 我在安装的时候,前两种方法都不成功,只有第三种方法管用。所以根据自身情况选择一种方法安装即可,但是用第三种方法的时候要记得克隆完项目之后执行脚本。 如果安装完成之后,使用 acme.sh 命令时提示找不到命令,则需要重新加载一下环境变量: source ~/.bashrc 接下来,我们需要来验证我们对这个域名的所有权,因为很容易就能想到,SSL 证书签发机构肯定不能随意签发证书。 通常的验证方式有两种: 文件验证:需要在网站根目录下放置一个文件,来验证域名所有权 DNS验证:给域名添加一条 TXT 解析记录,也可以用来验证域名所有权 建议使用 DNS 验证,这种方式的好处是,不需要任何服务器,不需要任何公网 IP,只需要 DNS 的解析记录即可,并且如果有域名服务商的DNS api ,甚至都不需要我们手动添加 TXT 解析记录,脚本会自动完成添加解析记录的过程,验证完成之后还会聪明地删掉解析记录。 2.获取域名服务商的DNS api 因为博主只有阿里云域名,没有其他服务商那里的域名,这里以阿里云为例来说明如何获取 api。 进入 阿里云AccessKey管理界面 并登录,点击左上角创建 AccessKey,就会弹出一个页面,上面是创建出来的 AccessKey,将其复制下来。 关于 api 的使用方法,官方文档 How to use DNS API 说明的很详细,可以自己查阅,根据自己的域名商选择对应的就行。阿里云对应的是文档中第 11 个,那么按照文档中的方法,在命令行中输入: # 设置环境变量,对应的等号后面换成自己的key和secret,双引号别丢了 export Ali_Key="key" export Ali_Secret="secret" 3.生成证书 下面这一步就很简单了,根据官网文档 dnsapi · acmesh-official/acme.sh Wiki (github.com),一句命令就能签发证书: acme.sh --issue --dns dns_ali -d *.langp.wang -d langp.wang 上面这句命令适用于阿里云平台的域名,其中的 langp.wang 改为需要签发证书的域名即可,后面的 -d *.langp.wang 参数表示生成适用于所有三级域名的泛域名证书,当然也可以改成 -d langp.wang 来生成单域名证书,或者两个参数都加上也可以。 证书如果签发成功,会有“success”字样提示,末尾处会输出生成的证书文件的位置与名称: 根据官方文档,对应的秘钥文件是xxx.key,证书文件是fullchain.cer,接下来就可以安装证书了。Nginx 服务器安装 SSL 证书的方法可以参考我的另一篇博客:为Nginx服务器安装SSL证书实现站点的HTTPS访问 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com)。 4.续签证书 签发好的泛域名证书是三个月的期限,过期了需要重新签发,才能继续使用: acme.sh --renew -d *.langp.wang -d langp.wang --force 同样的,将命令中的 langp.wang 改为续签证书的域名即可。 5.问题及注意事项 5.1.安装脚本时提示加载 api 脚本失败 脚本文件在上传到服务器之前在 windows 本地被打开过了,其格式被改变,在 Linux 系统中执行时便出现报错。 可尝试这个方法:Linux系统下运行bash脚本提示/usr/bin/env: ‘bash\r’: No such file or directory - Cqlismy - 博客园 (cnblogs.com),或者重新下载一次脚本文件。 5.2.添加 TXT 解析记录失败 大概率是 DNS api 的问题。可尝试换一个 api,然后修改 .acme 文件夹下的 acme.conf 文件中的 api。 5.3.申请证书时卡在验证步骤 解决办法: 申请之前执行这条命令: export ACME_USER_WGET=1 上个办法如果无效,那么可能是由于申请失败的次数太频繁,被加入了黑名单,等待一两天之后再申请 5.4.注意事项 Nginx 的配置 ssl_certificate 使用生成的 fullchain.cer ,而非 <domain>.cer ,否则会报 Chain issues Incomplete 错误 证书续签时,直接在原来的脚本文件目录上执行签发命令,可以不用执行设置 api 的命令。前提是 api 依然有效 更新完本地证书之后,需要重载 Nginx 配置文件: nginx -s reload # 或者 nginx -s force-reload 服务器的证书更新之后,CDN 服务也需要更新证书
2021年02月07日
1,953 阅读
0 评论
0 点赞
1
2
3
4