腾讯服务器 - iredmail - 安装问题 - python web.py

环境:腾讯云香港机,iredmail 1.3.1,centos7

问题:iredmail安装完成后,在浏览器里访问 iredadmin 提示 Internal Server Error 出错。

过程:查看 /var/log/message 内容,

Jul 22 13:35:30 mail uwsgi: *** Operational MODE: preforking ***
Jul 22 13:35:30 mail uwsgi: Traceback (most recent call last):
Jul 22 13:35:30 mail uwsgi:  File "iredadmin.py", line 9, in <module>
Jul 22 13:35:30 mail uwsgi:
Jul 22 13:35:30 mail uwsgi: from libs import iredbase
Jul 22 13:35:30 mail uwsgi:  File "/opt/www/iRedAdmin-1.0/libs/iredbase.py", line 7, in <module>
Jul 22 13:35:30 mail uwsgi:
Jul 22 13:35:30 mail uwsgi: import web
Jul 22 13:35:30 mail uwsgi: ImportError
Jul 22 13:35:30 mail uwsgi: :
Jul 22 13:35:30 mail uwsgi: No module named web
Jul 22 13:35:30 mail uwsgi:
Jul 22 13:35:30 mail uwsgi: unable to load app 0 (mountpoint='') (callable not found or import error)
Jul 22 13:35:30 mail uwsgi: *** no app loaded. going in full dynamic mode ***

回查安装过程中,有相关的错误提示内容:

Complete!
[ INFO ] Installing required Python-3 modules with pip3: web.py>=0.51 web.py>=0.51
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting web.py>=0.51
  The repository located at mirrors.tencentyun.com is not a trusted or secure host and is being ignored. If this repository is available via HTTPS it is recommended to use HTTPS instead, otherwise you may silence this warning and allow it anyways with '--trusted-host mirrors.tencentyun.com'.
  Could not find a version that satisfies the requirement web.py>=0.51 (from versions: )
No matching distribution found for web.py>=0.51
[ INFO ] Installing required Python-2 modules with pip2: web.py>=0.51 more-itertools==5.0.0 web.py>=0.51 more-itertools==5.0.0
Collecting web.py>=0.51
  The repository located at mirrors.tencentyun.com is not a trusted or secure host and is being ignored. If this repository is available via HTTPS it is recommended to use HTTPS instead, otherwise you may silence this warning and allow it anyways with '--trusted-host mirrors.tencentyun.com'.
  Could not find a version that satisfies the requirement web.py>=0.51 (from versions: )
No matching distribution found for web.py>=0.51
You are using pip version 8.1.2, however version 20.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

那么可尝试手工安装python的相关包,
pip3 install web.py>=0.51
pip2 install web.py>=0.51 more-itertools==5.0.0

然后再重启相应服务(iredamin和iredpad等),或重启系统后测试,可以正常登录到iredadmin进行管理了。

参考:https://forum.iredmail.org/topic17082-internal-server-error-iredadmin.html

宝塔面板 - 安装 php 7.3 - can't find evp.h

现象:通过宝塔面板,在“软件商店”里安装php7.3,失败,提示 can't find evp.h。

尝试:查找 evp.h 文件,发现有两个地方有,/usr/include/openssl/evp.h 和 /usr/local/src/openssl-1.1.1c/include/openssl/evp.h 。查看 /www/server/panel/install/php.sh 里的内容,php7.3安装的编译参数有 --with-openssl=/usr/local/openssl 。尝试将usr/local/src/openssl-1.1.1c/include/openssl/ 里的编译原文件复制到 /usr/local/openssl/include/openssl/ 后,再安装就成功了。

参考:

我今天注销了“58同城”的账号

最早(应该至少两年前)是家里人叫我在“58同城”上发个招租广告信息,所以注册了账号。房子租出去后,我主动下架广告信息了。

2018年,我想招个“徒弟”来,先在“和平社区”网站发广告帖,没效果。想到老表提到过“58同城”,所以打算在“58同城”里发招工(主机客服)广告信息。印象中我交了10元(还是30元)完成了营业执照的认证。在“58同城”是有些流量,我曾收到过一些应聘的信息,也面试过几位应聘者,但没招成。过一段时间后,有汕头的一个固话几次问我有没有招到人,我说现在不招了。我觉得发布的广告信息可能被抓取了,所以我主动下架了招聘信息。

