上周,在登陆网盘时突然发现连接不上,经过多方排查,发现是HostHatch后台出现了启动问题。差点以为数据要丢失了,结果是虚惊一场。但这也说明HostHatch的数据安全问题没有很好的保障,并且也不支持磁盘快照功能,不过这也是没有办法的事,毕竟是便宜的大盘鸡。只是今后要想个办法对我的数据进行自动备份。
systemd及service文件详解——以amule为例
上篇文章谈到了编译安装的amule没有自启动脚本,但看了一下传统的init启动脚本,眼晕,经过衡量,最后决定自己编写sysytemd.service启动脚本以满足自身需要。
systemd介绍
Systemd 是 Linux下的一款系统和服务管理器,相比于传统的服务管理方法比如自制脚本,具有文件编写简单,功能可靠,以及方便统一管理等优点。Systemd 有很多不同类型的使用单元(unit),主要包括:系统服务(.service)、挂载点(.mount)、sockets(.sockets)、系统设备(.device)、交换分区(.swap)、文件路径(.path)、启动目标(.target)。一般我们常用的是其中的系统服务。
Systemd的系统服务的单元文件(.service)可以从两个地方加载
/usr/lib/systemd/system/ #软件包安装的单元 /etc/systemd/system/ #系统管理员安装的单元
一般来说我们手动编写的单元都放在第二个目录下
service文件内容
service文件包含几个常用的小节,每个小节以[*]开头,来说明小节的内容
[Unit]:
这个项目内主要在规范服务启动的脚本、环境配置文件文件名、重新启动的方式等等。主要包括:
- Description:描述这个 Unit 文件的信息
- Documentation:指定服务的文档,可以是一个或多个文档的 URL 路径
- Requires:依赖的其它 Unit 列表,列在其中的 Unit 模板会在这个服务启动时的同时被启动。并且,如果其中任意一个服务启动失败,这个服务也会被终止
- Wants:与 Requires 相似,但只是在被配置的这个 Unit 启动时,触发启动列出的每个 Unit 模块,而不去考虑这些模板启动是否成功
- After:与 Requires 相似,但是在后面列出的所有模块全部启动完成以后,才会启动当前的服务
- Before:与 After 相反,在启动指定的任务一个模块之间,都会首先确证当前服务已经运行
[Install]
这部分配置的目标模块通常是特定运行目标的 .target 文件,用来使得服务在系统启动时自动运行。这个区段可以包含三种启动约束:
- WantedBy:和 Unit 段的 Wants 作用相似,只有后面列出的不是服务所依赖的模块,而是依赖当前服务的模块。默认使用WantedBy=multi-user.target
- Also:当前 Unit enable/disable 时,同时 enable/disable 的其他 Unit
- Alias:当前 Unit 可用于启动的别名
[Service]
用来 Service 的配置,只有 Service 类型的 Unit 才有这个区块。它的主要字段分为服务生命周期和服务上下文配置两个方面。
服务生命周期控制相关:
- Type:定义启动时的进程行为,它有以下几种值:
- Type=simple:默认值,执行ExecStart指定的命令,启动主进程
- Type=forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出
- Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行
- Type=dbus:当前服务通过D-Bus启动
- Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行
- Type=idle:若有其他任务执行完毕,当前服务才会运行
目前使用默认type就能满足绝大多数需要
- ExecStart:启动当前服务的命令
- ExecStartPre:启动当前服务之前执行的命令
- ExecStartPos:启动当前服务之后执行的命令
- ExecReload:重启当前服务时执行的命令
- ExecStop:停止当前服务时执行的命令
- ExecStopPost:停止当其服务之后执行的命令
- RestartSec:自动重启当前服务间隔的秒数
- Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括 always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
服务上下文配置相关:
Environment:为服务指定环境变量
User:指定运行服务的用户
Group:指定运行服务的用户组
amule系统服务unit配置
需求:以root用户运行,随着系统启动运行,能通过systemd命令启动与停止
文件样板:
[Unit] Description=Amule After=network.target [Service] ExecStart=/usr/local/bin/amuled ExecStop=/bin/kill $MAINPID [Install] WantedBy=multi-user.target
编译安装amule非GUI小记
ed2k尽管是一种老旧的p2p下载方式,但其中确实包含着不少资源(尤其是小姐姐的电影),更是自带优秀的搜索引擎。但在中国非公网及恶劣的p2p环境下,资源传播速度非常有限。正好手上有台vps,经过仔细研究,成功完成了ed2k下载程序amule的server版编译安装及运行,现记录步骤如下:
依赖
过程
1、下载文件
2、安装wxWidgets-2.8.12
由于是已经配置好环境的vps,所以常见的编译环境都有,不需要特别配置
#解压文件 tar zxvf wxWidgets-2.8.12.tar.gz #配置文件 cd wxWidgets-2.8.12 ./configure --disable-gui --enable-unicode --without-subdirs --without-expat #编译并安装(为了快速安装,采用了双进程编译,-j的参数设置为4会安装失败) make -j 2 su root make install && make clean ldconfig
3、安装aMule-2.3.3.tar.gz
#解压文件 tar zxvf aMule-2.3.3.tar.gz #配置文件(非GUI) cd aMule-2.3.3 ./configure --enable-amule-daemon --enable-amulecmd --enable-webserver--enable-optimize --disable-monolithic --disable-monolithic #编译并安装 make su root make install && make clean
4、配置amule
在第一次使用amule时应该对其进行配置:
#初始化amuled配置 amuled --ec-config 获得ECPassword或者webSever的passowrd的md5值 echo -n yourpassword | md5sum vim ~/.aMule/amule.conf
然后修改AcceptExternalConnections=1 ,在amule.conf文件中修改ECPassword的值为yourpassword的md5值。如果想启动webserver还应该修改Enabled=1,修改password为yourpassowrd的md5值
5、启动amule
amuled -f //以全后台方式启动amule主程序
成功,可以用远程客户端和你设置的密码yourpassword登陆amule了
目前存在的问题:缺乏开机启动脚本,需要额外配置
总结
总体来说,通过配置amule服务端,让我学会了linux简单编译安装,是一个巨大的提升,今后还要再次加油,提升自身技术水平,特此纪念
网盘又复活了
经过宝塔面板的帮助,对比了seafile、owncloud以及nextcloud的部署方式,最终还是选择了owncloud的方案进行网盘部署。虽然因为owncloud过度商业化导致功能受到了一定的限制,其内置的php版本也不是最新,但是相比于其衍生品nextcloud,owncloud更加稳定。同seafile相比 ,owncloud基于php的部署方式轻量化且简单,且与宝塔面板高度契合,非常方便统一管理;而seafile基于java的结构,需要额外配置java环境,虽然可靠性更高,但与宝塔面板不是很兼容,且不易于维护(对java环境不了解),因此,最后选择了owncloud作为最终解决方案。
这次部署,有了宝塔面板的管理,免去了无数配置麻烦,可以说是十分轻松流畅,但是也不能忽视基础知识的学习,为今后维运经验的进步打下坚实的基础。
出了点小问题
这是一个测试
服务器更新
好久没更新了,最近一直在犯懒,所以说点话,水一水字数。
首先是与兔兔的关系,已经进展得很顺利了,因为熊熊和兔兔都在不断成熟,吵过的架越来越少,这是个好事。熊熊也开始慢慢学会了怎么营造浪漫的气氛,相信熊熊和兔兔的未来会越来越好。
其次是学习这一方面,还是要继续加油,不要犯懒,相信自己能取得满意的成绩,一定要加油啊。
还有哦,现在外面疫情还是很严重,工作的话,最好不要找那种有坑的工作,好多工作都是来压榨学生劳动价值的,这样的公司不值得为他们打工,不过现在形势不好,也不能把心理预期定得太高,这不是好事,总之,这个世界没有想得那么好,也没有想得那么坏。
我的字数水完了,服务器也重启了,可以说再见了
拜拜?
