WordPress无法正常显示空行/回行/回车/换行的解决方法

在WordPress后台编辑文章的时候,明明有按ENTER空行,但是发表后发现空行完全不见了。

自从使用上WP之后,这个问题一直无法得到解决,一直怀疑Wordpress的编辑器不太好用。 有时候在“可视化”模式下写完文章用“HTML”模式看一下,再切换回“可视化”结果就变了。

而且经常有时候写文章想分段空一个空白行出来。必须切换到“HTML”模式中用 <br /> 来实现这个目的。关键是反复几次切换之后,手工添加的 <br /> 的也会莫名其秒的丢失。

这个是由于WordPress的 “自动省略或删除空白行” 导致的。

如果安装了 TinyMCE Advanced 可以在下面选项处关闭这个功能,如下图:

继续阅读WordPress无法正常显示空行/回行/回车/换行的解决方法

OpenMediaVault SMB/CIFS报错,无法连接,日志输出错误NT_STATUS_ACCESS_DENIED

OpenMediaVault SMB/CIFS配置完成之后,打开某些目录提示错误"找不到链接",其他目录正常。

修改配置文件"/etc/samba/smb.conf"中的"log level = 3",然后观察日志"tail -f /var/log/syslog",

观察到如下日志输出:

Aug 31 23:54:34 openmediavault smbd[2389]: [2019/08/31 23:54:34.006550,  3] ../source3/smbd/service.c:102(set_current_service)
Aug 31 23:54:34 openmediavault smbd[2389]:   chdir (/media/6357625f-xxxx-xxxx-xxxx-xxxxxxxxxxxx/MyCloud) failed, reason: 权限不够
Aug 31 23:54:34 openmediavault smbd[2389]: [2019/08/31 23:54:34.006667,  3] ../source3/smbd/smb2_server.c:3097(smbd_smb2_request_error_ex)
Aug 31 23:54:34 openmediavault smbd[2389]:   smbd_smb2_request_error_ex: smbd_smb2_request_error_ex: idx[1] status[NT_STATUS_ACCESS_DENIED] || at ../source3/smbd/smb2_server.c:2449
Aug 31 23:54:34 openmediavault smbd[2389]: [2019/08/31 23:54:34.012733,  3] ../source3/smbd/service.c:1098(close_cnum)
Aug 31 23:54:34 openmediavault smbd[2389]:   longskys-mbp (ipv4:10.10.10.116:54656) closed connection to service IPC$
Aug 31 23:54:34 openmediavault smbd[2389]: [2019/08/31 23:54:34.014028,  3] ../source3/smbd/service.c:102(set_current_service)
Aug 31 23:54:34 openmediavault smbd[2389]:   chdir (/media/6357625f-xxxx-xxxx-xxxx-xxxxxxxxxxxx/MyCloud) failed, reason: 权限不够
Aug 31 23:54:34 openmediavault smbd[2389]: [2019/08/31 23:54:34.014151,  3] ../source3/smbd/smb2_server.c:3097(smbd_smb2_request_error_ex)
Aug 31 23:54:34 openmediavault smbd[2389]:   smbd_smb2_request_error_ex: smbd_smb2_request_error_ex: idx[1] status[NT_STATUS_ACCESS_DENIED] || at ../source3/smbd/smb2_server.c:2449
Aug 31 23:54:34 openmediavault smbd[2389]: [2019/08/31 23:54:34.017951,  2] ../source3/smbd/service.c:1098(close_cnum)
Aug 31 23:54:34 openmediavault smbd[2389]:   longskys-mbp (ipv4:10.10.10.116:54656) closed connection to service MainBackup

不管如何修改,都搞不定,观察目录权限以及所有者信息,如下:

root@openmediavault:~# ls -la /media/
总用量 20
drwxr-xr-x   6 root root  4096 8月  25 00:03 .
drwxr-xr-x  24 root root  4096 8月  30 23:23 ..
drwxrwx---   1 root  1000  164 6月   2 14:37 6357625f-xxxx-xxxx-xxxx-xxxxxxxxxxxx
drwxrwsr-x+  4 root users 4096 8月  15  2017 9b5fcef5-xxxx-xxxx-xxxx-xxxxxxxxxxxx
drwxr-xr-x   2 root root  4096 5月  26  2015 cdrom
lrwxrwxrwx   1 root root     4 5月  26  2015 usb -> usb0
drwxr-xr-x   2 root root  4096 5月  26  2015 usb0

观察到正常的目录的权限是 root:users 而不正常的目录权限是 root:1000,于是执行权限修改,如下:

root@openmediavault:~# sudo chown root:users /media/6357625f-xxxx-xxxx-xxxx-xxxxxxxxxxxx/
root@openmediavault:~# ls -la /media/
总用量 20
drwxr-xr-x   6 root root  4096 8月  25 00:03 .
drwxr-xr-x  24 root root  4096 8月  30 23:23 ..
drwxrwx---   1 root users  164 6月   2 14:37 6357625f-xxxx-xxxx-xxxx-xxxxxxxxxxxx
drwxrwsr-x+  4 root users 4096 8月  15  2017 9b5fcef5-xxxx-xxxx-xxxx-xxxxxxxxxxxx
drwxr-xr-x   2 root root  4096 5月  26  2015 cdrom
lrwxrwxrwx   1 root root     4 5月  26  2015 usb -> usb0
drwxr-xr-x   2 root root  4096 5月  26  2015 usb0

之后就可以正常访问了。

参考链接


家里ADSL上网无固定外网IP的群晖NAS安全实现与公网MySQL服务器主从同步

家里 `ADSL` 上网,没有办法分配固定外网 `IP` ,现在想使用群晖自带的`MariaDB` 安全实现与公网 `MySQL` 服务器主从同步。

最大的问题实际上是如果暴漏 `MySQL` 服务器的端口,但是不限制来源 `IP` 地址的话,会造成非常大的安全隐患。

但是, `ADSL` 恰恰不能提供固定的 `IP` 地址,我们需要解决这个问题。如果通过在公网数据库服务器上搭建 `OpenVPN` 服务器的方式,我们恰恰可以把内外网的设备影射到同一个子网中,而且 `OpenVPN` 提供的加密服务支持,刚刚好满足我们的安全需求。

注意一旦配置主从同步,磁盘的休眠会被MySQL的同步写入打断,导致磁盘不能正常休眠,毕竟正常情况下数据库是持续写入的,不存在很长时间的停顿。这样会导致磁盘周期性的咔咔寻道声,尤其是晚上。

噪声问题,参考 群晖(Synology) DS718+希捷酷狼(Seagate IronWolf)12TB空闲发出持续噪声

1. 参考 Ubuntu架设OpenVPN实现内网穿透 搭建整个的 `OpenVPN` 服务器。映射完成后,设备上会新增一个名为 `tun0` 的网卡设备。同时所有连接到 `VPN` 服务器的设备都被被影射到 `10.8.0.X` 的网段。 公网服务器的地址默认是 `10.8.0.1`,本文中, 群晖NAS的地址被设定为 `10.8.0.7`。

2. 配置防火墙规则,许可来自指定网卡指定地址的设备的访问。注意,此处一定要指定网卡为 `OpenVPN` 创建的虚拟网卡,否则造成安全隐患。

$ export slave_ip=10.8.0.7

#删除可能已经存在的配置,避免出现多条重复记录
$ sudo iptables -D INPUT -i tun0 -p tcp -s $slave_ip --dport 3306 -j ACCEPT
 
#增加配置,只允许特定地址访问数据库端口
$ sudo iptables -I INPUT -i tun0 -p tcp -s $slave_ip --dport 3306 -j ACCEPT

$ sudo iptables -L -n -v
 
#保存配置
$ sudo apt-get install iptables-persistent

#注意,iptables-persistent 与 ufw 冲突, 
#现象就是系统重启后执行 sudo ufw status 显示 inactive,
#但是sudo systemctrl ufw status 或sudo service ufw status 显示服务正常,
#实际上ufw并没有正常工作。
#如果两者同时安装,需要参考 https://www.mobibrw.com?p=29330 进行配置
 
$ sudo netfilter-persistent save
 
#配置被保存到/etc/iptables/rules.v4 /etc/iptables/rules.v6这两个文件下面,
#最好确认一下实际保存的内容,尤其是安装了denyhosts等其他安全软件的情况下,
#可能会记录了多余的规则,需要手工删除

3. 参照 ubuntu 16.04配置基于SSL的MySQL主从同步 配置服务器

4. 接下来是群晖NAS的配置

首先是群晖服务器上没有 `MySQL`,需要安装 `MariaDB` ,如下图:
继续阅读家里ADSL上网无固定外网IP的群晖NAS安全实现与公网MySQL服务器主从同步

解决macOS Mojave(10.14.6) SSH连接断开问题

在使用SSH客户端进行连接管理的时候如果长时间不输入命令, 服务器会自动断开连接, `macOS Mojave(10.14.6) ` 系统上问题比较严重,即时服务端一直发送数据,也会出现连接中断的情况,导致长时间执行的远程 `Shell` 会大概率失败。

# 如果全局所有用户都有效,则调整如下文件
$ sudo vim /etc/ssh/ssh_config

# 如果仅仅当前用户都有效,则调整如下文件
# vim ~/.ssh/config

