目录
一、Web 基础概念
1.1 Web 基本组成
1.2 HTTP 协议
二、常见 Web 服务与命令
2.1 Apache
2.2 Nginx
2.3 域名解析命令
三、服务器部署与配置
3.1 服务器环境搭建
3.2 虚拟主机配置
四、Nginx 安装相关命令
4.1 在 CentOS 系统安装
安装 Nginx,执行命令:
4.2 在 Ubuntu 系统安装
五、Nginx 服务控制命令
5.1 启动 Nginx 服务
5.2 停止 Nginx 服务
5.3 重启 Nginx 服务
5.4 重新加载配置
5.5 查看 Nginx 服务状态
六、Nginx 配置文件操作命令
6.1 主配置文件
6.2 虚拟主机配置文件
6.3 检查配置文件语法
七、Nginx 日志管理命令
7.1 查看访问日志
7.2 查看错误日志
7.3 日志切割
八、Nginx 性能与安全优化相关命令
8.1 性能优化
8.2 安全优化
9.1 性能优化
9.2 安全优化
十、日志管理
10.1 日志查看
一、Web 基础概念
1.1 Web 基本组成
Web 由Web 服务器、客户端浏览器和通信协议组成。Web 服务器用于存储和处理网页资源,如 Apache、Nginx;客户端浏览器负责解析并展示网页内容,像 Chrome、Firefox;通信协议则保障数据在服务器和客户端间的传输,最常用的是 HTTP/HTTPS 协议。
1.2 HTTP 协议
HTTP(HyperText Transfer Protocol,超文本传输协议)是 Web 的核心协议,用于客户端和服务器之间传输数据。常见的 HTTP 请求方法有:
- GET:从服务器获取资源,请求参数包含在 URL 中,例如Example Domain。
- POST:向服务器提交数据,常用于表单提交,请求参数放在请求体中。
- PUT:更新服务器上的资源。
- DELETE:删除服务器上的资源。
HTTP 响应状态码:
- 200:请求成功,服务器已成功处理请求并返回数据。
- 404:请求的资源不存在,客户端可能输入了错误的 URL。
- 500:服务器内部错误,通常是服务器端代码出现问题。
二、常见 Web 服务与命令
2.1 Apache
Apache 是世界使用排名靠前的 Web 服务器软件,具有稳定、功能丰富的特点。
- 安装:在 CentOS 系统中,使用yum install httpd命令安装;在 Ubuntu 系统中,使用sudo apt-get install apache2命令安装。
- 启动、停止、重启:
- CentOS:
- 启动:systemctl start httpd
- 停止:systemctl stop httpd
- 重启:systemctl restart httpd
- Ubuntu:
- 启动:sudo service apache2 start
- 停止:sudo service apache2 stop
- 重启:sudo service apache2 restart
- 配置文件:主配置文件为/etc/httpd/conf/httpd.conf(CentOS)或/etc/apache2/apache2.conf(Ubuntu),可在其中设置服务器端口、虚拟主机等。
2.2 Nginx
Nginx 是一款高性能的 HTTP 和反向代理服务器,以占用内存少、并发能力强著称。
- 安装:在 CentOS 系统中,先安装依赖包yum install epel-release,再使用yum install nginx安装;在 Ubuntu 系统中,使用sudo apt-get install nginx安装。
- 启动、停止、重启:
- CentOS:
- 启动:systemctl start nginx
- 停止:systemctl stop nginx
- 重启:systemctl restart nginx
- Ubuntu:
- 启动:sudo service nginx start
- 停止:sudo service nginx stop
- 重启:sudo service nginx restart
- 配置文件:主配置文件为/etc/nginx/nginx.conf,虚拟主机配置文件一般放在/etc/nginx/conf.d/目录下。
2.3 域名解析命令
- nslookup:用于查询域名对应的 IP 地址,例如nslookup example.com,会返回该域名的 IP 地址等信息。
- dig:功能比 nslookup 更强大,可用于查询各种 DNS 记录。如查询example.com的 MX 记录,使用dig MX example.com。
三、服务器部署与配置
3.1 服务器环境搭建
- 安装操作系统:常见的服务器操作系统有 CentOS、Ubuntu、Debian 等,可根据需求选择安装。
- 安装 Web 服务器:如前文所述安装 Apache 或 Nginx。
- 安装数据库:常用的 Web 数据库有 MySQL、MariaDB 等。以 MySQL 为例,在 CentOS 中使用yum install mysql-server安装,在 Ubuntu 中使用sudo apt-get install mysql-server安装。安装后使用systemctl start mysqld(CentOS)或sudo service mysql start(Ubuntu)启动服务。
3.2 虚拟主机配置
虚拟主机可以在一台物理服务器上运行多个网站。
四、Nginx 安装相关命令
4.1 在 CentOS 系统安装
- 首先安装 EPEL(Extra Packages for Enterprise Linux)仓库,它提供了许多额外的软件包,使用命令:
yum install epel-release
-
安装 Nginx,执行命令:
yum install nginx
4.2 在 Ubuntu 系统安装
直接通过 APT 包管理器安装,命令如下:
sudo apt-get update
sudo apt-get install nginx
五、Nginx 服务控制命令
5.1 启动 Nginx 服务
- CentOS:
systemctl start nginx
- Ubuntu:
sudo service nginx start
5.2 停止 Nginx 服务
- CentOS:
systemctl stop nginx
- Ubuntu:
sudo service nginx stop
5.3 重启 Nginx 服务
当修改了 Nginx 配置文件后,需要重启服务使配置生效。
- CentOS:
systemctl restart nginx
- Ubuntu:
sudo service nginx restart
5.4 重新加载配置
如果不想中断正在处理的请求,只是重新加载配置文件,可以使用reload命令。
- CentOS:
systemctl reload nginx
- Ubuntu:
sudo service nginx reload
5.5 查看 Nginx 服务状态
- CentOS:
systemctl status nginx
- Ubuntu:
sudo service nginx status
六、Nginx 配置文件操作命令
6.1 主配置文件
Nginx 的主配置文件为/etc/nginx/nginx.conf,可以使用文本编辑器如vim打开进行编辑:
sudo vim /etc/nginx/nginx.conf
在该文件中,可以设置全局参数,如工作进程数(worker_processes)、事件驱动模型参数等。
6.2 虚拟主机配置文件
虚拟主机配置文件一般放在/etc/nginx/conf.d/目录下。
- 创建虚拟主机配置文件:例如创建一个名为example.com.conf的配置文件,命令如下:
sudo touch /etc/nginx/conf.d/example.com.conf
sudo vim /etc/nginx/conf.d/example.com.conf
- 编辑虚拟主机配置:示例配置如下:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/html/example;
index index.html index.htm;
access_log /var/log/nginx/example.com_access.log;
error_log /var/log/nginx/example.com_error.log;
}
上述配置指定了监听端口为 80,域名(server_name),网站根目录(root),默认首页文件(index)以及访问日志和错误日志的存放路径。
6.3 检查配置文件语法
在重启或重新加载 Nginx 服务之前,最好先检查配置文件是否存在语法错误,使用命令:
sudo nginx -t
如果配置文件语法正确,会输出nginx: configuration file /etc/nginx/nginx.conf test is successful;若存在错误,则会提示具体的错误位置和信息。
七、Nginx 日志管理命令
7.1 查看访问日志
Nginx 的访问日志默认位于/var/log/nginx/access.log,可以使用tail命令实时查看最新的访问记录:
tail -f /var/log/nginx/access.log
也可以使用grep命令过滤特定信息,例如查找来自某个 IP 地址的访问记录:
grep "192.168.1.100" /var/log/nginx/access.log
7.2 查看错误日志
错误日志默认位于/var/log/nginx/error.log,当网站出现问题时,通过查看错误日志可以快速定位问题原因:
tail -f /var/log/nginx/error.log
同样可以使用grep命令进行过滤,比如查找包含404错误的日志记录:
grep "404" /var/log/nginx/error.log
7.3 日志切割
随着时间推移,日志文件会越来越大,为了便于管理和提高性能,可以对日志进行切割。使用logrotate工具实现日志切割,先安装logrotate(一般系统默认已安装),然后在/etc/logrotate.d/目录下创建一个 Nginx 的日志切割配置文件,例如nginx:
sudo vim /etc/logrotate.d/nginx
添加以下内容:
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
上述配置表示按天切割日志,保留 7 天的日志,切割后的日志进行压缩等操作。配置完成后,logrotate会按照设定的规则自动进行日志切割。
八、Nginx 性能与安全优化相关命令
8.1 性能优化
- 调整连接数:在/etc/nginx/nginx.conf文件中,通过worker_connections参数设置每个工作进程的最大连接数,例如将其设置为 2048:
worker_processes 4;
events {
worker_connections 2048;
}
修改后,使用systemctl reload nginx命令重新加载配置。
2. 启用 Gzip 压缩:在nginx.conf文件中添加以下配置,开启 Gzip 压缩,减小文件传输大小,提升访问速度:
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
添加完配置后,同样使用systemctl reload nginx命令使配置生效。
8.2 安全优化
- 设置防火墙规则:使用ufw(Ubuntu)或firewall-cmd(CentOS)设置防火墙,只开放 Nginx 必要的端口(80 和 443)。
- Ubuntu:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
- CentOS:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
- 关闭不必要的服务和端口:使用netstat -anp命令查看服务器开放的端口和对应的进程,关闭不需要的服务,例如关闭某个非必要的监听端口:
sudo fuser -k 端口号/tcp
九、Web 服务器优化
9.1 性能优化
- 启用 Gzip 压缩:可以减小文件大小,加快传输速度。
- Apache:在httpd.conf文件中添加LoadModule deflate_module modules/mod_deflate.so,并配置相关参数:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/javascript
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
</IfModule>
- Nginx:在nginx.conf文件中添加以下配置:
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
- 调整连接数:根据服务器性能调整 Apache 或 Nginx 的最大连接数。
- Apache:在httpd.conf文件中,通过MaxRequestWorkers参数设置最大连接数,例如MaxRequestWorkers 200。
- Nginx:在nginx.conf文件中,通过worker_connections参数设置每个工作进程的最大连接数,例如worker_connections 1024;。
9.2 安全优化
- 设置防火墙:使用firewall-cmd(CentOS)或ufw(Ubuntu)设置防火墙规则,只开放必要的端口,如 80(HTTP)、443(HTTPS)等。
- CentOS:
- 开启 80 端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
- 重新加载防火墙规则:firewall-cmd --reload
- Ubuntu:
- 开启 80 端口:sudo ufw allow 80/tcp
- 启用防火墙:sudo ufw enable
- 关闭不必要的服务和端口:通过netstat -anp命令查看服务器开放的端口和进程,关闭不需要的服务。
十、日志管理
10.1 日志查看
- Nginx 日志:
- 访问日志默认位于/var/log/nginx/access.log,错误日志默认位于/var/log/nginx/error.log。
- 同样可使用tail -f和grep命令进行查看和过滤。
10.2 日志分析
使用工具如AWStats、GoAccess对日志进行分析,生成可视化报告,了解网站访问情况、用户来源、热门页面等信息。
- 安装 AWStats:在 CentOS 中使用yum install awstats安装,在 Ubuntu 中使用sudo apt-get install awstats安装。安装后需进行相关配置并生成报告。
- 安装 GoAccess:在 CentOS 中,先添加 GoAccess 的源,再使用yum install goaccess安装;在 Ubuntu 中使用sudo apt-get install goaccess安装。可通过goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED命令将日志生成 HTML 格式的报告。