本片的指南,,或者说“指南”全部是基于我的垃圾服务器 s3 的配置而写成的,基本可以说是个人的习惯,而且有很多仅仅是 Linux 的约定俗成,有经验的人士大概不用看这个东西,如果要看的话,也请仅作为参考,而不是照搬照抄,这样可能会产生意料之外的问题。

首先是操作系统,由于我用不太惯 apt 包管理器,于是就选择了免费的 CentOS 作为服务器的长期操作系统,但是有一些软件仅支持 Ununtu(如 MC 基岩版的服务端),可以用 docker 解决,,系统的话也只是个人偏好,请根据自己的习惯进行选择。

(我现在都开始怀疑这到底是不是一个教程了,,)

一般刚开始拿到服务器的时候,一般都是先关闭 SELINUX(当然你会用的话可以不关),更改 sshd 运行端口,防火墙(我用的 firewalld)开放新的 sshd 端口,更改 root 密码。除此之外我一般会把 root 禁用,然后开一个自己的账号授予 root 身份(伪 root 账户),具体操作的话,先建立账户,设置密码,然后编辑”/etc/passwd”文件如下:

#/etc/passwd 修改前
root:x:0:0:root:/root:/bin/bash
...
YourAccount:x:1???:1???::/home/YourAccount:/bin/bash
#1???指一个数字,不确定是多少

#修改后
root:x:0:0:root:/root:/sbin/nologin
#/sbin/nologin是不能登录的
...
YourAccount:x:0:0:root:/root:/bin/bash
#把uid改成0就和root账户没什么区别

这样,root 账户便不能登录,新建的 YourAccount 账户就有了全套的 root 权限(事实上就是 root 账户),这样可以进一步避免被暴力破解 root(高权限,账户名已知)密码的风险。读者还可以使用秘钥验证来进一步增加安全性。

至于 Web 那一套服务器,我使用的是 LNMP(Nginx+MySQL+PHP),安装的话,我使用的是lnmp.org所制作的一个一键安装/管理脚本,原因是方便管理和升级之类的操作。脚本的话使用的是编译安装,所以在 ARM 设备上也是可以使用的(armv6-armv8 均可),理论上可以在任何平台使用(前提是有相应的编译器)。然后下面是基本的默认存放地址(Web 相关,LNMP 脚本版本 1.5):

/home/wwwroot/ #网站根目录
/usr/local/nginx/ #nginx相关目录
/usr/local/nginx/conf/vhost/ #虚拟主机配置文件目录
/usr/local/nginx/conf/ssl/ #脚本自带证书申请默认存放目录

其他的说实话我也不记得了,,不怎么用,需要的话直接去lnmp.org查就好了。个人建议用 vhost 实现多个不同功能的网页/网站,不推荐写到一个配置文件或一个 server 块下。

顺带说一句,这个脚本创建虚拟主机(vhost)的时候,会在/home/wwwroot/相应文件夹内添加一个.user.ini,这个玩意还不能直接删除,需要执行 chattr -i [file]解锁,如果只是修改的话,改完了记得加上锁(虽然我也不知道这个干什么用的)chattr +i [file]。至于升级的话,,参见这篇博客,,

补充:一般为了避免网页编码问题,我会在 nginx 配置文件的 server 块后加charset utf-8;,实现强制使用 https 的方法是在监听 80 端口的 server 后加入rewrite ^(.*)$ https://$host$1 permanent;

对于很多没有预编译包但提供源代码的软件,可以尝试加入 epel 源再试试 yum 安装(主要为 x86 平台),方法如下:

yum -y install epel-release
yum update

然后再尝试 yum 安装你需要安装的软件。

也可以采用编译安装的方法(更通用,适用所有处理器架构),一般情况下系统提供的 gcc/c++或其他语言的库都足够进行编译,但也不排除 glicb 或其他依赖库版本不够的情况,这种情况就比较麻烦了,,

一般情况下编译安装的软件/usr/local/路径下(可能是约定俗成),一般软件的默认路径也都是这样,若不是,一般也手动指定到/usr/local/中,编译安装的一般指令如下:

cd /path/to/source_code/
./configure --prefix=/path/to/install_dir
#--prefix是指定安装路径的,可选。也可以加其他参数,具体看软件说明。也可能是其他配置指令
make -j4 #4线程编译,可指定。若编译失败请使用单线程(去掉-j选项)
make install #安装

一般编译安装时间较长,建议开一个 screen 或其他类似工具让他待在后台。还有时会出现编译配置不正确,出现某个文件编译不过去(编译选项少了-liconv 等),这是可以手动编译相关文件,再试试继续执行 make 指令。

如果在安装或进行其他操作时提示无权限(Permission Denied),请使用 sudo 指令或使用更高权限账户。若还有问题,请检查相关文件/服务的操作权限。

关于 ownCloud 的搭建及各种问题(虽然后来用的 NextCloud),参见这篇博客

关于 ngrok 开源版的搭建方法,参见这篇博客

关于 CentOS 中的使用 Docker 搭建 Ubuntu 环境并运行 MineCraft 基岩版服务器,参见这篇博客

关于 Seafile 的搭建(x86,armv7)及各种问题,参见这篇博客