然后在配置文件尾部,增加如下内容:

Host *
        SendEnv LANG LC_*

        # macOS Mojave 需要设置为 no 否则照样会断开 
        TCPKeepAlive no

        # 客户端每隔 60S 发送一个空报文
        ServerAliveInterval 60

        # macOS Mojave 需要增加,原因在于Qos检测命令不被对端支持,导致连接丢失
        # packet_write_wait: Connection to 10.10.10.111 port 22: Broken pipe
        IPQoS lowdelay throughput

同时,对于超长时间的SSH监控,需要设置屏幕关闭时不要让电脑休眠,否则依旧会断开,原因在于对端发送数据的时候,电脑休眠,对于长时间的空连接是没问题的,但是对于数据频繁发送的情况,是必须阻止电脑休眠的。如下图:
继续阅读解决macOS Mojave(10.14.6) SSH连接断开问题

iMaker 3D打印机使用最新的Ultimaker Cura 4.2.1

iMaker 3D打印机本质上是一台 `Ultimaker v1.5.7` 硬件的机器,当时买的时候,使用的软件还是早期的 `Cura 13.06.4`。

随着 `Ultimaker` 官方软件的更新,提供了更加方便的操作,以及更加稳定高效的打印能力。从实际打印效果来看,最新的软件明显优于之前的版本,升级软件是非常值得的。

但是当时的硬件厂家已经不提供技术支持了,幸好是开源的软硬件,因此只要自己动手能力足够,还是比较方便操作的。

首先参考 iMaker 3D打印机Marlin固件编译以及故障排除 升级固件到最新的`Marlin`版本。

接着根据原来的厂家说明书,我们在最新版本的 `Ultimaker Cura 4.2.1` 上进行如下操作:

继续阅读iMaker 3D打印机使用最新的Ultimaker Cura 4.2.1

iMaker 3D打印机Marlin固件编译以及故障排除

几年之前买的一台 `iMaker` 3D打印机,已经在角落里面落灰许久了,本质上是一台  `Ultimaker v1.5.7`硬件的机器,因此使用 `Ultimaker` 的软件跟固件都是没有问题的。貌似这家公司现在已经快不行了的样子。 官网都已经打不开了。
继续阅读iMaker 3D打印机Marlin固件编译以及故障排除

群晖DSM 6.2增加zgrep命令

群晖 `DSM 6.2` 系统上执行 `zgrep` 命令的时候提示找不到命令,其他平台系统(`ARM` ),需要手工编译安装`ZUtils`,来提供。但是如果是 `X86` 系统的话(比如 `DS718+` ),可以直接使用交叉编译环境里的工具,直接拷贝到系统即可。

首先参考 搭建群晖交叉编译环境(DS718+/ubuntu 16.04.6/DSM 6.2.1-23824 Update 6) 搭建群晖 `DSM 6.2` 的编译环境。

`DS718+` 执行如下:

$ cd  ~/toolkit//build_env/ds.x64-6.2/

$ scp -r ./bin/zgrep username@10.10.10.111:~/

$ ssh 10.10.10.111 -l username

$ sudo mv ~/zgrep /usr/local/bin/

 

 

需要编译的(`ARM` 芯片版本),执行如下命令编译:

$ cd ~/toolkit/pkgscripts-ng

# 下载 ZUtils 1.8
$ sudo wget http://deb.debian.org/debian/pool/main/z/zutils/zutils_1.8.orig.tar.xz -O ../build_env/ds.x64-6.2/root/zutils_1.8.orig.tar.xz
 
# 也可以本站下载 sudo wget http://www.mobibrw.com/wp-content/uploads/2019/04/zutils_1.8.orig_.tar.xz -O ../build_env/ds.x64-6.2/root/zutils_1.8.orig.tar.xz

$ sudo chroot ../build_env/ds.x64-6.2/
 
$ cd root
 
$ export PREFIX="/root/build_libs"
 
$ export HOST="x86_64-linux-gnu"
 
$ mkdir -p $PREFIX

# 编译 ZUtils 1.8
$ tar xvf zutils_1.8.orig.tar.xz

$ cd zutils-1.8/
 
$ PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ \
LD_LIBRARY_PATH=$PREFIX/lib/ \
./configure \
--prefix=$PREFIX
 
$ make clean
 
$ make 
 
$ make install

对于编译好的程序,复杂的可以自己制作安装包,简单的可以直接通过SSH推送到设备的/usr/local/bin目录下即可。

比如本次编译结果:

# 暂时只需要zgrep,因此只安装 zgrep
$ scp -r $PREFIX/bin/zgrep username@10.10.10.111:~/

$ ssh 10.10.10.111 -l username

$ sudo mv ~/zgrep /usr/local/bin/

参考链接