首页
碎碎念
东邻西舍
本站信息
前来吐槽
Search
1
openwrt系统上安装第三方插件
11,243 阅读
2
ubuntu下zerotier的基本使用教程
6,125 阅读
3
给小米R3G更换系统:从padavan刷成openwrt
2,512 阅读
4
为padavan安装SSL证书
1,389 阅读
5
openwrt无线中继功能:实现不插网线就能上网
1,377 阅读
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
登录
Search
标签搜索
Linux
建站
踩坑实录
Ubuntu
Java
MySQL
CSS
折腾搞机
HTML
SQL
MyBatis
Nginx
只言片语
树莓派
OpenWrt
路由器
SSL
Maven
Git
随笔
知识分子没文化
累计撰写
78
篇文章
累计收到
63
条评论
首页
栏目
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
页面
碎碎念
东邻西舍
本站信息
前来吐槽
搜索到
20
篇与
关于建站
的结果
2022-02-12
CS1.6 服务器安装插件及优化教程
[Meting] [Music server="netease" id="167732" type="song"/] [/Meting] 目录: 一、安装插件破解服务器正版限制 1.1、安装 Metamod 1.2、安装 Rehlds 1.3、安装 reunion 二、通过安装插件增加游戏功能 ——待完成 安装 AMX Mod X 三、服务器管理 ——待完成 3.1、OP管理 3.2、正版添加人机 环境说明: 系统:Ubuntu20.04 此篇承接上篇:Ubuntu搭设CS1.6游戏服务器 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) 一、安装插件破解服务器正版限制 破解服务器的盗版限制会用到第三方插件,因此需要安装一系列框架。注意,以下的操作都是基于服务器程序文件。 1.1、安装 Metamod Metamod 是一个位于半条命引擎和半条命游戏模组之间的 plugin/DLL 管理器,允许动态加载/卸载类似模组的DLL插件,以向HL服务器或游戏模组添加功能。原 Metamod 项目在 2013 年更新了 V1.20 版本之后就断更了,目前已经过于陈旧,所以不再使用官方版本的 Metamod 框架。而是使用其他开源的非官方版本,比如 Metamod-P 与 Metamod-r。其中,Metamod-r 又算是基于 Metamod-P 改进而来,因此我们选择 Metamod-r。 安装文档:安装 · theAsmodai/metamod-r Wiki (github.com) Metamod-r V1.3.0 版本下载链接:https://github.com/theAsmodai/metamod-r/releases/download/1.3.0.86/metamod_1.3.0.86.zip 安装步骤很简单: 第一步:解压压缩包,将其中的 “addons” 文件夹上传到服务器端文件根目录的 “cstrike” 文件夹下面。 第二步:编辑 “cstrike” 文件夹下的 liblist.gam 文件,找到文件中的这一行: # Linux 找这行 gamedll_linux "dlls/cs.so" # Windows 是这行 gamedll "dlls\mp.dll" 修改为: # Linux gamedll_linux "addons/metamod/metamod_i386.so" # Windows gamedll "addons\metamod\metamod.dll" 这样就安装完了 Metamod-r,但是由于 Metamod-r 与原始 HLDS 不兼容。所以还得安装 ReHLDS。 1.2、安装 Rehlds ReHLDS 是原始 HLDS(Half-Life Dedicated Server,即半条命专用服务器) 逆向工程的结果,在开发中发现并修复了 HLDS 的许多缺陷和潜在错误。ReHLDS 项目提供了更比官方稳定的半条命专用服务器,并扩展了模组和插件的 API,并且也进行了一定程度的性能优化。 下载链接:https://github.com/dreamstalker/rehlds/releases/download/3.11.0.767/rehlds-bin-3.11.0.767.zip 安装文档:dreamstalker/rehlds: Reverse-engineered HLDS (github.com) 安装步骤也很简单,解压压缩包,用 bin/linux32 中的 “engine_i486.so” 文件替换掉根目录下的同名文件。此时尝试启动服务器程序,如果有这样的提示那就说明安装成功: 1.3、安装 reunion Reunion 是 ReHLDS 的 dproto 项目的延续。它是一个用于 Metamod 框架的插件,其作用是允许不同协议(47 和 48 no-steam)的 CS1.6 游戏客户端加入服务器。 下载链接:https://raw.githubusercontent.com/x7s/reunion/master/reunion_0.1.92.zip 解压压缩包,要用到的是 “reunion.cfg” 与 “bin” 文件夹下的文件。 第一步:在 “cstrike/addons” 文件夹下创建一个文件夹 “reunion”, Linux 端上传 bin/Linux 文件夹下的文件(是文件而不是 Linux 文件夹)到新建的这个文件夹, Windows 端同理,上传 bin/Windows 文件夹下的文件。 第二步:编辑位于 “addons/metamod” 下的 metamod 插件配置文件 plugins.ini(没有就创建一个),向其中添加如下配置: # Linux linux addons/reunion/reunion_mm_i386.so # Windows: win32 addons\reunion\reunion_mm.dll 第三步:复制 “reunion.cfg” 文件到服务器文件根目录。 安装完成后,重启服务器程序,在控制台输入 meta list 命令回车,可以查看当前运行的插件列表: >> meta list Currently loaded plugins: description stat pend file vers src load unlod [ 1] Reunion RUN - reunion_mm_i386. v0.1.0.9 ini Start Never 1 plugins, 1 running 结果显示 reunion 插件当前为运行状态,即说明安装成功。现在盗版 CS1.6 客户端就能加入服务器了。 二、通过安装插件增加游戏功能 ——待完成 Meatmod 插件列表:Metamod Plugins 安装 AMX Mod X AMX Mod X 是一个Metamod插件。AMX Mod X是半条命1的Metamod插件。它为游戏引擎及其模组提供了全面的脚本。脚本可以截获网络消息、日志事件、命令、客户端命令、设置 cvar、修改实体等。 下载链接:AMX Mod X - Half-Life Scripting for Pros! 安装文档:手动安装 AMX Mod X - AlliedModders Wiki (alliedmods.net) 第一步:解压压缩包,将 “amxmodx” 文件夹上传到 addons 文件夹下。 第二步:编辑位于 “addons/metamod” 下的插件配置文件 plugins.ini(前面应该已经创建了),向其中添加如下配置: linux addons/amxmodx/dlls/amxmodx_mm_i386.so 同样的,安装完成后,重启服务,在控制台输入 meta list 命令可查看 AMX Mod X 是否在运行。 alliedmodders/amxmodx: AMX Mod X - Half-Life 1 Scripting and Administration (github.com) AMX Mod X之系列说明(简介和安装) - 百度文库 (baidu.com) AMX Mod X之系列说明 - 百度文库 (baidu.com) AMXX命令大全 - 百度文库 (baidu.com) [课程]AMX Mod X之系列说明(简介和安装) - 豆丁网 (docin.com) AMX Mod X之系列说明_word文档在线阅读与下载_文档网 (wendangwang.com) 三、服务器管理 ——待完成 服务器相关配置文件:位于 cs1.6/cstrike 目录下,文件名为 server.cfg, 3.1、OP管理 3.2、正版添加人机 CS1.6服务器架设及终极优化教程 牛头人脚本网 (plooy.cn) linux系统架设cs1.6服务器图文教程(兼容47/48协议的non-steam) - HLDS 技术讨论区 - 点通论坛 - Powered by Discuz! (dt-club.net) CS1.6比较完美的server.cfg_uvex888_51CTO博客 设置你的显卡提高CS里的FPS 牛头人脚本网 (plooy.cn) 游戏常用参数 | 反恐精英CS1.6最全最多最广教程 (fps99.com) 参考资料: Debian10搭建CS1.6服务器-荒岛 (lala.im)(这篇博客可能需要科学上网才能看到) cs1.6服务器搭建 2021-11-30 - 王冰冰 - 博客园 (cnblogs.com)
2022年02月12日
334 阅读
0 评论
0 点赞
2022-01-25
Joe主题添加文章侧边栏目录
[Meting] [Music server="netease" id="186855" type="song"/] [/Meting] 目录: 一、安装插件 二、插件使用 2.1、启用插件 2.2、CSS文件 2.3、JS文件 2.4、修改 post.php 文件 环境说明: Typecho:正式版 V1.1-17.10.30-release Joe:V7.3.6 一、安装插件 Github 仓库链接:plugins/MenuTree at master · typecho-fans/plugins · GitHub 下载链接:https://github.com/typecho-fans/plugins/releases/download/plugins-M_to_R/MenuTree.zip 二、插件使用 2.1、启用插件 将下载好的插件放在 usr/plugins/ 目录中,确保文件夹名为 MenuTree; 激活插件,设置内可勾选“嵌入模式”与“独立模式”: “嵌入模式”勾选时,编辑文章用按钮插入或手写 < !-- index-menu -->(插入按钮功能貌似是无效的,还有注意,别照抄这个标签,我在标签的 ! 前面加了一个空格,不然它就会被解析成目录了) 标签发布即可显示目录树; “独立模式”勾选时,修改模板文件如 post.php 中写入 <?php $this->treeMenu(); ?> 也可显示。 需要注意的是,在文章中渲染出来的目录默认是没有任何样式的,所以需要我们自定义样式。 为了使目录显示为侧边栏,并且样式与 Joe 本来的侧边栏风格保持一致,这里使用“独立模式”,并用相应的 CSS 与 JS 文件来定义其样式。 2.2、CSS文件 将以下 CSS 代码保存至文件中,文件名为 menutree.css,文件放到主题目录的 assets/css 文件夹下。 .menutree { position:sticky; top:60px; width:15%; margin:15px 15px 15px 0px; /* 溢出内容添加滚动条 */ overflow-y:auto; overflow-x:auto; background: var(--background); } /** 父元素<ul>与其中的子元素<li> **/ .index-menu-item { margin: 10px 0px; } .index-menu-list { margin: 5px 0px 5px 10px; } /** 所有<a>标签 **/ .index-menu-link{ color: var(--main); transition:all 0.2s ease-in-out 0s; padding:5px 0px; } .index-menu-link:hover { color: var(--theme); text-shadow: var(--text-shadow); font-weight:500; background-color:#efefef; } /* 锚点跳转定位 */ .menu-target-fix { display: block; position: relative; /* 偏移量 */ top:-100px; } /* 在宽度小于1000px的设备上隐藏短划线,以使目录的标题正常显示 */ @media screen and (max-width:1000px) { .joe_aside__item-title > .line { display:none; } } /* 在宽度小于800px的设备上隐藏目录侧边栏 */ @media screen and (max-width:800px) { .menutree{ display:none; } } 2.3、JS文件 将以下 JS 代码保存至文件中,文件名为 menutree.js,文件放到主题目录的 assets/js 文件夹下。 /* 获取渲染好的目录的高度 */ menuHeight = document.getElementsByClassName("index-menu")[0].offsetHeight; /* 获取容器高度 */ containHeight = document.getElementsByClassName("joe_aside__item-contain")[0].offsetHeight; /* 获取容器 title 的高度 */ titleHeight = document.getElementsByClassName("joe_aside__item-title")[0].offsetHeight; /* 获取整个目录侧边栏对象 */ aside = document.getElementsByClassName("menutree")[0]; // 定义一个函数来修改目录的显示长度,从而使侧边栏能自适应目录的高度,避免出现大片空白部分 function changeMenuHeight(){ /* 调整容器高度 */ aside.style.height = titleHeight + containHeight + "px"; } // 如果目录的高度小于500px,调用函数将目录修改为实际高度,反之则将侧边栏的高度固定为500px if(menuHeight < 500){ changeMenuHeight(); } else { aside.style.height = "500px"; } 2.4、修改 post.php 文件 建议修改之前先备份 post.php 文件,如果修改失败可以随时还原回来。 总共需要修改两个地方: 导入 CSS 文件 在文件前面的导入 CSS 文件: <!-- 导入目录的css文件 --> <link rel="stylesheet" href="<?php $this->options->themeUrl('assets/css/menutree.css'); ?>"> 添加目录代码 然后在 <div class="joe_container"> 与 div class="joe_main joe_post"> 之间添加如下代码: <!-- 文章目录代码 --> <section class="joe_aside__item menutree"> <div class="joe_aside__item-title"> <svg t="1642997936013" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2169" width="128" height="128"><path d="M838.3 895.9H197.9c-53.9 0-97.7-43.8-97.7-97.7V236.7c0-53.9 43.8-97.7 97.7-97.7h640.3c53.9 0 97.7 43.8 97.7 97.7v561.4c0.1 53.9-43.7 97.8-97.6 97.8zM197.9 203.8c-18.1 0-32.9 14.8-32.9 32.9v561.4c0 18.1 14.8 32.9 32.9 32.9h640.3c18.1 0 32.9-14.8 32.9-32.9V236.7c0-18.1-14.8-32.9-32.9-32.9H197.9z" fill="#666666" p-id="2170"></path><path d="M695.1 455.2H341.2c-17.9 0-32.4-14.5-32.4-32.4s14.5-32.4 32.4-32.4h353.9c17.9 0 32.4 14.5 32.4 32.4s-14.5 32.4-32.4 32.4zM695.1 578.2H341.2c-17.9 0-32.4-14.5-32.4-32.4s14.5-32.4 32.4-32.4h353.9c17.9 0 32.4 14.5 32.4 32.4s-14.5 32.4-32.4 32.4zM695.1 701.2H341.2c-17.9 0-32.4-14.5-32.4-32.4s14.5-32.4 32.4-32.4h353.9c17.9 0 32.4 14.5 32.4 32.4s-14.5 32.4-32.4 32.4zM379.1 281.1c-17.9 0-32.4-14.5-32.4-32.4V115.4c0-17.9 14.5-32.4 32.4-32.4s32.4 14.5 32.4 32.4v133.2c0 17.9-14.5 32.5-32.4 32.5zM657.1 281.1c-17.9 0-32.4-14.5-32.4-32.4V115.4c0-17.9 14.5-32.4 32.4-32.4s32.4 14.5 32.4 32.4v133.2c0 17.9-14.5 32.5-32.4 32.5z" fill="#666666" p-id="2171"></path></svg> <span class="text">目录</span> <span class="line"></span> </div> <div class="joe_aside__item-contain"> <?php $this->treeMenu(); ?> </div> </section> <!-- 导入的js文件,必须在这里导入,否则不生效 --> <script src="<?php $this->options->themeUrl('assets/js/menutree.js'); ?>"></script> 保存,刷新文章页面即可看到左边的侧边栏目录。 以上的样式代码经过一定时间的使用,可以完美契合 Joe 主题,并且加入了部分响应式布局的代码,在移动设备上目录会自动隐藏,不会影响内容阅读。当然,如果是非 Joe 主题,样式可能需要重新设计。
2022年01月25日
401 阅读
13 评论
5 点赞
2022-01-16
Ubuntu搭设CS1.6游戏服务器
[Meting] [Music server="netease" id="167937" type="song"/] [/Meting] 目录: 前言 一、创建系统新用户 二、SteamCMD 2.1、安装 2.2、进入 SteamCMD 控制台 三、下载游戏服务器文件 3.1、设置下载位置 3.2、下载文件 四、启动服务器程序 4.1、启动 4.2、报错信息 4.2.1、报错信息之一 4.2.2、报错信息之二 4.2.3、报错信息之三 4.3、开放端口 五、连接服务器 环境说明: 服务器:阿里云轻量应用服务器 系统:Ubuntu 20.04 前言 CS,全称 Counter-Strike,起初是1999 年由民间团队为游戏《半条命(Half-Life)》的开发的游戏模组,由于后来深受玩家的喜爱,2000年由 Valve 购得版权发行成为独立游戏。后续出过《反恐精英:零点行动》《反恐精英:起源》和《反恐精英:全球攻势》等续作。CS 1.6 作为这个系列的一代经典以及童年回忆,其在整个游戏史上的地位怎样美言都不过分。 最近心血来潮,想搭建一个 CS1.6 服务器来玩一玩,查了不少资料,大概有了点头绪。 CS1.6 有一个专门的服务器程序,叫 HLDS(Half-Life Dedicated Server),即半条命专用服务器,是 Valve 官方(也就是俗称的“V 社”)提供的 CS1.6 服务器端程序。 在下载 CS1.6 的服务器程序时,需要用到 SteamCMD,即 Steam 控制台客户端,这是 Valve 官方开发的一个命令行版本的 Steam 客户端,它的主要用途就是安装和更新 Valve 开发的游戏的专用服务器程序文件。 一、创建系统新用户 安装 SteamCMD 之前需要先创建一个用户。 因为按照官方文档的建议,最好创建一个新用户来专门运行 SteamCMD,使用 root 用户运行 SteamCMD 时会有安全风险。当然理论上来说,如果当前用户是非 root 用户,那么可以不创建新用户,使用当前用户直接操作也是一样的。 相关参考资料:Linux 用户和用户组管理 | 菜鸟教程 (runoob.com) 注意:这一步的操作需要 root 权限。 创建一个名为 steam 的新用户: #-m:自动创建用户目录 #-s:指定用户的shell解释器,这里设为bash useradd -m -s /bin/bash steam 然后设置用户密码: passwd steam 到这一步之后,执行后面的 apt 命令时,可能会出现报错: steam is not in the sudoers file. This incident will be reported 或者: steam 不在 sudoers 文件中,此事将被报告 解决方法有两种(需要有 root 权限): 按照报错提示,将 steam 用户添加到 sudoers 文件中,编辑 sudoers 文件: sudo nano /etc/sudoers 仿照root用户的格式,在如下位置添加 steam 这一行内容(请忽略 steam 前的“+”,这只是为了方便说明这一行内容是新添加的): # User privilege specification root ALL=(ALL:ALL) ALL + steam ALL=(ALL:ALL) ALL ctrl + o 保存,ctrl + x 退出。 将 steam 用户添加到 sudo 用户组(在 root 用户下操作): adduser steam sudo 最后切换到新建的 steam 用户: su steam 二、SteamCMD SteamCMD 的官方文档:Main Page:zh-cn - Valve Developer Community (valvesoftware.com) 下面的这部分参考自官方文档,如果这个过程中有疑问的话也可以读一读官方文档。另外,值得一提的是,官方文档中的大部分资料都提供了中文版本,这点给个大大的好评。 2.1、安装 安装方法:Steam 控制台客户端 - Valve Developer Community (valvesoftware.com) 在官方文档中提供了两种方式来安装 SteamCMD,一种是安装来自软件仓库的软件包,另一种是手动下载压缩包再解压安装。 为了方便,直接采用第一种,用 apt 命令安装 SteamCMD: sudo apt update && sudo apt install software-properties-common sudo add-apt-repository multiverse sudo dpkg --add-architecture i386 # 安装相关依赖 sudo apt install lib32gcc1 libsdl2-2.0-0:i386 # 安装 SteanCMD sudo apt install steamcmd 安装过程中会出现如下界面,按 Tab 键选择到 OK 再按回车确认 选择“I AGREE”,回车确认,等候等待安装完成。 2.2、进入 SteamCMD 控制台 输入以下命令进入 SteamCMD 控制台: steamcmd 如果是手动安装的 SteamCMD,那么还需要在当前目录下生成一个软链接: ln -s /usr/games/steamcmd steamcmd 否则使用 steamcmd 命令时会提示找不到命令。如果直接使用 apt 命令安装的话则不用生成软连接。 第一次进入时,会更新文件,等待更新完成即可进入 SteamCMD 控制台: 更新完成后会在当前目录下生成一个隐藏的 .steam 文件夹,使用 ls -al 命令查看。 进入到 SteamCMD 控制台之后,如果出现警告信息: Warning: failed to init SDL thread priority manager: SDL not found 这是由于缺少依赖,输入 quit 退出 SteamCMD 控制台,再执行以下命令安装依赖: sudo apt install libsdl2-2.0-0:i386 当正常进入 SteamCMD 控制台后,没有报错信息,就可以开始下载游戏文件了。 三、下载游戏服务器文件 3.1、设置下载位置 下载之前,先设置文件的下载位置: # 用绝对路径: force_install_dir /home/steam/cs1.6 3.2、下载文件 下载游戏服务器文件需要登录,我们可以选择匿名登录: login anonymous 这里就有一个问题,我先匿名登录了之后再设置下载目录,然后就出现了报错,提示要在登录之前设置下载位置: 而在官方文档的这个位置:Steam 控制台客户端 - 下载一个应用,这段描述意思是可以先登录再设置下载目录的,所以我也不清楚这是什么情况,按实际情况来就好吧。 以上准备完成之后就可以下载 CS1.6 游戏服务器文件了: app_set_config 90 mod cstrike app_update 90 validate 需要注意的是,由于 BUG,中途可能下载中断,再次运行 app_update 90 validate 命令会继续下载。多试几次等待出现 “Success” 字样: 服务端文件下载完成之后,输入 quit 退出 SteamCMD 控制台。 我在下载完之后,找下载好的文件时踩了不少坑。下了好几遍之后,最后我发现规律如下: 如果不设置下载目录,则默认会下载到当前目录的 .steam 隐藏文件夹下,具体路径为:.steam/steamapps/common/Half-Life 。 如果将下载目录设置为了绝对路径,那么按照绝对路径就能找到; 如果用了相对路径,则是在隐藏的 .steam 路径下 ,具体路径为 ./steam/steamcmd/; 所以,为了比较容易找到之后下载下来的游戏服务器文件,我的建议是在下载之前将路径设置成绝对路径。 四、启动服务器程序 4.1、启动 启动之前,将目录定位到服务器程序文件的根目录下,先给启动程序赋予执行权限: sudo chmod a+x hlds_run hlds_linux hltv 启动命令为: # 启动 cs1.6 服务器,服务器端口为 27015,地图为“de_dust2”,最大容纳人数为 16 ./hlds_run -game cstrike +port 27015 +map de_dust2 +maxplayers 16 启动命令的格式为: ./hlds_run -game <game> +maxplayers X +map <map> +port <port> 这段启动命令看似复杂,其实并不,简单分析一下你就明白了: ./hlds_run 是根目录下的服务器启动程序,后面一大段是启动参数,几个基本的启动参数含义如下: 参数 含义 -game 游戏名称 +port 游戏服务器启动端口 +map 设置地图 +maxplayers 地图最大容纳人数(2~32) 更多的启动参数可以参考这份官方文档:Command Line Options - Valve Developer Community (valvesoftware.com) 4.2、报错信息 这里我碰到了问题,服务虽然启动起来了,但是有报错信息。不过经过后来的尝试,游戏客户端能连接到服务器,应该是不影响服务基本运行。 但是为了保险起见,我觉得还是有必要消除这些报错信息,尝试着用我的渣渣英语水平分析了一下控制台输出中的报错信息,提取出来一部分可能有用的信息,再加上一些网上其他大佬的资料,差不多就能部分解决这些报错了。 4.2.1、报错信息之一 [S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed. 这个看提示像是 SteamAPI_Init() 与 SteamAPI_IsSteamRunning() 这两个方法执行失败,找了些资料之后还是无法下手解决,就念在它不影响运行的份上放过它吧。 4.2.2、报错信息之二 dlopen failed trying to load: /home/steam/.steam/sdk32/steamclient.so with error: /home/steam/.steam/sdk32/steamclient.so: cannot open shared object file: No such file or directory 结合这篇博客 Debian10搭建CS1.6服务器-Rain's Blog (im.ci) 的内容,基本可以确定是这个博主所说的游戏服务器文件缺失的问题,缺失的文件是 .steam/sdk32/steamclient.so,我们可以手动把 .steam/steamcmd/linux32 目录下的 .steamclient.so 文件复制过来一份: # 整个操作还是在 .steam 目录下: mkdir /home/steam/.steam/sdk32 cp /home/steam/.steam/steamcmd/linux32/steamclient.so /home/steam/.steam/sdk32 4.2.3、报错信息之三 couldn't exec listip.cfg couldn't exec banned.cfg 原因在点通论坛的这篇帖子linux系统架设cs1.6服务器图文教程(兼容47/48协议的non-steam)第二部分中提到了,是因为服务器文件根目录的 cstrike 文件夹下缺少了 listip.cfg 和 banned.cfg 这两个文件,listip.cfg 是存放踢出的玩家 IP,banned.cfg 存放的是被管理员封禁的玩家 IP。 所以消除警告信息的办法就是创建这两个文件(空文件即可): # 进入 cstrike 文件夹下 cd ~/cs1.6/cstrike/ # 创建文件并且给775权限 touch listip.cfg banned.cfg && chmod 775 listip.cfg banned.cfg 以上步骤做完之后,ctrl + c 取消刚才的运行,再重新启动一次服务,这样就没有报错信息了。 4.3、开放端口 这是很重要的一步,但也很容易被忽略,不管搭建出怎样牛逼的服务,端口不开放那都是白搭。 开放端口具体步骤就不再赘述了,各个服务器厂商的操作都是大同小异的,无非就是在服务器控制台找“防火墙”之类的字眼,进去之后添加端口即可。 按照官方文档:Half-Life Dedicated Server - Valve Developer Community (valvesoftware.com),完整的游戏服务总共需要四个端口: 端口号 网络类型 用途说明 27015 UDP 游戏传输、pings 27015 TCP RCON协议(RCON - 百度百科) 27020 UDP HLTV 传输(HLTV - 百度百科) 26900 UDP VAC 服务 如果仅仅维持基本的游戏服务及远程管理,只需要添加如下两个端口即可: 到这里,没什么问题的话,服务器就已经运行起来,可以被我们的游戏连接了。 五、连接服务器 现在正版 CS1.6 客户端就可以连接这个服务器了。在首页用~调出控制台,输入命令 connect ip地址/域名,回车即可连接。 或者也可以在游戏中搜索 IP 地址或域名: 可以看到,已经搜索出来了刚建的服务器: 双击可以直接加入。 这是已连接到的样子: 至此,我们用官方工具成功搭建出了一个 CS1.6 的游戏服务器。目前这个服务器还只能允许正版 CS1.6 玩家游玩,下一篇,我们将会通过安装插件来破解这个限制,并且对这个游戏服务器做一些优化。 下一篇链接:CS1.6 服务器安装插件及优化教程 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) 参考资料: Debian10搭建CS1.6服务器-荒岛 (lala.im)(这篇博客可能需要科学上网才能看到) cs1.6服务器搭建 2021-11-30 - 王冰冰 - 博客园 (cnblogs.com) [linux系统架设cs1.6服务器图文教程(兼容47/48协议的non-steam) - HLDS 技术讨论区 - 点通论坛(dt-club.net)](http://www.dt-club.net/thread-46567-1-1.html
2022年01月16日
466 阅读
2 评论
0 点赞
2021-12-26
网站统计后台的垃圾广告及屏蔽措施
[Meting] [Music server="netease" id="185726" type="song"/] [/Meting] 目录: 一、后台垃圾广告是什么 二、预防措施 1. 排除访客 IP 2. 加密统计代码 一、后台垃圾广告是什么 我的博客接入了百度统计与 CNZZ 平台来进行访客统计,大部分时候在网站统计平台上查看访客数据时,会碰到这样的记录: 其实百度统计上还比较少,主要集中在 CNZZ 上,这些记录通常是用各种各样的灰色词来作为关键词在搜索引擎上进行搜索而产生。后来才知道,这是使用垃圾广告群发软件故意发广告的。 关于其原理,我用部分转载的内容来进行说明(原文链接附在文末): 我们知道现有大多的统计,都是让我们在自己网站上放一段统计代码,然后对网站流量进行统计,例如百度统计,在安装百度统计工具到网站的时候,我们会要求网站必须嵌入一段类似下面的JS代码: var _hmt = _hmt || []; (function() { var hm = document.(“script”); hm.src = “https://hm.baidu.com/hm.js?89764654ds8w2082cffb3b7e1f2d1238f”; var s = document.getElementsByTagName(“script”)[0]; s.parentNode.insertBefore(hm, s); })(); 这段统计代码中,每一个网站都会有一个32位字符串就是每个站点特有的统计ID。 89764654ds8w2082cffb3b7e1f2d1238f 群发软件会先拿到你网站的ID,这个很简单,通过原代码就可以查到这个统计ID,群发软件会使用采集软件大量采集这些统计ID; 拿到ID后,将你的域名与ID对应放到群发软件里,设置好关键词和推广网址就可以群发垃圾广告了。 二、预防措施 1. 排除访客 IP 我刚开始一直都是使用这种方式。 CNZZ 直接在左侧菜单找到“排除访客 IP”: 百度统计找到“管理” -> “统计规则设置” -> “过滤规则设置” -> “排除 IP 地址”: 这是最简单粗暴的办法,直接将刷垃圾广告的 IP 地址加入排除访客 IP 的名单中,从访客列表中直接隐藏,从而眼不见心不烦。但是,刷广告的一般都是使用多个 IP 地址,屏蔽了一个 IP 地址之后他们还能使用其它的 IP 地址继续作案,所以这种方式治标不治本。 因此更推荐使用的是下面这种方式。 2. 加密统计代码 这是从源头来预防后台垃圾广告的方法,就是将站点统计代码进行一次 JS 混淆,从而达到隐藏站点统计 ID 的目的。 比如,从 CNZZ 或者百度统计上获取到统计代码之后,使用 JS 加密工具: 以后使用混淆过的统计代码,可有效预防统计后台的垃圾广告。 需要注意的是,在刚开始使用了加密了的统计代码之后,可能依然会有部分刷广告的记录(至少我的情况是这样),将这些 IP 加入排除访客 IP 名单里,之后就会是一个干干净净的统计后台了。 部分内容参考自: 如何屏蔽网站统计后台的垃圾广告 - 学做网站论坛
2021年12月26日
222 阅读
0 评论
0 点赞
2021-12-11
常用的一些Nginx配置
[Meting] [Music server="netease" id="27483168" type="song"/] [/Meting] 目录: 1、监听端口 2、日志功能 2.1、访问日志 2.2、错误日志 3、配置域名 4、静态资源 5、重定向 5.1、网站根目录重定向 5.2、特定目录重定向 6、反向代理 7、负载均衡 8、SSL配置 1、监听端口 server { # 用于HTTP协议 listen 80; # 用于HTTPS协议 listen 443 ssl; # 用于HTTP2 listen 443 ssl http2; # 使用IPv6监听80端口 listen [::]:80; # 仅使用IPv6 listen [::]:80 ipv6only=on; } 2、日志功能 Nginx的日志分为两种:access_log (访问日志)和 error_log(错误日志)。 对于日志的格式,Nginx提供了一种名为 combine 的格式,如果没有明确指定日志格式则默认使用该格式。 如果不使用 combine 格式的话,可以使用 log_format 指令来自定义,其具体用法参考Nginx日志配置详解或者官方文档:HttpLog模块-Nginx中文文档。 2.1、访问日志 访问日志主要记录客户端的请求,客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。 server { # 访问日志文件的写入位置,相对或绝对路径 access_log /path/to/file.log; # 选择访问日志功能的开启(on)或关闭(off) access_log on; } 2.2、错误日志 错误日志记录服务器和请求处理过程中的错误信息。 server{ # 错误日志的写入位置 error_log logs/error.log error; # 错误日志的级别,分为 debug, info, notice, warn, error, crit, alert,emerg,其取值范围是按紧急程度从低到高排列 # 只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error error_log file [level]; } 3、配置域名 server { # 监听domain.com server_name domain.com; # 监听多个域名 server_name domain.com www.domain.com; # 监听所有域名 server_name *.domain.com; # 监听所有顶级域名 server_name domain.*; # 监听未指定的主机名(比如侦听IP地址本身) server_name ""; } 4、静态资源 server { listen 80; server_name domain.com; location / { # 设置网站的根目录 root /path/to/website; } } 5、重定向 5.1、网站根目录重定向 server { listen 80; server_name www.domain.com; # 将 www.domain.com 进行301重定向,跳转至 http://domain.com$request_uri return 301 http://domain.com$request_uri; } 5.2、特定目录重定向 server { listen 80; server_name www.domain.com; # 将链接 http://www.domain.com/redirect-url 进行301重定向,跳转到http://otherdomain.com location /redirect-url { return 301 http://otherdomain.com; } } 如将 domain.com 永久重定向到 www.domain.com: server { listen 80; server_name domain.com; return 301 http://www.$host$request_uri; } 6、反向代理 反向代理 - 维基百科,自由的百科全书 (wikipedia.org) Reverse proxy - Wikipedia server { listen 80; server_name domain.com; # 对特定主机的3000端口进行反向代理 location / { proxy_pass http://0.0.0.0:3000; } } 7、负载均衡 负载均衡 - 维基百科,自由的百科全书 (wikipedia.org) Load balancing (computing) - Wikipedia upstream node_js { server 0.0.0.0:3000; server 0.0.0.0:4000; server 123.131.121.122; } server { listen 80; server_name domain.com; location / { proxy_pass http://node_js; } } 8、SSL配置 server { listen 443 ssl; server_name domain.com; ssl on; # 证书文件,格式不一定都是pem,还可能是其他格式 ssl_certificate /path/to/cert.pem; # 秘钥文件,格式不一定都是pem,还可能是其他格式 ssl_certificate_key /path/to/privatekey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_timeout 1h; ssl_session_cache shared:SSL:50m; add_header Strict-Transport-Security max-age=15768000; } # 将HTTP永久重定向到HTTPS server { listen 80; server_name domain.com; return 301 https://$host$request_uri; } 部分内容转载修改自: Nginx Cheatsheet (hashnode.dev) Nginx日志配置详解_biubiuli的博客-CSDN博客_nginx 日志配置
2021年12月11日
172 阅读
0 评论
0 点赞
本站已启用新域名www.wlplove.com
亲爱的访客您好! 本站自2021年10月中旬起将使用新域名 www.wlplove.com 。旧域名 www.langp.wang 的所有链接都将会跳转至新域名首页。 为什么把旧域名所有链接全部跳转至新域名首页而不是把旧链接直接重定向到新链接? 我以前连续的文章,编号其实是不连续的,这就让我看着很别扭。在忍受了这么长时间以后,趁着给博客换域名的机会,我把所有的文章编号全部整理成了连续的,这下可算是舒服多了。 当然,代价就是之前的大部分文章页面链接都将会失效,而且文章旧地址无法直接重定向至新地址。并且,搜索引擎中旧域名的收录无法转移到新域名,这相当于是又从一个新域名起步了。 所以我要怎么访问原网页? 其实我也没什么好的办法,只能推荐您使用关键字在 博客新地址首页 进行搜索了。 最后,对于访问过程中给您造成的不便致以最诚恳的歉意!! 博主:知识分子没文化
2021年10月14日
139 阅读
0 评论
0 点赞
2021-06-30
如何拥有一个专属于自己的个人域名邮箱
[Meting] [Music server="netease" id="108299" type="song"/] [/Meting] 目录: 1. 开通腾讯企业邮箱服务 2. 给域名添加解析记录 前期准备: 域名一个 这几天刷逼乎时,看到一个自建邮箱的帖子,翻了几个回答觉得还不错,操作起来也不太难,所以就上手尝试一下。主要用到的是腾讯企业邮,以及一个自己的域名。 1. 开通腾讯企业邮箱服务 进入腾讯企业邮箱官网,点击右上角“开通基础版”。 开通方式选择“新企业” 填写信息注册企业微信,这部分信息随便填都行,因为是不需要经过审核的。同时需要绑定一个微信号作为管理员。 ] 注册完成后会提示注册成功 自动跳转到以下界面,在这里绑定自己的域名。然后点击“下一步”。 2. 给域名添加解析记录 进入域名控制台,添加如下两条MX解析记录: 记录类型 主机记录 解析线路 记录值 MX优先级 TTL MX (不需填写) 默认 mxbiz1.qq.com 5 10 分钟 MX (不需填写) 默认 mxbiz2.qq.com 10 10 分钟 添加完之后回到域名解析的界面,点击“我已完成设置” 至此即完成设置,会提示预计2小时生效,亲测其实也用不了那么久,差不多十分钟就可以了。 此时可以尝试在腾讯企业邮箱-登录入口用绑定的微信扫码,以成员的身份登录,进入邮箱首页。由于同为腾讯的产品,所以整个布局界面与QQ邮箱是一样的。 此时的账号还没有密码,进入左上角“设置”->“账户”选项,可以设置密码。设置密码以后就可以用第三方邮件客户端来登录账号了。 左上角“管理邮箱”可以添加或者删除邮箱。 基础的也就这么些了,更多邮箱操作可以参考:企业邮-帮助中心 (qq.com)
2021年06月30日
206 阅读
0 评论
0 点赞
2021-06-15
使用蚂蚁笔记搭建个人云笔记
[Meting] [Music server="netease" id="236426" type="song"/] [/Meting] 目录: 前言 1.安装MongoDB 2.下载 3.安装 4.启动 5.其他 5.1 加入开机自启 5.2 设置nginx代理 环境说明: 系统:ubuntu 20.04 数据库:MongoDB 4.4.6 leanote V2.6.1 前言 蚂蚁笔记官网:Leanote 蚂蚁笔记,有极客范的云笔记! 类似于有道笔记、印象笔记等,蚂蚁笔记也是一款笔记软件,最重要的是蚂蚁笔记是开源的,这就意味可以自己搭建服务端。而我的网站平时访客不多,服务器大部分时候处于闲置状态,所以搭建一个属于自己的云笔记是一个不错的选择。 蚂蚁笔记github首页地址:Leanote - open source alternative to Evernote · GitHub,可以下载到各个平台的蚂蚁笔记客户端。 1.安装MongoDB 蚂蚁笔记使用的是MongoDB来存储文章数据,并不是mysql。 ubuntu系统下安装MongoDB的过程参考我的另一篇博客:ubuntu安装MongoDB数据库 - Roookie博客 | 记录 · 收纳 · 分享 (langp.wang),此处不再赘述。 2.下载 用以下命令下载安装文件: sudo wget https://sourceforge.net/projects/leanote-bin/files/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz 然后解压: sudo tar -zxvf leanote-linux-amd64.v2.6.1.bin.tar.gz 解压后的文件夹名称为”leanote“。 如果要手动下载也行,蚂蚁笔记下载地址:Leanote。下载时选择“leanote-linux-amd64.v2.6.1.bin.tar.gz”: 3.安装 先往MongoDB中导入初始数据: # 执行命令时位于“leanote”同级目录下,此命令适用于MongoDB没有开启安全授权的情况 mongorestore -h localhost -d leanote --dir leanote/mongodb_backup/leanote_install_data/ # 当MongoDB开启安全授权时,需要加入“--authenticationDatabase”(后面是用户所在的数据库)与“-u”参数(后面是用户名)执行此命令,否则就会导入失败 mongorestore -h localhost -d leanote --dir leanote/mongodb_backup/leanote_install_data/ --authenticationDatabase admin -u root 控制台界面滚动几下之后,出现“499 document(s) restored successfully. 0 document(s) failed to restore.”字样提示,说明导入成功。 接下来为leanote数据库添加一个账户: # 进入数据库控制台 mongo # 首先切换到leanote数据库下 use leanote; # 添加一个用户root, 密码是abc123 db.createUser({ user: 'root', pwd: 'abc123', roles: [{role: 'dbOwner', db: 'leanote'}] }); # 测试下是否正确,返回1表示正确 db.auth("root", "abc123"); 并修改配置文件leanote/conf/app.conf,找到下面两行: # 填入上面设置的账户密码 db.username=root # if not exists, please leave blank db.password=abc123 # if not exists, please leave blank 根据蚂蚁笔记的官方安装文档,还要将配置文件中的app.secret一项任意做一些更改,否则会有安全隐患 4.启动 蚂蚁笔记的启动脚本位于leanote/bin/目录下,执行脚本启动命令: sudo bash leanote/bin/run.sh 启动后,蚂蚁笔记默认运行在9000端口上,访问的话需要在云服务器的安全组中放行这个端口。访问IP地址或者域名的9000端口即可进入首页: 5.其他 5.1 加入开机自启 将蚂蚁笔记加入开机自启,在/etc/init.d目录下新建一个脚本文件: sudo nano /etc/init.d/leanote.sh 输入以下内容,并根据注释更改相关内容: #!/bin/bash ### BEGIN INIT INFO # Provides: leanote # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start leanote # Description: start leanote ### END INIT INFO # 上面一部分不可少,下面这一部分是命令内容,以exit 0结束 bash /root/leanote/bin/run.sh exit 0 修改完之后ctrl +o保存,ctrl +x退出。执行以下语句给脚本文件足够的执行权限: sudo chmod 755 leanote.sh 最后再将脚本添加到开机启动: sudo update-rc.d leanote.sh defaults 90 # 90表示执行的优先级,数字越大表示越晚执行。 附:移除脚本命令: sudo update-rc.d -f [脚本文件名] remove 5.2 设置nginx代理 为了方便访问,我们可以单独设置一个域名来访问蚂蚁笔记,原理是利用nginx进行反向代理,将本机的9000端口的所有请求转发到新域名上,新建一个nginx配置: upstream note { server 127.0.0.1:9000; } server{ listen 80; # SSL端口配置 listen 443 ssl; # domainName是域名 server_name domainName; location / { proxy_pass http://note; } # 以下为SSL配置部分 没有配置SSL证书的直接删除以下配置即可 # 设置http强制跳转https if ($server_port = 80){ rewrite ^/(.*) https://$host/$1 permanent; } #需要将cert-file-name.pem替换成已上传的证书文件的名称。 ssl_certificate cert-file-name.pem; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。 ssl_certificate_key cert-file-name.key; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DHE; #表示使用的TLS协议的类型。 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; } 然后重启nginx配置即可: nginx -s reload 附上官方github的wiki:Home · leanote/leanote Wiki · GitHub
2021年06月15日
669 阅读
0 评论
0 点赞
2021-06-06
云服务器搭建网易云解锁服务
[Meting] [Music server="netease" id="34341360" type="song"/] [/Meting] 目录: 前言 1.安装node.js和npm 2.启动服务 3.设置服务开机启动 4.设置网易云音乐代理 4.1 Windows端 4.2 Linux端 (1) 设置反向代理 (2) 添加证书 (3) 修改host文件 (4) 添加默认启动参数 环境说明: 服务器:ubuntu 20.04 客户端:Win10 / DeepinV20 社区版 网易云音乐版本:V2.8.1(Win10) / V1.2.1(Deepin) 前言 openwrt上面有一款插件叫“网易云音乐解锁”,可以解锁网易云的所有会员歌曲和没有版权的歌曲,可是要使用这项服务就必须连接到openwrt路由器,如果在外面的话就不行了,所以还是有一定的局限性。 最近在github上发现一个项目,可以利用云服务器来搭建一个网易云解锁服务。项目地址:GitHub - nondanee/UnblockNeteaseMusic: Revive unavailable songs for Netease Cloud Music。 还有另外一个项目:GitHub - meng-chuan/Unlock-netease-cloud-music: 解锁网易云音乐客户端变灰歌曲,这个项目整合了目前各个平台解锁网易云的相关方法,核心就是上面的那个项目。作者写了一个详细的教程,也包括本地搭建和服务器(Linux/Windows)端搭建的教程。服务器环境是直接使用宝塔面板,并不是手动搭建。目前我的服务器并没有使用宝塔面板,不得不手动搭建环境。所以就有了这一篇博客。 下面就是在云服务器上搭建环境并运行项目的整个过程: 1.安装node.js和npm ubuntu中用一句命令就可以安装node.js和npm: sudo apt update sudo apt install nodejs npm 安装完成后,输入以下命令可以查看node.js版本: nodejs --version 2.启动服务 从github上把项目文件拉取下来,然后上传到服务器上的任意一个位置。 git clone https://github.com/nondanee/UnblockNeteaseMusic.git 完成后,进入到服务器上该项目的文件夹里,运行如下命令启动服务: node app.js -p 10000 -f 59.111.181.60 “-p”命令表示设置服务端口,这里选择10000端口。同时,需要在服务器的安全组中放行这个端口。“-f”命令表示强制使用网易服务器ip。 3.设置服务开机启动 此时,如果退出了ssh连接窗口,那么这个服务将会停止,所以我们还需要把这项服务添加到开机启动项目中,使其开机就能启动并在后台运行。 在/etc/init.d目录下新建一个脚本文件: sudo nano /etc/init.d/uncm.sh 输入以下内容,并根据注释更改相关内容: #!/bin/bash ### BEGIN INIT INFO # Provides: unlockmusic # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start unlockmusic # Description: start unlockmusic ### END INIT INFO # 下面这一部分是命令内容,以exit 0结束 # /root/Unlock-netease-cloud-music换成自己的目录 cd /root/Unlock-netease-cloud-music node app.js -p 10000 exit 0 修改完之后ctrl +o保存,ctrl +x退出。执行以下语句给脚本文件足够的执行权限: sudo chmod 755 uncm.sh 最后再将脚本添加到开机启动: sudo update-rc.d uncm.sh defaults 90 # 90表示执行的优先级,数字越大表示越晚执行。 附:移除脚本命令: sudo update-rc.d -f [脚本文件名] remove 做完这些之后,重启一遍服务器,使服务开机运行起来,然后我们就可以放手不用管了。至此,一个安全稳定的网易云解锁服务就搭建好了。只要服务器不挂,解锁服务就能生效。 4.设置网易云音乐代理 4.1 Windows端 注意:请保证网易云音乐的版本不高于 2.9.5,经测试,此代理方式在 2.9.5 以上的版本已经无法使用,原因未知。 网易云音乐 2.9.5 下载地址(安装完成之后务必关闭自动更新):https://image.wlplove.com/download/cloudmusicsetup2.9.5.199424.exe 打开 win10 的网易云音乐,进入“设置”->“工具”选项,选择“自定义代理”,“服务器”填写域名或者ip地址,“端口”填前面启动项目时设置的端口号即可。 然后点击测试按钮,如果配置无误,那么就会提示“该代理可以使用” 点击确定,重启网易云音乐。 4.2 Linux端 此项是解锁Linux端网易云音乐的无版权歌曲,Windows用户直接忽略即可。 还有,请注意此项所述的“Linux”是指客户端,前面的”Linux“是指服务器端。 此处以Deepin系统为例,方法整理自:Linux 客户端食用指南 · Issue #208 · nondanee/UnblockNeteaseMusic (github.com)。 (1) 设置反向代理 Linux端的网易云音乐客户端没有设置代理的选项,也不能指定服务端口,因此这个服务必须要运行在服务器端的80/443端口,但这两个端口一般都是被占用的(因为服务器要提供网站服务),所以还要做反向代理。当然,如果端口没有被占用,就可以跳过设置反向代理这一步了。 添加一个Nginx配置: server { listen 80; listen 443 ssl; server_name music.163.com interface.music.163.com; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; ssl_session_timeout 10m; ssl_session_cache shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'AES128+EECDH:AES128+EDH'; ssl_prefer_server_ciphers on; location / { proxy_pass https://127.0.0.1:52000; proxy_set_header HOST 'music.163.com'; } } 然后重新载入Nginx配置文件: nginx -s reload (2) 添加证书 项目目录中默认带有证书文件“ca.crt”。或者也可以选择自己签发证书:进阶配置 · Issue #48 · nondanee/UnblockNeteaseMusic (github.com)。 切换到项目目录,将证书文件复制到/usr/local/share/ca-certificates/目录下: sudo cp ca.crt /usr/local/share/ca-certificates/ 然后刷新: sudo update-ca-certificates 如果要删除已经信任的证书,先将/usr/local/share/ca-certificates/下拷贝的.crt证书文件删除, 然后执行以下命令,刷新配置文件,删除软链接: sudo update-ca-certificates -f (3) 修改host文件 host文件位置为/etc/hosts。向host文件末尾添加如下内容: # host文件格式为“ip地址 网址”,中间有空格 [服务器ip] music.163.com [服务器ip] interface.music.163.com (4) 添加默认启动参数 修改网易云的启动项,位于/usr/share/applications,直接编辑: sudo nano /usr/share/applications/netease-cloud-music.desktop 在“Exec”这一行末尾增加--ignore-certificate-errors 即可。 此时,Linux端的网易云音乐也可以听变灰的歌曲了。
2021年06月06日
1,267 阅读
0 评论
0 点赞
2021-05-26
【踩坑实录】Nginx重新加载时出现警告:nginx: [warn] conflicting server name "www.langp.wang" on 0.0.0.0:80, ignored
[Meting] [Music server="netease" id="394653" type="song"/] [/Meting] 环境说明: 系统:ubuntu 20.04 nginx:1.18.0 问题再现: 修改nginx配置文件后,在执行nginx -s reload命令重新载入nginx服务时出现错误: nginx: [warn] conflicting server name "www.langp.wang" on 0.0.0.0:80, ignored nginx: [warn] conflicting server name "www.langp.wang" on 0.0.0.0:443, ignored 可以看到提示“conflicting server name”,即“服务器名称冲突”,而且是在“80”和“443”两个端口上都有的。 错误原因: 在nginx的每一个server配置中都有一个“server_name”配置项,nginx是用“server_name”来确定域名与对应网站的关联的。而当nginx中出现了两个相同的“server_name”时,重新加载时nginx服务时就会出现冲突了,就会产生警告信息。由于提示信息只是“warn”级别的,所以网站还是能正常访问到的,可是这个警告信息还是让人觉得很不爽。 解决方法: 经过排查,发现是在配置文件的目录下(/etc/nginx/sites-enabled)多出来了一个与原来的配置文件名称相同,但是名称后缀为“.save”的文件。这个文件中的所有信息与原来文件的所有内容相同,所以就出现了两个相同的”server_name“。 把这个文件删除掉之后,再次执行命令nginx -s reload就没有警告信息了。 至于这个文件的来源,个人猜测可能是由于用nano编辑器编辑文件时产生的缓存或者是nano编辑器被强制退出时保存的信息。
2021年05月26日
366 阅读
0 评论
0 点赞
2021-05-21
typecho设置伪静态规则
[Meting] [Music server="netease" id="187672" type="song"/] [/Meting] 环境说明: 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日
673 阅读
0 评论
0 点赞
2021-04-04
免费的网站运行状态监控工具——UptimeRobot
[Meting] [Music server="netease" id="569213279" type="song"/] [/Meting] 目录: 前言 一、将网站添加到监控列表 二、获取监控网站的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日
437 阅读
0 评论
0 点赞
2021-03-23
在网站的下方添加站点运行时间
在网站的下方添加站点运行时间 [Meting] [Music server="netease" id="257090" type="song"/] [/Meting] 目录: 在网站的下方添加站点运行时间 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日
819 阅读
0 评论
0 点赞
2021-02-16
收集几个常用的搜索引擎网站收录入口
[Meting] [Music server="netease" id="238644" type="song"/] [/Meting] 网站建立好之后,流量不可能立即就有,除了网站自身内容要优秀之外,还得想点其他办法来吸引流量,因为有时候“酒香也怕巷子深”。让搜索引擎去收录我们的网站有时候就是一种重要的引流途径,甚至对于我这种不善于做也懒得做广告宣传的来说就是唯一的引流途径,所以让搜索引擎来收录网站就显得很重要了。下面是我收集的几个常用搜索引擎的网站收录入口: 百度: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日
675 阅读
1 评论
0 点赞
2021-02-07
免费的泛域名证书——Let's encrypt证书
[Meting] [Music server="netease" id="276063" type="song"/] [/Meting] 目录: 安装之前 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 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日
841 阅读
0 评论
0 点赞
1
2