在Linux系统中配置网站通常涉及环境搭建、服务安装、虚拟主机配置、域名解析及安全设置等步骤,以下以Ubuntu/Debian和CentOS/RHEL两大主流发行版为例,详细讲解全过程。
环境准备与系统更新
首先确保服务器已安装Linux系统(推荐Ubuntu 20.04+或CentOS 8+),并拥有sudo权限,登录服务器后,更新系统软件包列表:
- Ubuntu/Debian:
sudo apt update && sudo apt upgrade -y
- CentOS/RHEL:
sudo yum update -y # CentOS 7及以下 sudo dnf update -y # CentOS 8+
安装基础工具(如wget、curl、vim等):
# Ubuntu/Debian sudo apt install -y wget curl vim unzip # CentOS/RHEL sudo yum install -y wget curl vim unzip # CentOS 7 sudo dnf install -y wget curl vim unzip # CentOS 8+
安装Web服务器
Web服务器是网站运行的核心,常用Apache和Nginx,可根据需求选择(以下以两者为例)。
安装Apache(httpd)
Apache历史悠久,兼容性好,适合动态和静态网站。
-
安装:
# Ubuntu/Debian sudo apt install -y apache2 # CentOS/RHEL sudo yum install -y httpd # CentOS 7 sudo dnf install -y httpd # CentOS 8+
-
启动并设置开机自启:
sudo systemctl start apache2 # Ubuntu/Debian(服务名为apache2) sudo systemctl enable apache2 # 或 sudo systemctl start httpd # CentOS/RHEL(服务名为httpd) sudo systemctl enable httpd
-
验证安装:浏览器访问服务器公网IP,若显示“Apache2 Ubuntu Default Page”或“Test Page”,则安装成功。
安装Nginx
Nginx轻量高效,擅长处理高并发静态资源,常与PHP-FPM配合使用。
-
安装:
# Ubuntu/Debian sudo apt install -y nginx # CentOS/RHEL sudo yum install -y epel-release # 安装EPEL源(CentOS 7需先执行) sudo yum install -y nginx # CentOS 7 sudo dnf install -y nginx # CentOS 8+
-
启动并设置开机自启:
sudo systemctl start nginx sudo systemctl enable nginx
-
验证安装:浏览器访问服务器IP,若显示“Welcome to nginx!”,则安装成功。
Apache与Nginx对比
特性 | Apache | Nginx |
---|---|---|
默认端口 | 80 | 80 |
配置文件位置 | /etc/apache2/sites-available/ | /etc/nginx/sites-available/ |
动态处理 | 模块化(mod_php) | 需配合PHP-FPM |
高并发性能 | 较低(进程模型) | 较高(事件驱动模型) |
适用场景 | 动态网站、小型项目 | 静态资源、反向代理、高并发场景 |
安装数据库(MySQL/MariaDB)
大多数动态网站(如WordPress、Discuz)需要数据库存储数据,推荐使用MySQL或其分支MariaDB。
安装MariaDB(MySQL兼容)
MariaDB是MySQL的开源分支,性能稳定,广泛使用。
-
安装:
# Ubuntu/Debian sudo apt install -y mariadb-server # CentOS/RHEL sudo yum install -y mariadb-server mariadb # CentOS 7 sudo dnf install -y mariadb-server mariadb # CentOS 8+
-
启动并设置安全配置:
sudo systemctl start mariadb sudo systemctl enable mariadb sudo mysql_secure_installation # 交互式配置(设置root密码、移除匿名用户、禁止远程root登录等)
安装PHP(动态网站支持)
若网站需要PHP(如WordPress、PHPMyAdmin),需安装PHP及常用扩展。
安装PHP及扩展
- Ubuntu/Debian:
sudo apt install -y php php-fpm php-mysql php-gd php-xml php-mbstring php-curl
- CentOS/RHEL:
sudo yum install -y php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-curl # CentOS 7 sudo dnf install -y php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-curl # CentOS 8+
- 启动PHP-FPM(Nginx需配合PHP-FPM处理PHP文件):
sudo systemctl start php-fpm sudo systemctl enable php-fpm
配置虚拟主机
虚拟主机允许一台服务器托管多个网站,需为每个网站配置独立的域名和目录。
Apache虚拟主机配置
以配置域名example.com
为例:
-
创建网站目录:
sudo mkdir -p /var/www/example.com sudo chown -R www-data:www-data /var/www/example.com # Ubuntu/Debian(www-data为Apache用户) # 或 sudo chown -R apache:apache /var/www/example.com # CentOS/RHEL(apache为Apache用户)
-
创建配置文件:
sudo vim /etc/apache2/sites-available/example.com.conf # Ubuntu/Debian # 或 sudo vim /etc/httpd/conf.d/example.com.conf # CentOS/RHEL
-
写入配置内容:
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com <Directory /var/www/example.com> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
-
启用配置并重启Apache:
# Ubuntu/Debian sudo a2ensite example.com.conf sudo a2dissite 000-default.conf # 可选:关闭默认站点 sudo systemctl restart apache2 # CentOS/RHEL sudo systemctl restart httpd
Nginx虚拟主机配置
同样以域名example.com
为例:
-
创建网站目录(同Apache,注意用户为
nginx
):sudo mkdir -p /var/www/example.com sudo chown -R nginx:nginx /var/www/example.com
-
创建配置文件:
sudo vim /etc/nginx/sites-available/example.com.conf
-
写入配置内容:
server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # Ubuntu 22.04为php8.1-fpm.sock,CentOS需对应版本 } location ~ /.ht { deny all; } }
-
启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/ sudo nginx -t # 检查配置语法 sudo systemctl restart nginx
域名解析与测试
- 域名解析:登录域名提供商后台,添加A记录,将域名指向服务器公网IP(如
168.1.100
),等待DNS生效(约10分钟-24小时)。 - 测试网站:
- 在
/var/www/example.com
下创建index.html
或index.php
如<h1>Hello, example.com!</h1>
),浏览器访问http://example.com
,若显示内容则配置成功。 - 若为PHP网站,可创建
info.php
<?php phpinfo(); ?>>
),访问后查看PHP配置信息。
- 在
安全配置
-
防火墙设置:
- Ubuntu/Debian(ufw):
sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS sudo ufw reload
- CentOS/RHEL(firewalld):
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
- Ubuntu/Debian(ufw):
-
配置HTTPS(可选):使用Let’s Encrypt免费证书,安装certbot:
# 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
按提示操作后,certbot会自动配置HTTPS并启用HTTP/2。
定期备份
为防止数据丢失,需定期备份网站文件和数据库:
- 备份数据库:
mysqldump -u root -p database_name > backup_$(date +%Y%m%d).sql
- 备份网站文件:
tar -czf website_backup_$(date +%Y%m%d).tar.gz /var/www/example.com
可将备份脚本加入cron定时任务,实现自动化备份。
相关问答FAQs
问题1:配置虚拟主机后,访问域名显示403 Forbidden怎么办?
解答:403错误通常由权限问题导致,检查网站目录所有者是否为Web服务器用户(Ubuntu/Debian为www-data
,CentOS为apache
或nginx
),执行chown -R user:group /var/www/example.com
;同时检查目录权限,确保用户有读写执行权限(chmod -R 755 /var/www/example.com
),并确认AllowOverride All
已配置(Apache)或try_files
指令正确(Nginx)。
问题2:如何为网站配置子域名(如blog.example.com)?
解答:子域名配置与主域名类似,只需重复“虚拟主机配置”步骤,新建一个配置文件(如blog.example.com.conf
),修改ServerName
为blog.example.com
,DocumentRoot
指向子域名对应的网站目录(如/var/www/blog.example.com
),其余流程一致,注意需在域名解析后台为子域名添加A记录(与主域名指向同一IP)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/38275.html