在Linux系统中搭建Web服务器是运维和开发中的常见需求,Linux凭借其稳定性、安全性和开源特性,成为Web服务部署的首选平台,本文将以主流的Ubuntu/Debian和CentOS/RHEL系统为例,详细介绍使用Apache和Nginx两种常见Web服务器软件搭建Web服务器的完整流程,包括环境准备、软件安装、配置优化、安全设置及测试验证等步骤。
环境准备
在搭建Web服务器前,需确保系统环境满足基本要求,包括网络配置、系统更新及必要工具安装,不同发行版的操作略有差异,具体如下:
系统更新与基础工具安装
更新系统软件包列表并升级已安装的包,确保系统为最新状态,同时安装常用工具(如wget、curl、vim等)。
- Ubuntu/Debian系统:
sudo apt update && sudo apt upgrade -y sudo apt install -y wget curl vim unzip
- CentOS/RHEL系统:
sudo yum update -y sudo yum install -y wget curl vim unzip epel-release
网络配置与防火墙设置
确保服务器已配置正确的静态IP地址,并开放Web服务所需的端口(HTTP默认80端口,HTTPS默认443端口),根据系统防火墙类型执行以下命令:
- Ubuntu/Debian(使用ufw):
sudo ufw allow 80/tcp # 允许HTTP端口 sudo ufw allow 443/tcp # 允许HTTPS端口 sudo ufw enable # 启用防火墙(若未启用)
- CentOS/RHEL(使用firewalld):
sudo firewall-cmd --permanent --add-service=http # 允许HTTP服务 sudo firewall-cmd --permanent --add-service=https # 允许HTTPS服务 sudo firewall-cmd --reload # 重新加载防火墙规则
创建网站目录与用户
为避免使用root用户运行服务,建议创建独立的系统用户和网站根目录:
sudo useradd -m -s /bin/bash webadmin # 创建webadmin用户 sudo mkdir -p /var/www/html # 创建网站根目录 sudo chown -R webadmin:webadmin /var/www/html # 设置目录所有者 sudo chmod -R 755 /var/www/html # 设置目录权限
安装Web服务器软件
主流Web服务器软件包括Apache(httpd)和Nginx,两者均支持静态文件服务、反向代理、负载均衡等功能,可根据需求选择,本文将分别介绍两者的安装步骤。
安装Apache(httpd)
Apache历史悠久,模块丰富,适合传统网站和复杂配置需求。
- Ubuntu/Debian:
sudo apt install -y apache2
- CentOS/RHEL:
sudo yum install -y httpd
安装完成后,启动服务并设置开机自启:
- Ubuntu/Debian:
sudo systemctl start apache2 sudo systemctl enable apache2
- CentOS/RHEL:
sudo systemctl start httpd sudo systemctl enable httpd
安装Nginx
Nginx轻量高效,擅长处理高并发请求,常用于反向代理和负载均衡场景。
- Ubuntu/Debian:
sudo apt install -y nginx
- CentOS/RHEL:
sudo yum install -y nginx
启动服务并设置开机自启:
sudo systemctl start nginx sudo systemctl enable nginx
不同发行版安装命令对比
软件名称 | Ubuntu/Debian安装命令 | CentOS/RHEL安装命令 |
---|---|---|
Apache | sudo apt install -y apache2 |
sudo yum install -y httpd |
Nginx | sudo apt install -y nginx |
sudo yum install -y nginx |
配置Web服务器
安装完成后,需对Web服务器进行基础配置,包括网站目录、默认首页及虚拟主机等。
Apache配置
- 测试页面:Apache默认首页位于
/var/www/html
,访问服务器IP即可看到测试页面(Ubuntu显示“Apache2 Ubuntu Default Page”,CentOS显示“Test Page”)。 - 虚拟主机配置:若需托管多个网站,可创建虚拟主机配置文件,为域名
example.com
创建配置:sudo vim /etc/apache2/sites-available/example.com.conf # Ubuntu # 或 CentOS: sudo vim /etc/httpd/conf.d/example.com.conf
添加以下内容:
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
创建网站目录并设置权限:
sudo mkdir -p /var/www/example.com sudo chown -R webadmin:webadmin /var/www/example.com sudo echo "<h1>Welcome to example.com</h1>" > /var/www/example.com/index.html
启用虚拟主机(Ubuntu需启用站点模块):
sudo a2ensite example.com.conf # Ubuntu sudo systemctl reload apache2 # 重载配置 # CentOS: 直接重启服务: sudo systemctl restart httpd
Nginx配置
-
测试页面:Nginx默认首页位于
/usr/share/nginx/html
,访问服务器IP可见“Welcome to nginx!”页面。 -
虚拟主机配置:编辑Nginx配置文件(
/etc/nginx/sites-available/default
或新建配置文件):sudo vim /etc/nginx/conf.d/example.com.conf
添加以下内容:
server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.html index.htm; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
创建网站目录并设置权限(同Apache),然后测试配置并重载Nginx:
sudo nginx -t # 测试配置语法 sudo systemctl reload nginx
动态环境配置(可选)
若需运行动态网站(如WordPress、PHP应用),需安装解析环境(如LAMP:Linux+Apache+MySQL+PHP;LNMP:Linux+Nginx+MySQL+PHP),以安装PHP和MySQL为例:
安装PHP(以PHP 8.0为例)
- Ubuntu/Debian:
sudo apt install -y php8.0 php8.0-fpm php8.0-mysql php8.0-gd php8.0-xml
- CentOS/RHEL:
sudo yum install -y php php-fpm php-mysqlnd php-gd php-xml
安装后启动PHP-FPM服务并设置开机自启:
sudo systemctl start php8.0-fpm # Ubuntu/Debian sudo systemctl enable php8.0-fpm # CentOS: sudo systemctl start php-fpm && sudo systemctl enable php-fpm
安装MySQL(MariaDB)
MariaDB是MySQL的开源分支,兼容性良好。
- Ubuntu/Debian:
sudo apt install -y mariadb-server mariadb-client
- CentOS/RHEL:
sudo yum install -y mariadb-server mariadb
启动服务并安全配置:
sudo systemctl start mariadb sudo systemctl enable mariadb sudo mysql_secure_installation # 按提示设置root密码、移除匿名用户等
安全设置
禁用root远程登录
编辑SSH配置文件(/etc/ssh/sshd_config
),将PermitRootLogin yes
改为no
,重启SSH服务:
sudo systemctl restart sshd
安装SSL证书(Let’s Encrypt)
使用certbot工具免费获取SSL证书,实现HTTPS加密访问:
- Ubuntu/Debian:
sudo apt install -y certbot python3-certbot-apache # Apache # 或 sudo apt install -y certbot python3-certbot-nginx # Nginx
- CentOS/RHEL:
sudo yum install -y certbot python3-certbot-apache # Apache # 或 sudo yum install -y certbot python3-certbot-nginx # Nginx
获取证书并自动配置(以Apache为例):
sudo certbot --apache -d example.com -d www.example.com
按提示选择重定向HTTP到HTTPS,证书将自动续期。
定期更新系统
设置自动更新或定期手动更新,修复安全漏洞:
# Ubuntu/Debian: 设置自动安全更新 sudo apt install -y unattended-upgrades sudo dpkg-reconfigure -plow unattended-upgrades # CentOS/RHEL: 启用安全更新插件 sudo yum install -y yum-security sudo yum update --security
测试与问题排查
- 测试访问:在浏览器中输入服务器IP或域名,若显示配置的首页内容,则说明Web服务器搭建成功。
- 检查服务状态:
sudo systemctl status apache2 # 或 nginx、mariadb
- 查看错误日志:
- Apache:
/var/log/apache2/error.log
(Ubuntu)或/var/log/httpd/error_log
(CentOS) - Nginx:
/var/log/nginx/error.log
- Apache:
- 常见问题:
- 端口占用:使用
netstat -tuln | grep 80
检查,修改配置文件中的端口(如Apache的Listen 80
)。 - 权限不足:确保网站目录所有者为Web服务用户(如
webadmin
),权限为755。
- 端口占用:使用
相关问答FAQs
Q1: 如何查看Web服务器的错误日志?
A: 不同Web服务器的错误日志位置不同:
- Apache(Ubuntu/Debian):
/var/log/apache2/error.log
,可通过命令tail -f /var/log/apache2/error.log
实时查看。 - Apache(CentOS/RHEL):
/var/log/httpd/error_log
,命令tail -f /var/log/httpd/error_log
。 - Nginx:
/var/log/nginx/error.log
,命令tail -f /var/log/nginx/error.log
。
若需查看访问日志,Apache对应access.log
(位于同目录下),Nginx对应/var/log/nginx/access.log
。
Q2: 如何重启Web服务器服务?
A: 根据不同的Web服务器和系统,重启命令如下:
- Apache:
- Ubuntu/Debian:
sudo systemctl restart apache2
- CentOS/RHEL:
sudo systemctl restart httpd
- Ubuntu/Debian:
- Nginx:
- 所有系统:
sudo systemctl restart nginx
- 所有系统:
- PHP-FPM(若使用):
- Ubuntu/Debian (PHP 8.0):
sudo systemctl restart php8.0-fpm
- CentOS/RHEL:
sudo systemctl restart php-fpm
重启前建议先测试配置语法(如Nginx使用nginx -t
,Apache使用apachectl configtest
),避免配置错误导致服务无法启动。
- Ubuntu/Debian (PHP 8.0):
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/20448.html