首页 > 其他分享 >新手到站长的必经之路(三)—— 服务器上的文件结构

新手到站长的必经之路(三)—— 服务器上的文件结构

时间:2022-10-08 16:31:07浏览次数:78  
标签:iptables httpd 服务 service -- 必经之路 ## 服务器 新手


前言

从无序到有序,从无规律到有规律,我们一直在学习如何总结规律、加强认知,然后简化操作、提升效率。
作为一个服务器上的服务,为了能达到最后的可以一键部署的效果,我们也需要对文件进行分门别类,固定类别含义,方便理解与操作。

1. ECS 上安装的操作系统

不同的操作系统,可能拥有的命令不一样,内置的服务也不一致。
我这里用的是 ​​​CentOS 7.3 1611​​​,镜像下载​​地址​​​:​​http://vault.centos.org/7.3.1611/isos/x86_64/​​。

2. 服务的常用结构

##当前服务器安装目录(推荐创建一个新用户)
├── .bashrc ## 环境变量
├── backup ## 数据库备份目录
├── bin ## 服务脚本文件
├── data ## 服务对应数据存储目录
├── etc ## 配置文件目录
├── app ## 服务安装包目录
├── logs ## 日志目录
├── sbin ## 系统级脚本工具
├── share ## 平台依赖库

我们将依赖于第三方的服务放在 ​​share​​​ 目录下,将 自己开发出来的程序 放在 ​​app​​​ 目录下,统一配置好的默认配置文件 放在 ​​etc​​​ 目录下,将程序运行的 日志文件放在 ​​logs​​​ 目录下,将程序运行的 数据文件放在 ​​data​​​ 目录下,将运维脚本(安装、启、停、升级 控制)放在 ​​sbin​​ 目录下。

2. 服务器的自启文件

2.1实现软件自启的方法

对于支持 ​​systemd​​​ 的软件,想要实现开机自启,只需要两步:
1) 在 ​​​/lib/systemd/system/​​​ 目录添加一个配置文件 ​​xxx.service​​​ ,
2) 执行 ​​​systemctl enable xxx​​​ 就可以让该软件 开机启动。
3) 设置之后,服务器不重启,软件就不会自启。若不想重启服务,而使用软件。执行 ​​​systemctl start xxx​​ 来启动。

2.2 ​​xxx.service​​ 的内容是什么?

我们先分析一下 现有的 ​​xxx.service​​​ 文件, 理解了格式之后,就可以照猫画虎,给自己的软件也写一个自启服务了。
例如 crond.service

# crond.service脚本内容如下
[root@localhost ~]# cat /usr/lib/systemd/system/crond.service
[Unit]
Description=Command Scheduler
After=auditd.service systemd-user-sessions.service time-sync.target

[Service]
EnvironmentFile=/etc/sysconfig/crond
ExecStart=/usr/sbin/crond -n $CRONDARGS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

[Install]
WantedBy=multi-user.target
  • [Unit] 启动顺序与依赖关系
  • ​Description​​ 字段给出当前服务的简单描述
  • ​After​​​ 字段:表示如果​​auditd.service​​​或​​systemd-user-sessions.service​​​ 或​​time-sync.target​​ 需要启动,需要先启动 crond 服务
  • ​Before​​​ 字段: 定义​​crond.service​​应该在哪些服务之前启动
  • [Service] 启动行为
  • ​EnvironmentFile​​字段:指定当前服务的环境参数文件。
  • ​ExecStart​​字段:定义启动进程时执行的命令。
  • ​ExecStop​​字段:停止服务时执行的命令
  • ​ExecReload​​字段:重启服务时执行的命令
  • ​ExecStartPre​​字段:启动服务之前执行的命令
  • ​ExecStopPost​​字段:停止服务之后执行的命令
  • ​KillMode​​字段:定义 Systemd 如何停止 crond 服务。
  • ​KillMode​​字段可以设置的值如下。
  • ​control-group​​(默认值):当前控制组里面的所有子进程,都会被杀掉
  • ​process​​:只杀主进程
  • ​mixed​​:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
  • ​none​​:没有进程会被杀掉,只是执行服务的 stop 命令。
  • [Install] 定义如何安装这个文件
  • ​WantedBy​​​ 表示该服务所在的​​Target​​​ 是​​multi-user.target​​, 表示多用户命令行状态。一般都会默认启动这个组里的所有服务。

我这里 只写了几个常用的字段描述,根据上述字段分析:
我们只需要 将 [Description] 修改成我们的服务名;[After]、[Before] 看情况,可以不填;[Service] 中的字段改成我们的服务的启停命令,其他字段不变即可。

2.3 服务启停命令管理 systemctl

systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。

任务

旧指令

新指令

使某服务自动启动

chkconfig --level 3 httpd on

systemctl enable httpd.service

使某服务不自动启动

chkconfig --level 3 httpd off

systemctl disable httpd.service

