Alpine Linux源管理

1.国内源简介:

这几个都有alpine的源

清华大学:​ ​https://mirror.tuna.tsinghua.edu.cn/alpine/​

阿里云:​ ​https://mirrors.aliyun.com/alpine/​

中科大:​ ​http://mirrors.ustc.edu.cn/alpine/​

网易:​ ​http://mirrors.163.com/​

2.配置:

直接抄中科大的帮助​ ​http://mirrors.ustc.edu.cn/help/alpine.html​

一般情况下,将 ​ ​/etc/apk/repositories​ ​ 文件中 Alpine 默认的源地址 ​ ​http://dl-cdn.alpinelinux.org/​ ​ 替换为 ​ ​http://mirrors.ustc.edu.cn/​ ​ 即可。

sudo vi /etc/apk/repositories

Alpine Linux 包管理

1.简介

Alpine使用apk进行包管理,下面介绍常用命令

2.apk update

​apk update​ ​ #更新最新镜像源列表

3.apk search

​apk search​ ​ #查找所以可用软件包

​apk search -v​ ​ #查找所以可用软件包及其描述内容

​apk search -v 'acf*' #通过软件包名称查找软件包​ ​apk search -v -d ‘docker’ #通过描述文件查找特定的软件包

4.apk add

​apk add openssh​ ​ #安装一个软件

​apk add openssh openntp vim​ ​ #安装多个软件

​apk add --no-cache mysql-client​ ​ #不使用本地镜像源缓存,相当于先执行update,再执行add

5.apk info

​apk info​ ​ #列出所有已安装的软件包

​apk info -a zlib​ ​ #显示完整的软件包信息

​apk info --who-owns /sbin/lbu​ ​ #显示指定文件属于的包

6.apk upgrade

​apk upgrade​ ​ #升级所有软件

​apk upgrade openssh​ ​ #升级指定软件

​apk upgrade openssh openntp vim​ ​ #升级多个软件

​apk add --upgrade busybox​ ​ #指定升级部分软件包

7.apk del

​apk del openssh​ ​ #删除一个软件

安装python

​sudo apk add --no-cache python3 python3-dev​

其中已自带pip

Alpine Linux 常用命令_本地服务

python其他依赖

sudo pip3 install Flask -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
sudo pip install paho-mqtt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
sudo pip install redis -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
sudo pip install requests -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

Alpine Linux服务管理

1.简介

alpine没有使用fedora的systemctl来进行服务管理,使用的是RC系列命令

​未安装openrc时需执行以下命令​

sudo apk add --no-cache openrc

2.rc-update

rc-update主要用于不同运行级增加或者删除服务。

alpine:~# rc-update --help
Usage: rc-update [options] add <service> [<runlevel>...]
or: rc-update [options] del <service> [<runlevel>...]
or: rc-update [options] [show [<runlevel>...]]

Options: [ asuChqVv ]
-a, --all Process all runlevels
-s, --stack Stack a runlevel instead of a service
-u, --update Force an update of the dependency tree
-h, --help Display this help output
-C, --nocolor Disable color output
-V, --version Display software version
-v, --verbose Run verbosely
-q, --quiet Run quietly (repeat to suppress errors)

3.rc-status

rc-status 主要用于运行级的状态管理。

alpine:~# rc-status --help
Usage: rc-status [options] <runlevel>...
or: rc-status [options] [-a | -c | -l | -m | -r | -s | -u]

Options: [ aclmrsuChqVv ]
-a, --all Show services from all run levels
-c, --crashed Show crashed services
-l, --list Show list of run levels
-m, --manual Show manually started services
-r, --runlevel Show the name of the current runlevel
-s, --servicelist Show service list
-u, --unused Show services not assigned to any runlevel
-h, --help Display this help output
-C, --nocolor Disable color output
-V, --version Display software version
-v, --verbose Run verbosely
-q, --quiet Run quietly (repeat to suppress errors)

4.rc-service

rc-service主用于管理服务的状态

alpine:~# rc-service --help
Usage: rc-service [options] [-i] <service> <cmd>...
or: rc-service [options] -e <service>
or: rc-service [options] -l
or: rc-service [options] -r <service>

Options: [ ce:ilr:INChqVv ]
-e, --exists <arg> tests if the service exists or not
-c, --ifcrashed if the service is crashed then run the command
-i, --ifexists if the service exists then run the command
-I, --ifinactive if the service is inactive then run the command
-N, --ifnotstarted if the service is not started then run the command
-l, --list list all available services
-r, --resolve <arg> resolve the service name to an init script
-h, --help Display this help output
-C, --nocolor Disable color output
-V, --version Display software version
-v, --verbose Run verbosely
-q, --quiet Run quietly (repeat to suppress errors)

5.openrc

openrc主要用于管理不同的运行级。

alpine:~# openrc --help
Usage: openrc [options] [<runlevel>]

Options: [ a:no:s:SChqVv ]
-n, --no-stop do not stop any services
-o, --override <arg> override the next runlevel to change into
when leaving single user or boot runlevels
-s, --service <arg> runs the service specified with the rest
of the arguments
-S, --sys output the RC system type, if any
-h, --help Display this help output
-C, --nocolor Disable color output
-V, --version Display software version
-v, --verbose Run verbosely
-q, --quiet Run quietly (repeat to suppress errors)

6.我常用的RC系列命令

1.增加服务到系统启动时运行,下例为docker

rc-update add docker boot

2.重启网络服务

rc-service networking restart

3.列出所有服务

rc-status -a

服务开机自启

Alpine Linux 的 开机自启目录在​ ​/etc/local.d​ ​​下,这个目录用于​ ​放置我们需要在本地服务启动或停止后执行的脚本​ ​。

先上目录下的说明文档:

This directory should contain programs or scripts which are to be run
when the local service is started or stopped.

If a file in this directory is executable and it has a .start extension,
it will be run when the local service is started. If a file is
executable and it has a .stop extension, it will be run when the local
service is stopped.

All files are processed in lexical order.

Keep in mind that files in this directory are processed sequentially,
and the local service is not considered started or stopped until
everything is processed, so if you have a process which takes a long
time to run, it can delay your boot or shutdown processing.

简单翻译了下:

此目录应包含在启动或停止本地服务时要运行的程序或脚本。
如果此目录中的文件是可执行文件且扩展名为.start,
则在启动本地服务时将运行该文件。
如果文件是可执行的并且具有.stop扩展名,
则在本地服务停止时将运行该文件。所有文件都按词汇顺序处理。
请记住,此目录中的文件是按顺序处理的,并且在处理完所有内容之前不会将本地服务视为已启动或停止,
因此如果您的进程需要很长时间才能运行,则可能会延迟启动或关闭处理。

自定义开机自启服务,由于Alpine Linux自带了nohup后台守护,我们就直接使用nohup设置开机自启。

先编辑下​ ​startup.start​ ​文件,注意,​ ​.start后缀需要固定,前面名称随意​ ​:

​vi startup.start​

我的内容如下

#!/bin/bash
sudo nohup python3 /home/plugin/main.py & >> /home/plugin/plugin.log

然后保存退出。

赋予脚本可执行权限:

chmod +x startup.start

设置 local 服务开机启动:

rc-update add local
sudo service local start

如执行​ ​rc-update add local​ ​失败,可能需执行​ ​sudo touch /run/openrc/softlevel​ ​之后在执行​ ​rc-update add local​

这样当系统开机时就能执行startup.start开达到开机自动的目的。

Alpine Linux 常用命令_linux_02

​bashps -a​ ​ 查看启动的进程

Alpine Linux 常用命令_linux_03

总结:以上内容也适用于在docker 中基于Alpine 镜像的业务扩展。