您可以从映像将OS放置在服务器上,也可以使用控制面板中的现成映像。
假设我们安装了Debian 10和Nginx Web服务器,它们位于标准存储库(
apt install nginx
)中。让我们看看哪些有用的实用程序和命令将帮助您管理Linux服务器。让我们分别考虑Nginx和VDS服务器本身。
内容
首先,建议您了解Web服务器本身。Nginx在安装完成后启动。我们检查以下事实:
systemctl status nginx
发行:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-08-17 08:52:54 UTC; 4min 23s ago
Docs: man:nginx(8)
Main PID: 3942 (nginx)
Tasks: 3 (limit: 4719)
Memory: 6.1M
CGroup: /system.slice/nginx.service
├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─3943 nginx: worker process
└─3944 nginx: worker process
或者只是在浏览器中输入服务器的IP地址:
http://your_server_ip
如果我们还没有将站点文件复制到服务器,则将显示标准的Nginx标头页面。
管理Nginx的基本命令
注意。如果用户没有root特权,则要执行每个命令,他必须使用command获得root特权
sudo
。
停止Web服务器:
sudo systemctl stop nginx
如果以超级用户身份运行,则命令为:
systemctl stop nginx
停止后开始:
systemctl start nginx
停止并重新启动(重新启动):
systemctl restart nginx
如果您刚刚进行了一些配置更改,Nginx可以重新启动而不会丢失当前连接。这是通过以下命令完成的:
systemctl reload nginx
默认情况下,Nginx配置为在服务器启动时自动启动。可以使用以下命令更改此行为:
systemctl disable nginx
在服务器启动时重新启用Nginx自动启动:
systemctl enable nginx
默认情况下,Nginx具有为一个域配置的一组服务器阻止规则。假定您仅在服务器上托管一个站点。默认情况下,它应该位于目录中
/var/www/html
。
假设您要为Nginx中的多个站点创建多组服务器块,或将当前站点的文件移动到其他目录
/var/www/your_domain
。
这是通过以下命令完成的。
首先,我们在服务器上创建所需的目录。
mkdir -p /var/www/your_domain/html
然后,我们使用
$USER
应该对应于当前用户的变量来分配此目录的所有者:
chown -R $USER:$USER /var/www/your_domain/html
我们将主页放置在指定目录中
index.html
。
然后,您需要为Nginx创建一组适当的规则。在任何文本编辑器中,创建一个文件
/etc/nginx/sites-available/your_domain
并从那里的默认文件复制配置,仅使用更改的地址和域:
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
最后,我们通过将符号链接写入
sites-enabled
Nginx在启动时读取的目录中的新配置文件来激活此配置:
ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
重启后,Nginx的将显示请求相应的网页
your_domain
和www.your_domain
。
服务器管理
用户在管理Linux服务器时最常遇到哪些问题?您甚至可以为没有经验的管理员推荐哪些工具?
安装主管
Supervisor是一个客户端/服务器系统,管理员可以通过该系统控制服务器上的进程。该工具代表自己将流程创建为子流程。
在Debian或Ubuntu上安装超级用户非常简单:
apt-get install supervisor
之后,supervisor守护程序已经在运行,并且将在每次系统引导时启动。
新程序通过目录中的配置文件传递给主管
/etc/supervisor/conf.d
。例如,对于脚本,long.sh
配置文件可能如下所示:
[program:long_script]
command=/usr/local/bin/long.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/long.err.log
stdout_logfile=/var/log/long.out.log
因此,该脚本将在每次系统引导时自动启动,并在退出时自动重新启动。该值可以是“ false”(未重新启动)或“ unexpected”(仅当以意外错误代码退出时才重新启动,默认情况下为0或2以外的任何代码)。
最后两行是杂志的地址。这是主管程序的最低配置模板。
为特定程序创建配置文件后,我们运行两个命令,以便主管重新读取并应用新配置:
supervisorctl reread
supervisorctl update
在此阶段,我们的程序或脚本应该已经在运行,可以通过日志进行检查。
该实用程序
supervisorctl
具有交互模式,在该模式下,它无需参数即可运行:
$ supervisorctl
long_script RUNNING pid 12614, uptime 1:49:37
supervisor>
在此模式下,supervisorctl首先显示在其监视下的所有程序的状态和运行时间,然后显示其命令行。您可以在此处输入
help
-并查看可用命令列表:
supervisor> help
default commands (type help ):
=====================================
add clear fg open quit remove restart start stop update
avail exit maintail pid reload reread shutdown status tail version
如您所见,您可以使用start,stop和restart命令从命令行启动,停止和重新启动程序。
要退出主管,请使用Ctrl-C或quit命令:
supervisor> quit
可用磁盘空间分析
查看有关已安装分区的信息的标准实用程序是
df
。它显示已连接设备的列表以及有关已占用空间的信息。
df
-h选项启用人类可读的输出(即以兆字节或千兆字节为单位):
$ df -h
% C
devtmpfs 925M 0 925M 0% /dev
tmpfs 936M 56K 936M 1% /dev/shm
tmpfs 936M 1,9M 934M 1% /run
tmpfs 936M 0 936M 0% /sys/fs/cgroup
/dev/sda3 15G 11G 4,2G 71% /
tmpfs 936M 192K 936M 1% /tmp
/dev/sdb4 133G 126G 974M 100% /home
tmpfs 188M 20K 188M 1% /run/user/42
tmpfs 188M 7,1M 181M 4% /run/user/1000
有关特定目录的信息(例如/ home):
df -h /home
有关具有给定文件系统的分区的信息:
df -h -t ext4
使用命令搜索文件 find
按文件名搜索:
find -name "query"
按名称搜索,不区分大小写:
find -iname "query"
“反向”搜索与指定模式不匹配的文件:
find -not -name "query_to_avoid"
要么
find \! -name "query_to_avoid"
按文件类型搜索
find -type _
一些常见的描述符是:
- f-常规文件
- d-目录
- l-符号链接
- c-字符I / O设备文件
- b-阻止I / O设备文件
例如,以下命令将列出系统上安装的所有字符I / O设备:
find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .
根据大小和访问/更改时间有一个过滤器。例如,以下命令可查找所有小于50个字节的文件:
find / -size -50c
搜索所有700 MB以上的文件:
find / -size +700M
为了按访问时间,文件元信息的修改或更改进行搜索,参数“ -atime”,“-mtime”和“ -ctime”与加号和减号一起使用,分别表示大于或小于指定范围的范围。
搜索不到一天前修改的文件:
find / -mtime -1
访问时间超过三天的文件:
find / -atime +3
在最后一分钟更改的文件:
find / -mmin -1
比指定文件新的文件:
find / -newer myfile
可以按所有者(“ -user”,“-group”)和具有特定权限(“ -perm”)的文件进行搜索。在找到的所有文件上,您可以立即执行某些操作(“ -exec”)。
测试TCP和UDP连接
Linux附带了大量有用的实用程序。一些系统管理员仅使用内置工具即可执行大多数任务,而无需安装其他软件。嵌入式Linux工具真正的瑞士刀就是网络实用程序
netcat
。通用语法:
netcat [options] host port
此命令在指定端口上启动到指定主机的TCP连接。如果您需要测试UDP连接而不是TCP,请指定以下选项
-u
:
netcat -u host port
端口范围:
netcat host startport-endport
在大多数系统中,您可以同时编写
netcat
和nc
。
端口扫描
netcat的典型用途之一是端口扫描,该选项
-z
意味着扫描而不是建立连接。我们将其与选项一起使用,-v
以在扫描1到1000的端口时显示更多详细信息:
netcat -z -v domain.com 1-1000
输出将如下所示:
nc:连接到domain.com端口1(tcp)失败:连接被拒绝 nc:连接到domain.com端口2(tcp)失败:连接被拒绝 nc:连接到domain.com端口3(tcp)失败:连接被拒绝 nc:连接到domain.com端口4(tcp)失败:连接被拒绝 nc:连接到domain.com端口5(tcp)失败:连接被拒绝 nc:连接到domain.com端口6(tcp)失败:连接被拒绝 nc:连接到domain.com端口7(tcp)失败:连接被拒绝 ... ... ... 连接到domain.com 22端口[tcp / ssh]成功! ... ... ...
但是,有一个用于此任务的更高级的专用程序
nmap
。安装它:
apt-get update
apt-get install nmap
该实用程序提供有关端口的更多详细信息。已知端口的寄存器
/usr/share/nmap/nmap-services
包含2万多行,其中包括其他字段,例如在Internet上的服务器上打开特定端口的平均频率(第三列):
... ... ... tcpmux 1 / tcp 0.001995#TCP端口服务多路复用器[rfc-1078] tcpmux 1 / udp 0.001236#TCP端口服务多路复用器 compressnet 2 / tcp 0.000013#管理实用程序 compressnet 2 / udp 0.001845#管理实用程序 compressnet 3 / tcp 0.001242#压缩过程 compressnet 3 / udp 0.001532#压缩过程 未知4 / tcp 0.000477 rje 5 / udp 0.000593#远程作业输入 未知6 / tcp 0.000502 回声7 / TCP 0.004855 回声7 / udp 0.024679 回声7 / sctp 0.000000 ... ... ...
不建议在外部服务器上运行端口扫描,因为系统管理员可能会混淆敌对等操作。Nmap旨在探索自己的服务器,您可以在专用服务器上进行实验以进行测试
scanme.nmap.org
。
一些命令需要很长时间才能执行。
扫描主机上的操作系统:
nmap -O
扫描主机范围从xxx.xxx.xxx.xxx到yyy.yyy.yyy.yyy:
nmap -PN xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy
扫描网络范围以查找可用服务:
nmap -sP _
扫描特定端口:
nmap -p _
扫描所有打开的TCP和UDP端口:
nmap -n -PN -sT -sU -p-
研究主机上运行的软件版本:
nmap -PN -p _
nmap还有许多其他命令,参数和用例。扫描VDS服务器的端口可以使您识别潜在的攻击媒介和漏洞,因为攻击者将开始进行扫描。
转发消息和文件
使用密钥,
-l
您可以侦听服务器上的特定端口:
netcat -l 5438
在另一台机器上,我们指定在此端口上连接到该机器:
netcat domain.com 5438
现在已经在两个系统之间建立了通信通道。它可以用来发送短信。
您甚至可以通过这种方式传输文件。为此,请将侦听命令直接发送到文件:
netcat -l 5438 > _
在另一台计算机上,我们将原始文件而不是文本消息提交到输入:
netcat domain.com 5438 < _
同样,您可以传输各种内容,例如,在以下位置动态存档的目录内容
tarball
:
tar -czf - * | netcat domain.com 4444
以相同的方式,您可以在一侧(
dd
)创建磁盘映像,通过创建的TCP连接将其发送到指定的端口-并在另一系统上接收它。
添加和删除用户
要添加,删除用户并授予他们特权,
sudo
必须首先以root用户身份连接到服务器:
ssh root@ip__
之后,添加用户:
adduser newuser
最初,他没有特权。但是,如果这是系统的主要用户,则我们可以为其分配管理权限,以便他可以执行维护和维护服务器的例行任务。
要分配管理特权,您需要将用户添加到sudo组。允许该组中的用户以
sudo
特权提升为管理身份运行命令。
usermod -aG sudo user1
而是,我们
user1
指示之前添加的用户的名称。现在,他将能够通过sudo
以下命令运行任何命令:
sudo
拥有这些权限,该用户可以删除其他用户:
sudo deluser --remove-home username
此选项
--remove-home
还删除用户的主目录。
Root本身有权执行命令
deluser
而无需执行sudo
。
当然,这不是用于管理VDS服务器的有用工具的完整列表。但是对于新手系统管理员来说,这些问题通常会出现,他们需要设置第一台服务器,安装操作系统并开始了解Linux管理领域。