大概今年的5月,我先是莫名其妙接到个女声的电话,问是不是还在招人,我问她从哪里看到的,答说是在网上。我想再碰碰运气,想再招人,但我更改了之前的招聘信息内容。之前工作地点是“工作室”,现在我搬了地方,在家里“上工”了,所以我将招聘内容改成:在家兼职,不给工资,免费教;来我家上工,给工资一千五左右,学成之后可自己找主机客服的工作,自己在家里做。我的想法是,我免费网上教或我付钱来我这里学,你学会后可以到外边找到比来我这更自由、更高工资的工作。刚发布时,“58同城”没说我违规。在线聊过几位,其中一个是本地的,问我教人要不要收钱,我说不收,免费的。可能她觉得还是不靠谱,所以没谈成。之后看到系统提示有人应聘的信息,我通过站内的聊天窗口向应聘者打招呼,想联系到她。但应聘者好像很反感,直接回复不要再联系她了(但我纳闷,这是我第一次联系她的)。然后第二天,我收到“58同城”的站内通知,大概是说我发布的内容虚假,被删除了。那时我有点生气,因为我不觉得我的广告信息有虚假内容,我没管。再过了一个多月,我想修改内容后再试试发布招聘信息,但“58同城”的系统提示,因为违过规,我不能再发布信息。我翻出之前的站内通知,按里边提示的,申诉。过了几天我回去网站查看,提示处罚无误,申诉失败。我再看站内的通知,里边也有将我的手机号列为处罚对象的消息,这就怪不得被删除招聘信息后,我连“58同城”的站内新信息也没有手机短信通知了。

既然如此,我点击申请注销“58同城”的账号,原因是,“你不说明白违规原因,我留着账号有何用?”但提示有非法字符,我只好将标点符号删除之后重新提交,提示注销账号成功。

我因发布“虚假内容”被“58同城”删除广告信息,且被列到黑名单中,不再允许发布新信息。我认,因为毕竟是在人家的平台上发布信息,但因为我不能获知哪部分或哪点的内容是“虚假”的,申诉被驳回后,那我主动注销了“58同城”的账号。感谢“58同城”,至少,它能让我自助完成销号,“双向选择”。

centos8 - xampp linux 5.5 - use a 32 bit compatibility library for your system - libnsl

问题:在centos8 64位系统里安装xampp for linux php 5.5,提示 “XAMPP is currently only availably as 32 bit application. Please use a 32 bit compatibility library for your system.”

尝试:可能是php使用了libnsl.so的模块,导致php加载出错。yum install libnsl 可安装 libnsl 后再次尝试。

参考:https://forums.centos.org/viewtopic.php?t=71785

笨方法制作 NetBSD 9 LiveCD

过程:

  1. 在 Windows 10 的 VirtualBox 里创建虚拟机,安装好 NetBSD 9 64位的系统
  2. 在 NetBSD 系统里,用 pkg_add 安装好mklivecd,用来自动生成netbsd内核及文件系统
  3. 可能因为mklivedcd没有更新,自动创建好的iso文件在虚拟机里测试,自动挂载临时文件系统时会报错,如提示找不到/rescure/mount_mfs等程序。Mounthing memory filesystem directories: dev, eval: /rescure/mount_mfs: not found...临时的解决办法是从根目录的相应位置将提到的程序复制到/rescure目录里
  4. 用mklivecd自动制作的iso文件,在带有光驱设备的虚拟机或带有IPMI虚拟光驱的服务器里测试,是可运行的,boot device:cd0 root on cdoa dumps on cd0b。但在使用pxelinux或grub的环境中无法找到文件系统,启动屏幕信息停留在 boot device: root device:
  5. 尝试转到grub引导方向。新建一个虚拟机,安装debian 10系统,用于grub引导测试。先是尝试用grub的knetbsd来引导mklivecd和netbsd官方的安装iso,都是提示如之前的错误提示,找不到文件root设备。按网上的教程,grub的kfreebsd是能成功引导FreeBSD的新版本安装镜像,但必须添加相应的模块和参数,如 kfreebsd_module ${freebsd_root}/cd.iso type=mfs_root, set kFreeBSD.vfs.root.mountfrom="cd9660:/dev/md0", set kFreeBSD.vfs.root.mountfrom.options=ro 我死搬硬套,将FreeBSD字样换成netbsd,无效。翻看grub的资料后,grub在knetbsd加载内核后,可以通过knetbsd_module_elf来加载安装光盘里的miniroot.kmod,成功启动,可以看到netbsd的安装欢迎信息。但我不知道如何将文件系统镜像塞到miniroot.kmod中,尝试在netbsd虚拟机里make miniroot.kmod,无预期效果(miniroot.kmod的个头不会增加,还是仅几百KB)
  6. 翻看netbsd的资料,是可以将ramdisk塞到内核netbsd中,ramdisk的程序可以通过list配置文件来增加。但我尝试很多次,均无法添加如可远程连接的程序,如telnetd,sshd和dropbear。用默认的ramdisk配置生成的文件塞到内核netbsd后,在grub是能直接knetbsd引导后启动,是netbsd的安装欢迎信息
  7. 尝试直接将mklivecd生成的iso目录创建ramdisk,然后塞到netbsd内核中,之后grub尝试加载netbsd内核,VirtualBox报错,Guru Meditation,强制退出虚拟机。估计netbsd的内核个头太大了,当时netbsd的内核约有230M
  8. 尝试通过crunchgen来生成静态、精简的程序,如只包括必须的init, login等,以减小ramdisk的个头,但失败,会报哪个未定义等等,即使已经将Makefile里提到的libs库都写到配置文件中,总crunchgen不成
  9. 回到mklivecd生成的iso目录(如netbsd安装说明提到的,最小化安装仅需base.tar.xz和etc.tar.xz),尝试先移除一些非必要的目录,如firmware(主要包含无线网卡的驱动文件);删除了netbsd内核,因为要的是文件系统,不是内核文件本身。然后看到usr目录占得多,干脆就先移走原来的usr/bin和usr/sbin目录,再测试要用到哪个程序,如login能不能用,不能用就将程序放回;删除几个非必须的usr/lib大个头文件。反复测试,直到将文件系统iso的目录大小减小到约83M(约95M带有ramdisk的netbsd内核可在grub成功引导)。用如 /usr/src/obj/tooldir.NetBSD-9.0-amd64/bin/nbmakefs -t ffs -s 65093632 ramdisk.fs.tmp iso 的命令生成指定大小的ramdisk.fs文件。用如 /usr/src/obj/tooldir.NetBSD-9.0-amd64/bin/x86_64--netbsd-mdsetimage -v netbsd ramdisk.fs.tmp 的命令来将ramdisk.fs文件塞到netbsd的内核中。netbsd的内核可用INSTALL的配置文件,指定 MEMORY_DISK_ROOT_SIZE=127200 (反复测试后,最大值可能不能超过152500)。最后,用 mkisofs -no-emul-boot -J -R -v -b bootxx_cd9660 -o NetBSD-9-LiveCD-3.iso iso2 的命令来生成可启动的iso文件,其中iso2是只包含boot,boot.catalog,boot.cfg,bootxx_cd9660和netbsd内核文件的“精简”目录,这样生成的 NetBSD-9-LiveCD-3.iso 大小约有83M,且能在虚拟机的光驱及debian系统中的grub引导
  10. 这个iso文件基本上是使用netbsd的默认内核,能识别到多数网卡及设备,默认启动dhcpcd和sshd,系统启动后自动获得IP及准备好sshd连接,默认密码是 drserver38nb 。测试时发现ssh连接提示 PTY allocation request failed on channel 0 ,在/stand里的ramfs_etc.tgz解压后,修改etc/rc.local,添加一行 mount_ptyfs ptyfs /dev/pts 以让系统启动后自动挂载/dev/pts,记得要为rc.local添加执行权限