检查服务状态

service httpd status

systemctl status crond.service (服务详细信息)

systemctl is-active crond.service (仅显示是否 Active)

显示所有已启动的服务

chkconfig --list

systemctl list-units --type=service

启动某服务

service httpd start

systemctl start httpd.service

停止某服务

service httpd stop

systemctl stop httpd.service

重启某服务

service httpd restart

systemctl restart httpd.service

参考:

  1. ​Centos7之Systemd(Service文件)详解​
  2. ​系统服务管理工具chkconfig/systemctl​
  3. ​systemctl命令​

3. 服务器的防火墙

比如我们安装一个 sshd 服务,需要访问端口时,常会发现都配置好了,服务也正常启动,但是就是连不上远程。这里有一个原因,可能是我们的防火墙配置没有放开端口,允许他人访问。

CentOS 7.x 默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤。

1、关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
2、安装 iptables
yum -y install iptables-services

3、关闭SElinux:
# 在CentOS7 下由于SELINUX的开启会导致很多系统服务和驱动不兼容,所以建议大家关闭SELINUX
vi /etc/selinux/config
SELINUX=disabled
:wq


3、iptables防火墙(这里iptables已经安装,下面进行配置)
# 编辑防火墙配置文件
vi /etc/sysconfig/iptables

# sampleconfiguration for iptables service
# you can edit thismanually or use system-config-firewall
# please do not askus to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT[0:0]
:OUTPUT ACCEPT[0:0]
-A INPUT -m state--state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -jACCEPT
-A INPUT -i lo -jACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT--reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出

# 备注:这里指可以访问 22/80/8080 端口。

systemctl restart iptables.service #最后重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动

参考:​​CentOS7下配置 iptables​

4. 总结

知其然不知其所以然,故 学而忘、用即丢。
想要记录一点文字,真的很难。幸好这两天不忙,于是重新查阅资料,并且整理。
写文章果然很费时间,又花去了半天时间,坚持很难,放弃却可以一键点击。
希望2020年,我可以坚持更新。


标签:iptables,httpd,服务,service,--,必经之路,##,服务器,新手
From: https://blog.51cto.com/u_15812342/5738336

相关文章

  • 怎么去检测服务器的稳定性
    怎么去检测服务器的稳定性我们在使用服务器的时候要了解它的运行速度和使用过程中是否具有可靠的稳定性。避免这类问题导致后期使用过程中带来的影响。一:服务器所在的机房......
  • 怎么去检测服务器的稳定性
    怎么去检测服务器的稳定性我们在使用服务器的时候要了解它的运行速度和使用过程中是否具有可靠的稳定性。避免这类问题导致后期使用过程中带来的影响。一:服务器所在的机房......
  • 仓储管理 | 新手如上架商品?
    进货,提货,仓库备货,一片混乱。想用纸和笔记录下来,发现工作量太大;用Excel代替,数据同步困难;想自己搭建一个系统,但是不会编程,没有经验…作为一个没有经验的新手,如何快速搭建一......
  • 【Web开发】Python实现Web服务器(web2py)
    文章目录​​1、简介​​​​2、下载和安装​​​​3、快速入门​​​​4、示例测试​​​​4.1Sayhello​​​​4.2Let'scount​​​​4.3Saymyname​​​​4.4Pos......
  • NTP校时服务器在计算机局域网内搭建工作
    NTP校时服务器在计算机局域网内搭建工作NTP校时服务器在计算机局域网内搭建工作京准电子科技官微——ahjzsz我们都知道,对于监控设备来说,设备时间的统一和精准,是保障录......
  • Ubuntu部署DNS服务器
    Bind服务1.安装服务aptinstall-ybind92.配置定义域文件vim/etc/bind/named.conf.default-zones'''zone"con.org"{typemaster;file"/etc/bind/d......
  • 服务器Linux系统(Ubuntu)安装Java
    下载Java  前往Java官网找到对应版本链接并右键复制链接  这里使用的是Ubuntu云服务器于是下载Linuxx64CompressedArchieve,复制该项链接  用管理员账户登......
  • idea远程连接云服务器,并将本地代码部署在云端进行运算
    电脑内存和显存过小,需要在云服务器进行运算我的模型,由于一直在自己的电脑上写的代码,于是之间迁移代码到云服务器,只要通过ssh链接到云端后,将python解释器使用云端的解释器就......
  • 关于青云-windows-server-服务器不能连接外网主机的远程桌面
    今天笔者,准备使用青云上的一台windows虚拟机,使用远程桌面连接笔者的其他windows服务器却始终连接不通,通过telnet也测试了、连接外部windows主机的TCP/3389就是不通最后在......
  • ctfshow新手杯剪刀石头布(session反序列化)
    看到ini_set('session.serialize_handler','php');让我不由自主的想起了session反序列化漏洞的一道题。直接百度会有很多文章这里不多介绍。因此我们的解法就是:1.post一......