源码安装,系统服务

2019-08-01  本文已影响0人  快去学习不然怎么去看aimer

源码安装

以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
上一篇下一篇

猜你喜欢

热点阅读