首页
碎碎念
东邻西舍
本站信息
前来吐槽
统计
Search
1
openwrt系统上安装第三方插件
27,291 阅读
2
ubuntu下zerotier的基本使用教程
14,544 阅读
3
给小米R3G更换系统:从padavan刷成openwrt
13,424 阅读
4
openwrt使用第一步:设置上网拨号
11,298 阅读
5
openwrt无线中继功能:实现不插网线就能上网
10,073 阅读
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
登录
Search
标签搜索
Linux
Java
建站
踩坑实录
Ubuntu
折腾搞机
MySQL
MyBatis
CSS
HTML
Spring
SQL
Nginx
OpenWrt
树莓派
路由器
Maven
SSL
Git
Windows
知识分子没文化
累计撰写
85
篇文章
累计收到
155
条评论
首页
栏目
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
页面
碎碎念
东邻西舍
本站信息
前来吐槽
统计
搜索到
85
篇与
的结果
2021-03-22
【踩坑实录】Java运行程序报错“Exception in thread main java. lang. NullPointerException”
环境说明: 开发环境:JDK 1.8 IDEA 系统:Win10 专业版 问题 大概是这样:在一个Student类中定义了一个静态对象数组以及其他的数据成员和成员方法,其中某个成员方法中包含对这个对象数组的部分操作。在main方法中申明一个Student的对象,通过Student对象调用这个方法操作静态数组,然后运行结果报错: 原因 问题原因其实很简单,就是没有对这个数组进行初始化操作,即当前只存在数组的声明,系统只为二维数组对象的引用变量分配了空间,并没有创建相应的数组对象 。那么在相关的方法中,自然无法对这个看似存在但实际却找不到影儿的数组进行操作,所以就会报错了。 解决办法 在类中再添加一个成员方法init(),给这个对象数组进行内存空间的申请及初始化: 然后在main方法中申明对象以后,首先调用init()方法对对象数组进行初始化。 其实刚开始想直接在重载的构造方法中调用这个函数,这样的话就不用手动调用了,在初始化对象时就会同时完成对象数组的初始化,但仔细一想好像也不行,每初始化一个对象就会重新初始化数组,这样就会造成原来数组的信息丢失。所以还是老老实实手动调用吧。
2021年03月22日
1,499 阅读
0 评论
0 点赞
2021-03-17
给小米R3G更换系统:从padavan刷成openwrt
目录: 前言 1.进入Breed控制台 2.上传系统文件 3.修改环境变量 一些注意事项 环境说明: 设备:小米R3G 系统:openwrt R20.5 前言 之前在Xiaomi R3G上刷入了padavan系统,用了一段时间,又想再尝试一下大名鼎鼎的openwrt系统。但是网上查找出来的资料都是原厂固件刷openwrt或者padavan的帖子,很少有介绍从padavan刷成openwrt的帖子(或者是我查找的不完全?),也不知道是不是大神们觉得太简单了而不写,总之资料很少。借助网上不多的资料,我整理出了一个方法,并且在我的路由器上成功实现。遂用此篇博客来记录一下。 附上一些官方资料: openwrt官网:https://openwrt.org/ openwrt官方支持的设备列表:https://openwrt.org/zh/toh/start 自行编译openwrt: https://oldwiki.archive.openwrt.org/zh-cn/doc/howto/build https://oldwiki.archive.openwrt.org/zh-cn/doc/howto/buildroot.exigence 事先说明,要玩路由器,给路由器刷breed固件是必不可少的一个步骤。breed就像手机刷机时刷的Recovery,能保证路由器即使在系统坏了的情况下,也能刷入其他的系统,而不是变砖。网上刷入breed的方法很多,因此本篇博客不再介绍如何刷入breed控制台。 以下为刷机的整个过程: 1.进入Breed控制台 将路由器的“lan”口通过网线连接到电脑,给路由器断电; 用卡针或者牙签按住路由器后面的复位键(一定要是在路由器不通电的情况下); 然后给路由器插电开机,插上电先别急着松开卡针,按住复位键大概十秒左右,注意路由器指示灯的状态,当路由器指示灯开始亮起紫色的灯(蓝色+黄色),一秒之后变成蓝灯,常亮一两秒,再变成紫灯开始闪两下,最后成蓝灯一直闪烁。此时松开复位键; 在电脑浏览器里访问“192.168.1.1”这个地址,如果顺利的话就能看到Breed控制台界面了: 2.上传系统文件 关于刷机用到的固件,下载链接放在文末。 找到左边菜单列表的“固件更新”,选择常规固件选项卡下的固件选项,点击“选择文件”按钮,选择要上传的文件。并将”闪存布局“更改为”小米路由器3G固件2“ 选择一个版本的固件,这里以“2020.05.30-Lienol-OpenWrt 稳定版”为例。先选择该目录下的“openwrt-ramips-mt7621-xiaomi_mir3g-initramfs-kernel.bin”这个文件,上传进行更新。 3.修改环境变量 等待固件更新,途中路由器会自动重启,差不多四五分钟之后,路由器指示灯变成蓝灯常亮时,浏览器访问“192.168.1.1”,此时进入的应该还是breed控制台,要进入openwrt界面,需要进行一个类似于电脑更改启动项的操作。直接添加一个环境变量即可。 在左侧菜单中找到“环境变量编辑”,添加一个环境变量,名称为“xiaomi.r3g.bootfw”,值为2。 如果值为1则进入breed控制台,值为2的时候才会进入openwrt系统。 添加保存完成之后,再次重启路由器即可,开机后就会进入openwrt的管理界面了: 默认密码是password或者为空,版本不同,默认密码可能会不同。 进行到这并不代表刷机完成,此时的系统还是安装在内存中的,断电就没有了,所以需要再更新一次系统,将系统写进Flash闪存中。在界面中找到上方“系统”选项卡中的“备份/升级”选项 找到“刷写新的固件”,点击“选择文件”,在打开的窗口中选择“openwrt-ramips-mt7621-xiaomi_mir3g-squashfs-sysupgrade.bin”文件 选好之后点击右边刷写固件按钮,等待刷写完成。启动之后就可以正常使用了,关于启动之后给openwrt设置上网可参考这篇文章:openwrt使用第一步:设置上网拨号。 一些注意事项 如果要更换其他版本的openwrt时,建议先在breed中更新,再到openwrt中刷写固件,而不是直接在openwrt中进行固件的更新。这样可能会导致更新后的openwrt界面的响应速度异常的慢。 本文提供的方法在博主的路由器上实现起来完全可行,是否在你的路由器可行请自行甄别,在刷机过程中造成的损坏博主概不负责,望周知。 附固件下载链接: 阿里云盘:https://www.aliyundrive.com/s/5uobjaynQyB 123云盘:https://www.123pan.com/s/jvuKVv-4apOd (由于相关云盘的分享限制,不保证下载链接一直可用,如果链接不可用时请给博主留言,博主将尽快更新链接) 本文用到的相关固件资源来自网友自行编译分享,如有侵权,请给博主留言删除!
2021年03月17日
13,424 阅读
8 评论
0 点赞
2021-03-12
ubuntu系统中的文件权限管理总结
目录: 思维导图 1.ubuntu中的文件权限介绍 1.1 用户组 1.2 文件权限等级 2.查看文件权限 3.修改文件权限 3.1 用字母表示权限等级 3.2 用数字表示权限等级 思维导图 注:修改文件权限等操作需要一定系统权限,本文的命令默认是在root用户下进行的,如有必要,请在命令前加入sudo 来提升权限。 1.ubuntu中的文件权限介绍 1.1 用户组 对于一个文件或者文件夹来说,与其相关的用户组分为三类: user:该文件或文件夹的拥有者 group:与user在同一个用户组的用户 other:除了user和group的其他所有用户 1.2 文件权限等级 文件权限等级有三种,分别为读、写、执行。有两种表示方法: 用字母表示: 读:r(read) 写:w(write) 执行:x(execute) ——假如这个文件可执行的话 无权限:-(可以理解为占位符) 这个很好理解,表示形式就是对应英文单词的首字母。假设有文件test.txt,user有这个文件的读、写、执行权限,group有读、写权限,other有执行权限,那么它的文件权限就可以用这种方式表示为:rwxrw- - -x。这串字符分为三部分,分别表示了user、group、other这三类用户的权限情况: 用十进制数字表示: 读:4 写:2 执行:1 无权限:0 那么问题来了,表示每个权限的数字为什么是”4“、 ”2“、 ”1“,而不是其他数字呢?其实用二进制来解释就很好理解了。在二进制中只有“0”和“1”两种取值,相对应到文件权限上,有权限是“1”,无权限是“0”。假设用户同时具备读、写、执行三种权限,那么按照读、写、执行的顺序排列,可得到一个二进制数“111”,将这个二进制数转换成十进制数就变成了“421”,所以就可以得到每种文件权限对应的十进制数字了,即:读(4)、写(2)、执行(1)。 以上是数字表示单个权限的情况,当数字来表示组合权限时稍显麻烦,但也并不算复杂。举个栗子说明权限表示的规则:还是文件test.txt,三类用户的权限不同,user有这个文件的读(4)、写(2)、执行(1)权限,group有读(4)、执行(1)权限,other只有这个文件的执行(1)权限,用数字来表示就是:“751”。即每位数字是该用户所拥有权限的和,看下图: 综上所述,这两种方法用一个表格总结下来就是这样: 读(read) 写(write) 执行(execute) 字母 r w x 十进制数字 4 2 1 2.查看文件权限 # 查看文件权限, ls -l [文件名] # 查看文件夹权限 ls -ld [文件夹名] 比如查看当前目录下的test.txt这个文本文件的权限信息: ls -l test.txt 结果如下,图中红框部分就是文件权限信息: 查看当前目录下的test文件夹的权限信息: ls -ld test 执行结果: 最前面的“d”表示文档类型,即文件夹,其他的还有: -:普通文档 l:链接文件(link file); b:装置文件里面的可供储存的接口设备(可随机存取装置); c:装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。 后面对应的每一位上,有权限就用权限对应字母表示,若没有权限则用”-“来占位。 查看文件权限时,若省略后面的文件名参数,命令结果就会显示当前目录下的所有文件及文件夹的权限等信息。 查看文件夹权限时,省略文件名参数,命令的执行结果会变成显示当前所在的文件夹的权限信息。 基本介绍完了,接下来就是如何修改文件权限。 3.修改文件权限 修改文件的权限用chmod命令,对于一个文件来说,文件权限的表示方法有字母和数字两种,所以修改权限时就可以有两种方法。 3.1 用字母表示权限等级 举几个例子来说明,假设有一个文件“test”: # 增加group用户的可执行权限 chmod g+x test “+”表示在原来的基础上增加权限 # 删除other用户的可写权限 chmod o-w test “-”表示在原来的基础上删除权限 # 给user用户给test文件的可写、可读、可执行权限 chmod u=rwx test “=”可以给用户直接赋予多个权限 # 假设有文件test,给全部用户增加这个文件的可写权限 chmod a+w test a在这里表示全部用户(user+group+other) 综上来说,这种方式下命令可以简单概括为: chmod [用户]+/-/=[权限] [文件/文件名] [用户]有u(user)、g(group)、o(other)和a(user+group+other) [权限]有r(read)、w(write)、x(execute) 3.2 用数字表示权限等级 继续举例子说明: # 修改文件“test1”的权限为user读、写、执行,group可读,other可执行 chmod 741 test1 # 修改文件夹“test2”的权限为user、group、other均可读写可执行 chmod -R 777 test2 “-R”参数表示对该文件夹下所有的文件及文件夹都执行修改权限操作,即递归执行,一般适用于文件夹操作。 所以这个方式简单概括就是这样的命令形式: chmod [参数选项] [权限] [文件/文件夹] 这里要强调的是,在正式使用的服务器上,请不要给任何一个文件赋予777权限,即任何用户均可读写可执行的权限,会存在较大的安全隐患。
2021年03月12日
3,210 阅读
2 评论
1 点赞
2021-03-07
ubuntu下zerotier的基本使用教程
目录: 前言 1.安装 2.创建一个网络 3.加入一个网络 4.其他操作 (1)手动启动zerotier服务: (2)开机启动: (4)查看本机连接的网络: (5)断开当前加入的网络: 环境说明: 设备:树莓派4B 操作系统:ubuntu 20.10 zerotier版本:1.6.3 前言 zerotier官网:https://www.zerotier.com/ 官方文档:https://zerotier.atlassian.net/wiki/spaces/SD/overview 1.安装 输入以下命令在ubuntu中安装zerotier: curl -s https://install.zerotier.com | sudo bash 2.创建一个网络 首先进入zerotier官网,用邮箱注册一个账号。然后进入网络列表,点击Create A Network按钮创建一个网络,下方列表中会出现一个网络ID,点击网络ID进入即可这个网络的设置界面。 该网络的“setting”选项有如下几个项目需要设置: 其他大部分设置可以保持默认选项不做修改 3.加入一个网络 首先在要连接的Linux设备上输入如下命令加入网络,如果连接成功就会出现200的状态码提示: sudo zerotier-cli join 网络ID # 查看当前连接的网络,如果列表中出现网络号说明连接成功 sudo zerotier-cli listnetworks private属性的网络检测到新设备连接时要手动授权,需要在这个网络的控制台授权新设备连接。未授权之前设备列表是这样: 在前面的列表项上打上勾,即完成授权,设备状态变成这样: 那么这个linux设备就加入到了这个网络中,如果再往这个网络中加入一个设备,这两个设备只要保持运行zerotier且都连接到这同一个网络,即使这两个设备不在同一个局域网内,也能互相访问了。 4.其他操作 (1)手动启动zerotier服务: sudo systemctl start zerotier-one.service (2)开机启动: sudo systemctl enable zerotier-one.service (4)查看本机连接的网络: sudo zerotier-cli listnetworks (5)断开当前加入的网络: sudo zerotier-cli leave 网络ID 以上是zerotier的基本操作,本篇只涉及到Linux平台的操作,由于其他平台的zerotier都有图形化的客户端,操作起来还是比较简单的,所以不再赘述(绝对不是因为我懒)。 这里推荐B站的一个up主的视频,关于zerotier他讲的很详细,可以说是包教包会:https://www.bilibili.com/video/BV1VJ411H7Yv {bilibili bvid="BV1VJ411H7Yv" page=""/}
2021年03月07日
14,544 阅读
2 评论
2 点赞
2021-02-28
用frp实现树莓派4B的内网穿透
目录: 前言 frp是什么? 为什么使用 frp ? 1.在服务端部署frp 2.配置frp客户端 3.启动frp服务 4.连接服务 5.将frp加入开机启动 5.1服务端 5.2客户端 环境说明: 服务端设备:阿里云轻量应用服务器 服务端系统:ubuntu 20.04 客户端设备:树莓派4B 客户端系统: Debian-Pi-Aarch64 2.0_无桌面增强版-2021-01-03 前言 引用frp项目的部分官方文档对frp进行一个简单的介绍: frp是什么? frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 为什么使用 frp ? 通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括: 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。 代理组间的负载均衡。 端口复用,多个服务通过同一个服务端端口暴露。 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。 服务端和客户端 UI 页面。 这一段文档看不懂?没关系,你只需要知道frp是免费开源的内网穿透工具,这就够了。下面链接可以了解到更多: frp项目官网:https://gofrp.org/ frp的github项目地址:https://github.com/fatedier/frp frp的项目文档:https://gofrp.org/docs/ 进行frp内网穿透需要一台有公网ip的设备作为转发的服务端,本篇用阿里云服务器来作为服务端,给树莓派实现内网穿透,以下是详细步骤: 1.在服务端部署frp 用SSH连接到阿里云服务器,下载amd64架构的frp文件包: sudo wget https://github.com/fatedier/frp/releases/download/v0.35.1/frp_0.35.1_linux_amd64.tar.gz 然后用tar命令解压下载的压缩包: sudo tar -zxvf frp_0.35.1_linux_amd64.tar.gz # 文件名可能会有不同,用ls -a命令查看 进入解压后的文件夹,文件夹中包含amd64架构的服务端二进制文件和客户端二进制文件两种。由于阿里云服务器作为服务端,所以在这上面我们只用到服务端的二进制文件及对应的ini配置文件,其他的文件可以选择删除掉。 编辑frps.ini文件: sudo nano frps.ini frps.ini文件内容如下: [common] bind_port = 7000 # 默认端口为7000 其中,bind_port端口修不修改都可以,但是bind_port端口要与客户端配置文件的server_port端口相同。修改完之后ctrl +o保存,ctrl +x退出。记得要在服务器中放行bind_port端口。 2.配置frp客户端 再用SSH连接到树莓派的控制台,下载适用于树莓派的arm64架构的frp文件包: sudo wget https://github.com/fatedier/frp/releases/download/v0.35.1/frp_0.35.1_linux_arm64.tar.gz 与上一步类似,解压下载的压缩包: sudo tar -zxvf frp_0.35.1_linux_arm64.tar.gz # 文件名可能会有不同,用ls -a命令查看 同样的,文件夹中包含了服务端和客户端的两种二进制文件。树莓派作为客户端只用到客户端的二进制文件及对应的ini配置文件,其他的文件可以删除。 编辑其中的frpc.ini文件: sudo nano frpc.ini frpc.ini文件内容如下: [common] server_addr = 127.0.0.1 server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 按如下参数说明修改配置文件: server_addr:服务器的IP地址; server_port:服务器端的端口,与服务端配置文件的bind_port端口相同; local_ip:要在公网访问的本地设备的地址,这里指客户端本机,填127.0.0.1即可; local_port:本地设备要暴露的端口,即理解为提供服务的端口 remote_port:在外网的访问端口,此端口上的流量会被转发到本地设备对应的local_port端口上 还有别忘了在服务器防火墙上放行remote_port端口 配置文件中默认有一个ssh的访问配置,如果我们还想让其他的端口在外网访问到,那就可以照猫画虎来添加一个配置。比如在外网用公网ip的8888端口访问本地设备的80端口,就可以这样写: [http] # 名字自定,写在方括号里面 type = tcp local_ip = 127.0.0.1 local_port = 80 remote_port = 8888 类似的,可以根据需求添加更多的访问配置。 3.启动frp服务 设置完毕,就可以启动frp服务了。 先到阿里云服务器控制台窗口中启动服务端frp服务,在frp的目录中执行: ./frps -c ./frps.ini 再连接树莓派的控制台,启动客户端frp服务时同样在frp目录中执行: ./frpc -c ./frpc.ini 需要注意的是,一定要先启动服务端frp,再启动客户端frp。要是先启动客户端frp,就会报错: 4.连接服务 以上配置完成,就可以在外网访问本地的服务了,访问方式是:服务器的IP地址/域名:端口。此处端口为客户端配置文件中的remote_port端口。 5.将frp加入开机启动 5.1服务端 回到阿里云服务端控制台,在/etc/init.d目录下新建一个脚本文件: cd /etc/init.d # 新建脚本文件 sudo nano frp.sh 脚本文件的内容为: #!/bin/bash ### BEGIN INIT INFO # Provides: frp # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start frp # Description: start frp ### END INIT INFO # 上面一部分不可少,下面这一部分是命令内容,以exit 0结束 # /root/frp换成自己的目录,当前目录用pwd命令查看 cd /root/frp ./frps -c ./frps.ini exit 0 修改完之后ctrl +o保存,ctrl +x退出。执行以下语句给脚本文件足够的执行权限: sudo chmod 755 frp.sh # frp.sh为刚才建的脚本文件名称,这个按实际情况来写 最后再将脚本添加到开机启动就行了: sudo update-rc.d frp.sh defaults 90 # frp.sh为刚才建的脚本文件名称,这个按实际情况来写 90表示执行的优先级,数字越大表示越晚执行。 附:移除脚本命令: sudo update-rc.d -f frp.sh remove 5.2客户端 以上方法适用于部分debian系的Linux系统,所以在客户端上也是可以按照上面那种方法实现开机启动frp。可是我到树莓派上试了好像不行,经过多次尝试,基本可以确定问题是由于树莓派上安装的是树莓派爱好者基地的Debian-Pi-Aarch64系统,原来在Debian系Linux上添加开机启动的方法就不太适用了。不过在其官方文档说明中也提供了添加开机自定义脚本的方法: # 编辑脚本文件"/boot/rc-local" sudo nano /boot/rc-local 向脚本文件中添加如下命令,添加在exit 0之前: cd /home/frp ./frpc -c ./frpc.ini # "/home/frp"换成自己的frp目录 添加完之后保存退出。 这时候再分别重启服务端和客户端,frp服务就会自动运行了,不再需要手动运行。如果重启之后无法连接访问,建议再等待一两分钟,因为有可能会是其中一端的开机启动服务还未加载完全。
2021年02月28日
3,534 阅读
0 评论
0 点赞
2021-02-20
在一个Nginx服务器上实现多个网站的部署运行
目录: 1.域名解析 2.添加nginx配置文件 3.添加网站 环境说明: Linux:ubuntu 20.04 Nginx:1.18 Mysql:8.0 PHP:7.3 服务器:阿里云服务器 对于一个服务器,理论上来说在上面可以运行无限多个网站。但是,现实中往往到考虑服务器的配置,当服务器要处理的事务太多的时候,也就忙不过来了。 接下来就是如何实现的问题。在Nginx下有两种思路可以实现这个目的: 一是只需要一个域名(一级域名或者二级域名都可以),做一次域名解析即可,将域名解析到服务器IP地址,用不同的端口来实现不同网站的服务,即用同一个域名 + 端口号的方式来访问相应的网站。这种方法实现起来比较简单,修改网站配置文件里的端口即可,要开启服务器的相应端口,但是访问起来就比较麻烦了,每次访问都得加上端口号,如果不加端口号,便默认访问80端口。用域名langp.wang来图示说明: 二是全部网站都用80端口来实现访问,但是需要多个域名(或者二级域名),这种方法实现起来不算太难,访问也很方便,输入域名即可访问对应的网站,因此这篇博客主要来介绍这种方法。这种方法用域名langp.wang来举例就是这样的: 我的顶级域名是langp.wang,这个域名挂的是我的博客网站,我用一个顶级域名下的test1.langp.wang和test2.langp.wang这两个二级域名来举例子,再到服务器上添加两个网站。 1.域名解析 在阿里云域名解析控制台中添加域名解析,可以是几个不同的顶级域名,也可以是一个顶级域名下的二级域名。记录值相同,均为同一个服务器ip地址。 2.添加nginx配置文件 进入配置文件所在的目录,我的是/etc/nginx/sites-enabled,分别创建两个配置文件 # 进入目录 cd /etc/nginx/sites-enabled # 创建test1和test2,配置文件可以随便命名 touch test1 test2 然后编辑这两个配置文件,test1的内容如下: # HTTP服务配置 server { listen 80; # test1.langp.wang改为你的域名 server_name test1.langp.wang; # 存放网站文件的根目录,根据自己的情况修改 root /var/www/html/test1; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } # 加入php的配置,使服务器可以处理php网页 location ~ \.php$ { #include snippets/fastcgi-php.conf; # 使用php-fpm(或其他unix套接字): fastcgi_pass unix:/run/php/php-fpm.sock; # 使用php-cgi(或其他tcp套接字): #fastcgi_pass 127.0.0.1:9000; # 设置脚本文件请求的路径 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 引入fastcgi的配置文件 include fastcgi_params; } } test2的内容与test1的内容也差不多,区别仅仅在于server_name与root这两个参数不同,server_name是指服务器名称,填写要访问网站的域名即可,root是该网站的根目录。 # HTTP服务配置 server { listen 80; # test2.langp.wang改为你的域名 server_name test2.langp.wang; # 存放网站文件的根目录,根据自己的情况修改 root /var/www/html/test2; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } # 加入php的配置,使服务器可以处理php网页 location ~ \.php$ { #include snippets/fastcgi-php.conf; # 使用php-fpm(或其他unix套接字): fastcgi_pass unix:/run/php/php-fpm.sock; # 使用php-cgi(或其他tcp套接字): #fastcgi_pass 127.0.0.1:9000; # 设置脚本文件请求的路径 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 引入fastcgi的配置文件 include fastcgi_params; } } 编辑完之后,重启nginx服务: sudo nginx -s reload 3.添加网站 在相应的网站根目录中(上一步配置文件里设置的root后面的目录)添加网站文件,添加完成后。访问对应的域名,你就会发现打开的是不同的网站了,说明配置成功。
2021年02月20日
2,654 阅读
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,471 阅读
1 评论
0 点赞
2021-02-13
【踩坑实录】安装ubuntu+win10双系统之后,系统时间相差8小时
环境说明: ubuntu 20.04 + win10 专业版 问题表现 在笔记本上同时安装了win10和ubuntu双系统之后,发现两个系统上的系统时间相差了8个小时, 解决方法 这是我经常用的一个方法,不需要修改配置文件,只需要在系统控制台中输入: sudo timedatectl set-local-rtc 1 执行完之后重启,然后ubuntu和win10系统的时间就一致了。
2021年02月13日
901 阅读
0 评论
0 点赞
2021-02-09
openwrt使用第一步:设置上网拨号
环境说明: 设备:小米R3G 系统:openwrt R20.5 在我的另一篇博客中,我将padavan系统的小米R3G路由器换成了openwrt系统,文章地址戳:给小米R3G更换系统:从padavan刷成openwrt - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com)。 在换成openwrt系统之后,第一件事就是给路由器设置拨号上网了。一般的路由器原厂系统功能单一,拨号上网就在显眼的的地方容易找到,设置起来倒挺简单。但是openwrt功能复杂,个人感觉在整体的操作逻辑和复杂程度与很多路由器的原厂系统差别比较大,第一次在openwrt设置拨号上网费了不少事,于是想着把openwrt拨号上网的步骤写成博客,以防遗忘。 首先,进入openwrt管理页面,默认访问地址是192.168.1.1,默认密码是password,或者为空,版本不同,默认密码可能会有不同。 以上为我的openwrt管理界面,因为受不了自带的黑白配色主题,所以使用的是Argon主题。切换主题在系统->系统->语言和界面->主题选项中。 进入菜单列表中找到网络下的接口选项,点开之后,找到WAN,选择右侧的修改,界面是这样的: 默认的协议是DHCP客户端协议,将其更改为PPPoE,然后下面会有提示“确定要切换协议?”,点击切换协议 切换掉协议之后,下面会出现两个输入框,输入运营商给的宽带账号和密码,输完之后点击页面右下角的保存&应用按钮 你以为这就完了么?其实并没有,这样设置之后还是不能上网,刚才的确定按钮点击完成之后返回到了接口界面,在接口界面的右下角还有一个保存&应用按钮,再次点击这个按钮,才能使刚才的设置生效。我第一次就是踩了这样的坑,还找了半天的原因...... 到这就算是设置完成了,如果账号密码没错的话,现在应该就能联网了。
2021年02月09日
11,298 阅读
0 评论
2 点赞
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日
2,142 阅读
0 评论
0 点赞
2021-02-04
为ubuntu server20.04 连接wifi
环境说明: Linux:ubuntu server 20.04 简单的上手体验了一下树莓派的32位原生系统RaspberryPi OS之后,直接给树莓派安装了64位的ubuntu server系统,但是在为它连接wifi时,貌似用原来RaspberryPi OS系统连接wifi的方法不管用,所以在查了一些资料之后,便把ubuntu系统连接wifi的方法记录下来,以防忘记。 首先,wifi信息需要进入系统之后,在/etc/netplan的配置文件中更改: cd /etc/netplan # 进入配置文件的目录 ls # 查看配置文件名称,不同机器的配置文件名称不同 sudo nano *****.yaml # 编辑配置文件 按照以下格式补充修改配置文件: network: version: 2 ethernets: eth0: dhcp4: true match: macaddress: b8:27:eb:c6:94:8f set-name: eth0 wifis: wlan0: dhcp4: true access-points: "wifi的ssid": password: "wifi密码" 补充的部分能复制就复制,复制过去直接改成自己的wifi名称和密码就行,因为在实际输入的情况下会出现很多问题(不得不说yaml的语法是真的一言难尽),如果实在没办法去复制的话,在手动输入的情况下要注意以下几个坑: 在yaml语法规则中,要严格按照层次结构进行缩进(在命令行下缩进四个空字符就差不多是下一层); 冒号后面如果不换行的话,那么一定要空一格再输入后面的内容,比如dhcp4: true这句; 关于wifi名称,如果wifi名称不包含空格的话双引号可以省略,否则就必须把wifi名称用双引号括起来 配置完成以后,ctrl+o保存,ctrl+x退出。 # 配置好文件之后 需要执行下面这个命令,查看配置是否有错,如果有错它会自动回滚上次正确配置 sudo netplan try # 没错会让你按enter确认使用这些配置,然后执行这个命令来使配置生效 sudo netplan apply 然后再重启,等到设备连接到wifi就行了。 附上一些更详细的配置:WiFi 配置 ——ubuntu20.04 server
2021年02月04日
2,417 阅读
0 评论
1 点赞
2021-02-03
【踩坑实录】win10下在控制台中无法使用 mysql 命令:mysql : 无法将“mysql”项识别为 cmdlet、函数、脚本文件
环境说明: 系统:win10专业版 mysql 5.7 问题 win10 在使用 mysql 命令登录数据库时,出现报错信息: 解决办法 系统中如果正常安装了 MySQL 的话,没有添加 MySQL 的环境变量的话,在 MySQL 安装目录 bin 文件夹以外的路径下执行 mysql 命令的时候就会报这个错误。解决办法就是添加环境变量: 右键 “开始菜单” -> “系统” -> “高级系统设置” -> “环境变量”,向 Path 中添加环境变量,值为 MySQL 安装目录下的 bin 文件夹: D:\Program\Environment\MySQL\MySQL Server 5.7\bin 配置完之后再使用 mysql 命令时就不报错了
2021年02月03日
2,161 阅读
0 评论
0 点赞
2021-02-01
【踩坑实录】Ubuntu使用apt命令时,报错:无法获得锁(11:资源暂时不可用)
环境说明: ubuntu 20.04 问题如图: 错误原因: ubuntu终端上强制关闭正在进行的sudo apt-get install/update命令时,此apt-get进程还没有结束。如果再次运行apt-get命令安装软件时,就会出现上述错误,即有一个进程正在占据apt-get进程,由于它在运行时,会占用软件更新时的系统锁(简称系统更新锁),此时资源被锁 解决办法: 1. 方法一 杀死进程,释放系统锁 ps -e|grep apt-get 出现: 然后执行: sudo kill 15298 2. 方法二 强制解锁 sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock 3. 方法三 sudo rm /var/lib/dpkg/lock-frontend
2021年02月01日
1,524 阅读
0 评论
1 点赞
2021-01-30
为padavan安装SSL证书
为padavan部署SSL证书 目录: 为padavan部署SSL证书 1. padavan生成的证书 2. 使用第三方证书 环境说明: 设备:小米路由器 R3G 系统:padavan 设置HTTPS访问时需要SSL证书,有两种获取方法: padavan可以生成一个证书,只不过是未经浏览器认证的证书 从域名服务商申请第三方机构的证书,比如阿里云、腾讯云等 本文来详细介绍一下这两种证书的部署: 1. padavan生成的证书 进入padavan的管理界面: 选择左侧高级设置->系统管理,选择页面第二个选项卡: 此时HTTP Web服务一栏中的Web服务器协议显示为HTTP,将其更改为HTTP&HTTPS,下方就会出现Web服务器HTTPS证书一栏: 点击右边生成,弹出提示: 点击确定,就会生成证书,一两秒之后原来”生成“按钮处会闪现”Success!“字样,此时即可下拉到页面底端,应用页面设置。 再选择高级设置->防火墙,在通用设置那一页上找到如图两项: 其中第一项表示的是用HTTP方式从外网访问路由器用的端口,第二项则是用HTTPS方式,看个人意愿选择开哪个,我这里为了方便就全都开了。这里值得注意的是,第一个端口不能设置为8080或80,第二个端口不能设置为443,否则就会出现只能在内网访问,在外网却无法访问的情况,应该是电信运营商屏蔽了家用宽带的这几个端口。 设置完成后,此时还是HTTP方式访问的,再回来把Web 服务器协议改成HTTPS,再次点击应用,就切换成了HTTPS方式访问了,因为切换到了HTTPS方式访问,所以原来的页面会显示无法访问: 在原来的网址前加入”https://“,即可使用HTTPS访问路由器管理界面了,这时也就完成了SSL证书的部署。 但是使用padavan自己生成的证书时,问题也很明显,那就是访问会提示访问页面不安全: 为什么出现这样的情况呢?因为一般SSL证书都是由第三方权威机构来颁发,这样的证书是各大浏览器厂商都承认的,而padavan自己生成的证书显然不被各大浏览器厂商承认,那么浏览器就会显示这样的警告信息。所以这里更推荐用下面一种方法,部署第三方机构的证书。 2. 使用第三方证书 一般对于个人用户来说,第三方机构颁发的免费DV证书即可满足要求,比如阿里云腾讯云都可以申请到为期一年的免费单域名证书(前提是在平台上买了域名),支持续签。这里以阿里云的免费SSL证书为例说明怎样在padavan上部署第三方SSL证书。 首先登陆阿里云,前往阿里云SSL证书购买页面,按如图设置,使最后的价格为0: 点击购买,购买完成之后,自动跳转到SSL证书控制台,然后就可以为所购买的域名申请SSL证书了,申请过程省略,过程也很简单,照着提示做就可以,申请之后会提交审核,审核速度也很快,一般5分钟左右最长不超过10分钟就能审核成功。 完毕后,即可在SSL证书控制台下载SSL证书: 选择"其他",下载即可: 下载完成之后解压出的文件夹有两个文件: 跟前面一样,选择高级设置->防火墙,在通用设置那一页上找到如图两项: 其中第一项表示的是用HTTP方式从外网访问路由器用的端口,第二项则是用HTTPS方式,看个人意愿选择开哪个,我这里为了方便就全都开了。这里值得注意的是,第一个端口不能设置为8080或80,第二个端口不能设置为443,否则就会出现只能在内网访问,在外网却无法访问的情况(个人猜测是电信运营商屏蔽了80和443这几个端口)。 再回到padavan系统界面,找到Web 服务器 HTTPS 证书一栏中的 Server Certificate (required)与Server Private Key (required)两项,各点击一下打开就可以打开输入框: 将下载下来的两个文件分别用记事本打开,粘贴.pem文件中的内容到Server Certificate (required)(即第三项)的输入框中,粘贴.key文件中的内容到Server Private Key (required)(即第四项)的输入框中,对应顺序不能弄错,粘贴完成之后应用设置。同时浏览器会提示找不到页面,在原链接之前加入https://即可访问到: 链接之前变成了一把小锁,说明SSL证书部署成功。
2021年01月30日
4,272 阅读
4 评论
2 点赞
2021-01-28
ubuntu系统部署Tomcat服务
ubuntu系统部署Tomcat服务 目录: ubuntu系统部署Tomcat服务 1. 从Tomcat官网下载 2. 解压Tomcat安装文件 3.修改环境变量: 4. 修改文件配置 5. 启动Tomcat服务 6. 创建项目目录 环境说明: 操作系统:ubuntu 18.0.4 Tomcat版本:Tomcat 9 部署Tomcat时,您要确保已成功配置好了Java环境,配置Java环境请参考:Win10系统配置Java开发环境 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) 1. 从Tomcat官网下载 Tomcat官网:Apache Tomcat® - Welcome! Tomcat 9:Apache Tomcat® - Apache Tomcat 9 Software Downloads Tomcat 8:Apache Tomcat® - Apache Tomcat 8 Software Downloads Tomcat 7:Apache Tomcat® - Apache Tomcat 7 Software Downloads 这里以Tomcat 9作为例子来说明 2. 解压Tomcat安装文件 找到下载的tomcat9安装文件,解压到/usr/目录下: # 先进入/usr/目录下: cd /usr/ # 解压Tomcat安装包,这里根据自己的情况更改路径,我下载的Tomcat的路径是/home/wlp/Downloads/apache-tomcat-9.0.39.tar.gz: sudo tar -zxvf /home/wlp/Downloads/apache-tomcat-9.0.39.tar.gz 解压后的文件名为apache-tomcat-9.0.39,有点长,为方便配置,这里将文件夹名修改为Tomcat-9: sudo mv apache-tomcat-9.0.39 Tomcat-9 3.修改环境变量: 修改/etc/profile文件: sudo nano /etc/profile 在打开的页面最后加入: export CATALINA_HOME=/usr/Tomcat-9 然后ctrl + o保存,ctrl + x退出 # 使配置生效 source /etc/profile 安装好之后,Tomcat还无法访问,还需要配置两个文件 4. 修改文件配置 进入Tomcat-9安装目录: cd Tomcat-9 修改安装目录下的两个文件,允许访问主机ip地址的正则表达式: #修改webapps/manager/META-INF/context.xml: sudo nano webapps/manager/META-INF/context.xml #修改webapps/host-manager/META-INF/context.xml: sudo nano webapps/host-manager/META-INF/context.xml 打开两个文件找到以下内容: <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> 修改为: <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.\d+\.\d+\.\d+" /> 正则表达式中的点是特殊字符,需要用“\."进行转义 (\写的时候是两个,显示为一个,因为这个字符也是特殊字符) 5. 启动Tomcat服务 # 进入Tomcat安装目录下的bin文件夹中: cd bin 此时可能会出现这样的情况,如果没有即可跳过这步: 这是由于Tomcat-9文件夹读写权限不足,只要设置一下读写权限就可以了,回到上层目录,执行修改权限命令: # 返回上层目录: cd .. # 修改权限: sudo chmod 775 -R Tomcat-9 再重新进入Tomcat-9/bin目录: cd Tomcat-9/bin 运行启动脚本: ./startup.sh 成功启动Tomcat服务,此时打开浏览器输入: localhost:8080 如果前面配置没有错误的话,就会进入到Tomcat首页 6. 创建项目目录 在Tomcat的webapps目录下创建一个test文件夹,就可以作为项目的目录 # 创建test文件夹: sudo mkdir webapps/test cd webapps/test # 在里面创建一个test.html: sudo touch test.html # 编辑test.html sudo nano test.html 向test.html添加以下内容: <html> <meta charset="utf-8"></meta> <title>这是测试项目</title> <body> <h1>项目创建成功!</h1> </body> </html> 然后ctrl + o保存,ctrl + x退出 通过以下地址访问: localhost:8080/test/test.html 即可看到设置的项目文件的显示效果。
2021年01月28日
1,624 阅读
0 评论
1 点赞
1
...
4
5
6