源码安装
以Nginx为例:
1.准备编译环境
yum -y groupinstall "Development Tools" 安装开发工具包
2.解决软件自身依赖
yum -y install pcre pcre-devel zlib-devel openssl-devel 下载软件依赖
3.下载并解压
wget http://nginx.org/download/nginx-1.16.0.tar.gz 在线到该网址下载nginx,得到nginx.tar.gz
tar -xf nginx.tar.gz -C /usr/loacl/src/ 将该包解到该目录
4.进行配置
./configure \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_ssl_module \
--with-pcre 安装路径,user,group等的配置
5.编译安装
make && make install
6.启动nginx
/usr/local/nginx/sbin/nginx
7.遇到端口被占用的问题时
vim /usr/local/nginx/conf/nginx.conf
listen 80 =====> 8000 将监听端口80改为8000
系统服务
jobs -l 查看后台进程进程号与工作号
echo $$ 查看当前bash的进程号
ctrl+z 放到后台并停止
bg %1 在后台执行
fg %1 拿到前台 (1为工作号)
sh a.sh & 直接在后台工作
daemon 守护进程
管理长期存放于内存中服务的进程叫守护进程,在 CentOS7中是systemd,CentOS5/6是init
init的执行等级:
0 关机
1 单用户模式(root)
3 带网络服务的多用户纯文本模式
5 图形界面
6 重启
daemon的配置文件存放目录
/usr/lib/systemd/system/
每个服务最主要的启动脚本设置,有点类似以前的 /etc/init.d 下面的文件
/run/systemd/system/
系统执行过程中所产生的服务脚本,这些脚本的优先序要比 /usr/lib/systemd/system/ 高
/etc/systemd/system/
管理员依据主机系统的需求所创建的执行脚本,其实这个目录有点像以前 /etc/rc.d/rc5.d/Sxx 之类的功能!执行优先序又比 /run/systemd/system/ 高
systemd服务类型
systemd 的 unit 类型分类说明
一个服务执行的脚本就成为一个 unit (服务单位)
通过扩展名区分 unit 的类型
.service 一般服务类型 (service unit)
主要是系统服务,包括服务器本身所需要的本机服务以及网络服务都是!比较经常被使用到的服务大多是这种类型! 所以,这也是最常见的类型了
.socket 内部程序数据交换的 socket 服务 (socket unit)
主要是 IPC (Inter-process communication) 的传输讯息 socket file 功能。 一般用于本机服务比较多,例如我们的图形界面很多的软件都是通过 socket 来进行本机程序数据交换的行为
.target 执行环境类型 (target unit)
其实是一群 unit 的集合,例如 multi-user.target 其实就是一堆服务的集合~也就是说, 选择执行 multi-user.target 就是执行一堆其他 .service 或/及 .socket 之类的服务
.mount .automount 文件系统挂载相关的服务 (automount unit / mount unit)
例如来自网络的自动挂载、NFS 文件系统挂载等与文件系统相关性较高的程序管理
.path 侦测特定文件或目录类型 (path unit)
某些服务需要侦测某些特定的目录来提供队列服务,例如最常见的打印服务,就是通过侦测打印队列目录来启动打印功能! 这时就得要 .path 的服务类型支持了
.timer 循环执行的服务 (timer unit)
这个东西有点类似 anacrontab 喔!不过是由 systemd 主动提供的,比 anacrontab 更加有弹性
但是我们是通过systemctl来管理服务的
格式: systemctl [command] [unit]
command包括:
status :查看这个 unit 的状态!
start :立刻启动
stop :立刻停止
restart :先执行 stop 再执行 start 的意思
enable :设置下次开机时,启动后面接的 unit
disable :设置下次开机时,不启动后面接的 unit
reload :不关闭后面接的 unit 的情况下,重新载入配置文件,让设置生效
服务的活动状态:
active (running):正在运行
active (exited):仅执行一次就正常结束的服务,目前并没有任何程序在系统中执行。 举例来说,开机或者是挂载时才会进行一次的 quotaon 功能,就是这种模式!(无须常驻内存)。
active (waiting):正在执行当中,不过还再等待其他的事件才能继续处理。举例来说,打印的队列相关服务就是这种状态!
inactive:这个服务目前没有运行的意思。
关于daemon (服务) 的默认状态
enabled:这个 daemon 将在开机时被执行
disabled:这个 daemon 在开机时不会被执行
mask:这个 daemon 无论如何都无法被启动!因为已经被强制注销 (非删除)。可通过 systemctl unmask 方式改回原本状态
static:这个 daemon 不可以自己启动 (enable 不可),不过可能会被其他的 enabled 的服务来唤醒 (相依属性的服务)
systemctl mask cups.service 强制注销
systemctl unmask cups.service 取消注销
systemctl [command] [unit.target]
command:
{
get-default :查看默认的 target
set-default :设置后面接的 target 成为默认的模式
isolate :切换到后面接的模式
}
unit.target:
{
graphical.target
就是文字加上图形界面,这个项目已经包含了下面的 multi-user.target 项目!
multi-user.target
纯文本模式!
rescue.target
救援模式!在无法使用 root 登陆的情况下,systemd 在开机时会多加一个额外的暂时系统,与 你原本的系统无关。这时你可以取得 root 的权限来维护你的系统。 但是这是额外系统,因此可能需要动到 chroot 的方式来取得你原有的系统!自修
emergency.target
紧急处理系统的错误,还是需要使用 root 登陆的情况,在无法使用 rescue.target 时,可以尝试使用这种模式!
shutdown.target
就是关机的流程。
getty.target
可以设置你需要几个 tty 之类的,如果想要降低 tty 的数量,可以修改这个东西的配置文件!
}
head -50 /etc/services 系统服务和端口
添加自定义服务到 systemd
以nginx为例
1.创建nginx.service文件
vim /etc/systemd/system/nginx.service
2.添加自定义选项
[Unit]
Description=nginx
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
3.重新加载服务
systemctl daemon-reload
4.停止nginx
/usr/local/nginx/sbin/nginx -s stop
5.启动服务
systemctl start nginx.service
网友评论