NetBSD-9-LiveCD-3.iso 保存在“百度网盘”里(链接:https://pan.baidu.com/s/1w8JUC4NiEELrITFHKfSUPQ
提取码:lg3e),有时间玩的话,可以试试。文件验证值是:

  • SHA1:59286444F48C64791987F8F2F90F219AEA86A826
  • MD5:7103B64BD75460FBE69FF59924BD82D0
ssh root@144.172.126.250
Warning: Permanently added '144.172.126.250' (RSA) to the list of known hosts.
root@144.172.126.250's password:
X11 forwarding request failed on channel 0
NetBSD 9.0 (MKLIVECD_INSTALL_A2) #29: Fri Jul 3 17:50:52 CST 2020
We recommend that you create a non-root account and use su(1) for root access.
localhost# lsls
-sh: lsls: not found
localhost# ls -l /
total 149
-r--r--r--   1 root  wheel   1220 Feb 14 00:06 .cshrc
-r--r--r--   1 root  wheel    701 Feb 14 00:06 .profile
drwxr-xr-x   2 root  wheel   1024 Jul  1 14:16 bin
-r--r--r--   1 root  wheel  84408 Jun 30 14:43 boot
-rw-r--r--   1 root  wheel    172 Feb 14 00:06 boot.cfg
-r--r--r--   1 root  wheel   2048 Jun 30 14:43 bootxx_cd9660
drwxr-xr-x   9 root  wheel  41472 Jul  3 10:09 dev
drwxr-xr-x  30 root  wheel   2048 Jul  3 10:10 etc
drwxr-xr-x   4 root  wheel   2560 Feb 14 00:06 lib
drwxr-xr-x   2 root  wheel    512 Jul  3 09:32 libdata
drwxr-xr-x   5 root  wheel    512 Feb 14 00:06 libexec
drwxr-xr-x   2 root  wheel    512 Feb 14 00:06 mnt
drwxrwxrwt   6 root  wheel    512 Jul  3 10:09 ramfs
drwxr-xr-x   2 root  wheel    512 Jun 21 15:34 rescue
drwxr-xr-x   2 root  wheel    512 Jul  3 10:09 root
drwxr-xr-x   2 root  wheel   3072 Jul  1 14:16 sbin
drwxr-xr-x   2 root  wheel    512 Jul  3 07:54 stand
drwxrwxrwt   3 root  wheel    512 Jul  3 10:12 tmp
drwxr-xr-x  10 root  wheel    512 Jul  3 09:33 usr
drwxr-xr-x  24 root  wheel    512 Jul  3 10:09 var

参考: