作者归档:Henry

CentOS 7安装PHP 7

由于WordPress新版已经不支持PHP 5.2,必须升级一下,索性升级到现在最新的7.3。 1、卸载旧版本的PHP

yum remove php*

2、安装epel和yum-utils

yum install epel-release yum-utils

3、安装remirepo源

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

4、启用PHP 7.3源

yum-config-manager --enable remi-php73

5、安装上PHP和一些常用的组件

yum install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysql

6、检查版本

php -v

Crayon Syntax Highlighter代码高亮的替代品:Enlighter

之前一直使用Crayon Syntax Highlighter作为代码高亮插件,但是在最新版的Wordpress 5.x中,由于兼容性问题已经无法使用。在网上搜索,找到了替代品:Enlighter。

替换方法:

停用旧的Crayon Syntax Highlighter,安装启用Enlighter。修改Enlighter设置中的以下内容:

  • Enlighter -> 选项 -> 高级选项 -> 阻止CSS选择器 设为
pre.EnlighterJSRAW, pre[class="lang:"][class~="decode:true"]
  • Enlighter -> 选项 -> 高级选项 -> 内嵌CSS选择器 设为
code.EnlighterJSRAW, span[class="lang:"][class~="decode:true"][class~="crayon-inline"]
  • Enlighter -> 测试版 -> 测试版特性 -> 启用DRI 设为 不勾选

参考:

家庭共享记录(NFS、SMB、WebDAV、FTP)

这几天为了实现家庭共享及外部访问,对这四种共享方式都进行的尝试。最后选择了NFS+SMB的方式。思路很简单:用最少的工具完成功能。

SMB

从最简单的SMB说起,SMB是windows自带的共享协议,我在Hyper-V Server上建立后,在Windows虚拟机上可以通过硬盘映映射,在Linux虚拟机上可以通过samba的方式做mount。外网访问可以通过端口映射的方式,将445端口映射到外网即可。但是遇到两个问题:

1、CentOS下mount后无法修改目录权限。我想把nextcloud的data目录放在samba共享目录下,nextcloud正确运行需要这个目录属于apache用户且权限为0770,但是默认mount时以root用户挂载的。这个我找到了办法:可以mount命令执行时对权限进行设置。

mount -t cifs -o dir_mode=0770,file_mode=0770,uid=48,gid=48,username="Administrator",password="******",vers=3.0 //192.168.1.2/E$ /mnt/nextcloud

2、smb v2+版本在Linux下mount时会出现文件夹丢失的情况。挂载后使用ls -la命令无法看到部分文件夹,使用cd+tab自动补全也无法成功,但是可以直接cd到文件夹下。Google后确认时smb v2+的bug,暂未修复,只能通过启用不安全的smb v1(windos server默认时禁用的),然后在mount命令中指定版本vers=1.0来解决。

可以参考此份Bug Report:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1572132

3、在iOS上使用PhotoSync软件进行照片备份时,如果使用SMB方式连接,也需要在Server端开启Samba 1.0支持,否则会报Samba链接错误(Code:56)。

FTP/WebDAV

这俩放一起讲,因为方式都差不多,可以实现共享,但也存在一些问题:

1、如果时在虚拟机上开FTP共享用SMB挂载的磁盘,将无法访问。认证的时候会一直要求登录

2、WebDAV不能挂载磁盘根目录,需要指定一个目录

3、需要使用IIS开web服务器

4、速度和稳定性实际使用不如smb

5、FTP时应用层协议,不能向文件系统一样挂载

其中FTP还得单独讲一下,FTP分为主动和被动模式。

如果不开启被动模式,访问的时候就需要在IE高级设置中关闭“使用被动FTP”选项(即使是想在资源管理器里用ftp://xxxx访问也一样得去IE设置里修改),而且也无法在外网通过FTP APP访问(不做好被动设置的话,在APP里无论选主动还是被动都无法连接)。

如果需要开启被动模式,那需要做好两个设置,1、在FTP服务器设置中,开放被动FTP端口,我设置成了5000-5099;2、需要在防火墙设置里,把/system32/svchost.exe设置为允许。

考虑到内网共享后面还有更简单的NFS方式(至少不用开IIS),这两个就先放弃了。

NFS

这个简单,但是安全性比较低。所以我只拿来做内网共享了。由于是匿名的,所以唯一的安全方式是在权限中限制可以访问的IP。优点也很明显:

1、无需登录,操作简单

2、在linux下安装nfs-utils即可mount。mount后可以修改目录权限(比samba方便许多)

3、无需使用其他服务

方案:

服务端:Windows Server开SMB+NFS共享。

内网Windows虚拟机:SMB磁盘映射

内网Linux虚拟机:NFS挂载

外网APP:SMB端口映射

 

KMS客户端安装密钥

Windows Server 半年频道版本

Windows Server 版本 1809

操作系统版本 KMS 客户端安装密钥
Windows Server Datacenter 6NMRW-2C8FM-D24W7-TQWMY-CWH2D
Windows Server Standard N2KJX-J94YW-TQVFB-DG9YT-724CC

Windows Server 版本 1803

操作系统版本 KMS 客户端安装密钥
Windows Server Datacenter 2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG
Windows Server Standard PTXN8-JFHJM-4WC78-MPCBR-9W4KR

Windows Server 版本 1709

操作系统版本 KMS 客户端安装密钥
Windows Server Datacenter 6Y6KB-N82V8-D8CQV-23MJW-BWTG6
Windows Server Standard DPCNP-XQFKJ-BJF7R-FRC8D-GF6G4

Windows Server LTSC/LTSB 版本

Windows Server 2019

操作系统版本 KMS 客户端安装密钥
Windows Server 2019 Datacenter WMDGN-G9PQG-XVVXX-R3X43-63DFG
Windows Server 2019 Standard N69G4-B89J2-4G8F4-WWYCC-J464C
Windows Server 2019 Essentials WVDHN-86M7X-466 P 6-VHXV7-YY726

Windows Server 2016

操作系统版本 KMS 客户端安装密钥
Windows Server 2016 Datacenter CB7KF-BWN84-R7R2Y-793K2-8XDDG
Windows Server 2016 Standard WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY
Windows Server 2016 Essentials JCKRF-N37P4-C2D82-9YXRT-4M63B

Windows 10 中,所有受支持的半年频道版本

操作系统版本 KMS 客户端安装密钥
Windows 10 专业版 W269N-WFGWX-YVC9B-4J6C9-T83GX
Windows 10 专业版 N MH37W-N47XK-V7XM9-C7227-GCQG9
Windows 10 专业工作站 NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J
Windows 10 专业工作站 N 9FNHH-K3HBT-3W4TD-6383H-6XYWF
Windows 10 专业教育版 6TP4R-GNPTD-KYYHQ-7B7DP-J447Y
Windows 10 专业教育版 N YVWGF-BXNMC-HTQYQ-CPQ99-66QFC
Windows 10 教育版 NW6C2-QMPVW-D7KKK-3GKT6-VCFB2
Windows 10 教育版 N 2WH4N-8QGBV-H22JP-CT43Q-MDWWJ
Windows 10 企业版 NPPR9-FWDCX-D2C8J-H872K-2YT43
Windows 10 企业版 N DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4
Windows 10 企业版 G YYVX9-NTFWV-6MDM3-9PT4T-4M68B
Windows 10 企业版 G N 44RPN-FTY23-9VTTB-MP9BX-T84FV

Windows 10 LTSC/LTSB 版本

Windows 10 LTSC 2019

操作系统版本 KMS 客户端安装密钥
Windows 10 企业版 LTSC 2019 M7XTQ-FN8P6-TTKYV-9D4CC-J462D
Windows 10 企业版 N LTSC 2019 2NFX-8DJQP-P6BBQ-THF9C-7CG2H

Windows 10 LTSB 2016

操作系统版本 KMS 客户端安装密钥
Windows 10 企业版 LTSB 2016 DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ
Windows 10 企业版 N LTSB 2016 FFDN-GRT3P-VKWWX-X7T3R-8B639

Windows 10 LTSB 2015

操作系统版本 KMS 客户端安装密钥
Windows 10 企业版 2015 长期服务 WNMTR-4C88C-JK8YV-HQ7T2-76DF9
Windows 10 企业版 2015 长期服务 N 2F77B-TNFGY-69QQF-B8YKP-D69TJ

Windows Server 早期版本

Windows Server 2012 R2

操作系统版本 KMS 客户端安装密钥
Windows Server 2012 R2 Server Standard D2N9P-3P6X9-2R39C-7RTCD-MDVJX
WindowsServer 2012 R2 Datacenter W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9
WindowsServer 2012 R2 Essentials KNC87-3J2TX-XB4WP-VCPJV-M4FWM

Windows Server 2012

操作系统版本 KMS 客户端安装密钥
Windows Server 2012 BN3D2-R7TKB-3YPBD-8DRP2-27GG4
Windows Server 2012 N 8N2M2-HWPGY-7PGT9-HGDD8-GVGGY
Windows Server 2012 单语言版 2WN2H-YGCQR-KFX6K-CD6TF-84YXQ
Windows Server 2012 特定国家/地区版 4K36P-JN4VD-GDC6V-KDT89-DYFKP
Windows Server 2012 Server Standard XC9B7-NBPP2-83J2H-RHMBY-92BT4
Windows Server 2012 MultiPoint Standard HM7DN-YVMH3-46JC3-XYTG7-CYQJJ
Windows Server 2012 MultiPoint Premium XNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G
Windows Server 2012 Datacenter 48HP8-DN98B-MYWDG-T2DCC-8W83P

Windows Server 2008 R2

操作系统版本 KMS 客户端安装密钥
Windows Server 2008 R2 Web 版 6TPJF-RBVHG-WBW2R-86QPH-6RTM4
Windows Server 2008 R2 HPC 版 TT8MH-CG224-D3D7Q-498W2-9QCTX
WindowsServer 2008 R2 Standard YC6KT-GKW9T-YTKYR-T4X34-R7VHC
WindowsServer 2008 R2 企业版 489J6-VHDMP-X63PK-3K798-CPX3Y
WindowsServer 2008 R2 Datacenter 74YFP-3QFB3-KQT8W-PMXWJ-7M648
面向基于 Itanium 系统的 Windows Server 2008 R2 GT63C-RJFQ3-4GMB6-BRFB9-CB83V

Windows Server 2008

操作系统版本 KMS 客户端安装密钥
Windows Web Server 2008 WYR28-R7TFJ-3X2YQ-YCY4H-M249D
Windows Server 2008 Standard TM24T-X9RMF-VWXK6-X8JC9-BFGM2
不带 Hyper-V 的 Windows Server 2008 Standard W7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ
Windows Server 2008 企业版 YQGMW-MPWTJ-34KDK-48M3W-X4Q6V
不带 Hyper-V 的 Windows Server 2008 企业版 39BXF-X8Q23-P2WWT-38T2F-G3FPG
Windows Server 2008 HPC RCTX3-KWVHP-BR6TB-RB6DM-6X7HP
Windows Server 2008 Datacenter 7M67G-PC374-GR742-YH8V4-TCBY3
不带 Hyper-V 的 Windows Server 2008 Datacenter 22XQ2-VRXRG-P8D42-K34TD-G3QQC
面向基于 Itanium 系统的 Windows Server 2008 4DWFP-JF3DJ-B7DTH-78FJB-PDRHK

早期版本的 Windows

Windows 8.1

操作系统版本 KMS 客户端安装密钥
Windows 8.1 专业版 GCRJD-8NW9H-F2CDX-CCM8D-9D6T9
Windows 8.1 专业版 N HMCNV-VVBFX-7HMBH-CTY9B-B4FXY
Windows 8.1 企业版 MHF9N-XY6XB-WVXMC-BTDCT-MKKG7
Windows 8.1 企业版 N TT4HM-HN7YT-62K67-RGRQJ-JFFXW

Windows 8

操作系统版本 KMS 客户端安装密钥
Windows 8 专业版 NG4HW-VH26C-733KW-K6F98-J8CK4
Windows 8 专业版 N XCVCF-2NXM9-723PB-MHCB7-2RYQQ
Windows 8 企业版 32JNW-9KQ84-P47T8-D8GGY-CWCK7
Windows 8 企业版 N JMNMF-RHW7P-DMY6X-RF3DR-X2BQT

Windows 7

操作系统版本 KMS 客户端安装密钥
Windows 7 专业版 FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
Windows 7 专业版 N MRPKT-YTG23-K7D7T-X2JMM-QY7MG
Windows 7 专业版 E W82YF-2Q76Y-63HXB-FGJG9-GF7QX
Windows7 企业版 33PXH-7Y6KF-2VJC9-XBBR8-HVTHH
Windows 7 企业版 N YDRBP-3D83W-TY26F-D46B2-XCKRJ
Windows 7 企业版 E C29WB-22CC8-VJ326-GHFJW-H9DH4

使用vlmcsd部署kms服务

在服务器部署vlmcsd服务

yum install gcc -y
wget https://github.com/Wind4/vlmcsd/archive/svn1112.tar.gz
tar -xvzf svn1112.tar.gz
cd vlmcsd-svn1112/
make
cd bin/
./vlmcsd -l /var/log/vlmcsd.log

激活Windows Server 2019 Datacenter

@CMD

slmgr /upk
slmgr /ipk WMDGN-G9PQG-XVVXX-R3X43-63DFG
slmgr /skms <KMS_Server_IP>
slmgr /ato
slmgr /dlv

 

Windows Server 2019安装Intel I219-V I211网卡驱动

由于Windows系统原因,一般桌面主板自带的Intel网卡(典型的包括I211、I211-AT、I217-V、I218-V、I219-V)等,都无法在Windows Server系统上找到对应的驱动。但是,这些网卡几乎都有对应的服务器主板版本(例如I219-LM)。这些网卡其实并没有本质上的差别,只是在驱动层面,利用不同的驱动签名使得显卡不能通用。本文将详细说明如何在Windows Server系统上安装这些驱动。

1、驱动下载

首先,在Intel官网下载网卡驱动程序包,由于Windows Server 2019刚发布,所以目前没有2019的专门页面,但可以通用Windows Server 2016版本(下载页面)。下载完成后,得到一个PROWinx64.exe的自解压安装包,使用7zip或其他解压软件解压到任意文件夹。

2、修改驱动程序文件(以I211、I219-V为例)

进入第一步解压后的文件夹,依次进入PRO1000 -> Winx64 -> NDIS64文件夹。这个文件夹中,有举例的I211、I219-V两张网卡的驱动安装文件。

接下来分别配置这两个驱动安装文件

  • I219-V

用记事本打开e1d64x64.inf这个文件,搜索I219-V找到对应的ID

用这个ID搜索到所在的键(就在同一个文件的上方)[Intel.NTamd64.6.3.1]。找到与这个ID相关的几行(可能是2行也可能是3行)

复制这两行,在刚才的[Intel.NTamd64.6.3.1]这个键下面,有另外一个[Intel.NTamd64.6.3]键。把刚才复制的几行粘贴到这个键的最后。保存,关闭。

  • I211

和I219-V差不多的步骤,不过配置的文件是同文件夹下的另一个文件,e1r64x64.inf。同样通过搜索找到I211所对应的ID

用这个ID搜索到对应的键[Intel.NTamd64.6.3.1]和配置行

将此行复制到后面的另一个键[Intel.NTamd64.6.3]中。保存,关闭。

3、开启测试模式

因为我们修改了签名配置文件,所以如果要安装这些驱动,我们需要开启测试模式,允许未经过签名的驱动。

在CMD(管理员)中执行以下两条命令

bcdedit -set loadoptions DISABLE_INTEGRITY_CHECKS
bcdedit -set TESTSIGNING ON

执行完后,需要重启电脑,以进入测试模式。

4、安装驱动

这里以I211网卡驱动安装为例,I219-V安装同理,只是在后续步骤选择驱动程序文件时不同而已。

在设备管理器中,找到那个没有驱动的网络控制器,右键选择“更新驱动程序”

选择“浏览我的计算机以查找驱动程序软件”

选择“让我从计算机上的可用驱动程序列表中选取”

下滑下拉列表,找到并选择“网络设配器”,点击下一步

这里不做选择,点击右下的“从磁盘安装”

在弹出窗口中,点击右下角的浏览,选择我们刚才修改的I211所在的配置文件,即e1r64x64.inf,然后点击确认(这里如果是安装I219-V驱动的话,选择e1d64x64.inf这个文件,其他与I211步骤相同)。

上一步点击完确认后,由于我们之前修改好了配置文件,所以就可以在后续窗口里看见I211驱动了,点击下一步。

这里会弹出一个警告,因为我们对配置文件进行了修改,签名肯定是无法通过验证的,所以这里会有这个警告信息。当然点击“始终安装此驱动程序软件”

安装成功提示

安装完成后,在设备管理器中,也能看见这张网卡信息了。

5、关闭测试模式

安装完成后,关闭测试模式。在CMD中执行以下命令

bcdedit -set loadoptions ENABLE_INTEGRITY_CHECKS
bcdedit -set TESTSIGNING OFF

重启电脑,完成。

6、附加:开启WLAN

默认安装时无线LAN服务是关闭的,如果需要开启,只需要在“添加角色和功能”中,选择开启“无线LAN服务”即可。

使用DNSPOD API完成DDNS

原理是调用DNSPOD API接口,从本地发送Post请求更新DNSPOD上的域名解析记录,将记录值修改为本地当前IP。这样就可以通过DNSPOD的域名记录访问到路由,即完成动态域名解析。由于请求限制为每小时5个,建议创建cron job每15分钟运行一次即可。以下是官方文档:

接口地址:
HTTP请求方式:
  • POST
请求参数:
  • 公共参数
  • domain_id 或 domain, 分别对应域名ID和域名, 提交其中一个即可
  • record_id 记录ID,必选
  • sub_domain 主机记录,如 www
  • record_line 记录线路,通过API记录线路获得,中文,比如:默认,必选
  • record_line_id 线路的ID,通过API记录线路获得,英文字符串,比如:‘10=1’ 【record_line 和 record_line_id 二者传其一即可,系统优先取 record_line_id】
  • value IP地址,例如:6.6.6.6,可选
响应代码:
  • 共通返回
  • -15 域名已被封禁
  • -7 企业账号的域名需要升级才能设置
  • -8 代理名下用户的域名需要升级才能设置
  • 6 域名ID错误
  • 7 不是域名所有者或没有权限
  • 8 记录ID错误
  • 21 域名被锁定
  • 22 子域名不合法
  • 23 子域名级数超出限制,比如免费套餐域名不支持三级域名
  • 24 泛解析子域名错误,比如免费套餐载名不支持 a*
  • 25 轮循记录数量超出限制,比如免费套餐域名只能存在两条轮循记录
  • 26 记录线路错误,比如免费套餐域名不支持移动、国外
注意事项:
  • 如果1小时之内,提交了超过5次没有任何变动的记录修改请求,该记录会被系统锁定1小时,不允许再次修改,所以在开发和测试的过程中,请自行处理IP变动,仅在本地IP发生变动的情况下才调用本接口。
  • 如何理解没有任何变动的记录修改请求?比如原记录值已经是 1.1.1.1,新的请求还要求修改为 1.1.1.1。

示例:

curl -X POST https://dnsapi.cn/Record.Ddns -d 'login_token=LOGIN_TOKEN&format=json&domain_id=2317346&record_id=16894439&record_line_id=10%3D0&sub_domain=www'

返回参考:

  • JSON:

    {
        "status": {
            "code":"1",
            "message":"Action completed successful",
            "created_at":"2015-01-18 17:23:58"
        },
        "record": {
            "id":16909160,
            "name":"@",
            "value":"111.111.111.111"
        }
    }
    
  • 字段说明:
    • id: 记录ID, 即为 record_id
    • name: 子域名
    • value”: 记录值
注意:
record_line_id 形如 “10=3”,其中可能会包含等号,即 “=”,如果是通过类似 URL 传递参数,需要将 ‘=’ 转义成 ‘%3D’

参考:DNSPOD API文档

Windows后台运行Minecraft服务器

官网提供的服务器启动命令是

java -Xmx1024M -Xms1024M -jar server.jar nogui

在Linux下,我们后台启动服务器非常简单,只需要在命令后加上&即可

nohup java -Xmx1024M -Xms1024M -jar server.jar nogui &

但是,在Windows下,直接在命令行中启动的话,将会关联到cmd这个父进程。也就是说,cmd窗口一关,java服务也会停止。这显然是我们不喜欢的,所以需要后台运行。于是我们用javaw完成:

@echo off 
start javaw -Xmx1024M -Xms1024M -jar server.jar nogui

将上面内容保存为bat文件执行即可。

删除Windows 10与Ubuntu 18.04双系统中的Ubuntu启动项(UEFI)

删除需要用到DiskGenius软件,请准备好。免费版本即可,无需使用高级功能。

请严格按照以下顺序执行,否则可能出现删除失败的情况。

删除UEFI启动项:

启动CMD(管理员)
bcdedit /export savebcd
bcdedit /enum firmware
找到Ubuntu的对应identifier(标识符),复制(控制台下复制用右键标记-回车)
bcdedit /store savebcd /delete {xxx} ({}里面就是上一步的identifier)
bcdedit /import savebcd /clean

删除UEFI引导文件:

使用DiskGenius删除EFI分区中与Ubuntu启动的相关文件一般为

/EFI/ubuntu
/EFI/BOOT 可能有这个文件夹,通过创建时间判断

删除Ubuntu操作系统目录:

可以直接使用Windows“磁盘管理”工具删除分区。如果遇到“删除分区”为灰色的情况,请用在CMD中使用diskpart工具删除。

备注:

1、上面提到的savebcd文件默认存储在c:\windows\system32文件夹中

2、在PowerShell中执行以上命令是会出错,请使用CMD或启动PowerShell后键入cmd并回车。

Windows 10与Ubuntu 18.04双系统安装(UEFI)

制作启动盘

首先下载Ubuntu 18.04的iso镜像文件。这里给出中科大源的下载地址:点击下载 。完成后,用软件写入到U盘中待用。这里推荐使用UltraISO(我用的就是这个),或者Rufus(选择UEFI+MBR模式)。这部分比较简单,这里不详述。

准备磁盘空间

在Windows的“磁盘管理”工具中,准备好足够的空间备用(未分区,未格式化)。

UEFI安装准备

  • 插入U盘,开机
  • 进入BIOS,关闭安全启动(Secure-Boot)、快速启动(Fast-Boot)。
  • 选择使用U盘启动或者在启动顺序中将U盘提高到第一位。

安装Ubuntu

完成准备工作后,重启。接下来是正常安装Ubuntu过程,这里只对其中需要注意的地方进行说明:

1、分区表参考

/swap 主分区。一般设置等于物理内存
/home 逻辑分区。用户目录,可以设置稍大
/ 逻辑分区。根目录,剩余所有空间

2、关于/boot分区

由于是UEFI启动,所以无需挂载这个分区

3、关于EFI分区

实际测试,以下三种方式,所得到的结果均为启动文件被放在和Windows同一个EFI分区中

  • 方式一:Ubuntu安装时选择兼容Windows分区模式
  • 方式二:分区时选择自定义方式,并创建EFI分区,并在引导文件安装位置选择创建的EFI分区
  • 方式三:分区时选择自定义方式,不创建EFI分区,引导文件安装位置选择Windows Boot Manager所在分区,即Windows的EFI分区

所以,既然所有方式结果都一样,我们应该选择方式三。因为方式二将创建一个毫无用处的EFI分区。方式一只会创建一个“/”根目录挂载点。

选择启动方式

安装完后重启系统,将默认进入Ubuntu的UEFI启动界面。如果想让Windows作为默认启动选项,只需在BIOS中将UEFI启动顺序中的Windows对应项提升到首位即可