在Linux系统中搭建网站是一个涉及环境配置、服务安装、安全设置等多步骤的过程,本文以Ubuntu Server 22.04 LTS为例,详细讲解从零开始搭建一个支持动态内容的网站(以WordPress为例),涵盖Web服务器、数据库、PHP环境配置及HTTPS安全部署等核心环节。
环境准备与基础配置
首先需要准备一台已安装Linux系统的服务器(建议内存≥2GB,磁盘≥20GB),并通过SSH远程登录,接着更新系统并安装必要工具:
sudo apt update && sudo apt upgrade -y sudo apt install -y curl wget git unzip vim
配置静态IP(可选,建议通过云平台绑定弹性IP),并确保服务器防火墙允许80(HTTP)、443(HTTPS)及22(SSH)端口:
sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable -y
安装Web服务器(Nginx)
Nginx因高并发、低内存占用成为主流Web服务器,支持静态文件服务和反向代理,安装并启动Nginx:
sudo apt install -y nginx sudo systemctl start nginx sudo systemctl enable nginx # 设置开机自启
验证安装:访问服务器IP(如http://服务器IP
),若显示Nginx欢迎页面则成功,Nginx配置文件位于/etc/nginx/nginx.conf
,站点配置存放在/etc/nginx/sites-available/
,需通过sites-enabled/
目录软链接启用。
安装数据库(MariaDB)
MariaDB是MySQL的开源分支,兼容性良好,用于存储网站数据,安装并安全配置:
sudo apt install -y mariadb-server mariadb-client sudo mysql_secure_installation # 按提示设置root密码、移除匿名用户、禁止远程root登录等
创建WordPress专用数据库及用户(替换your_db
、your_user
、your_password
):
sudo mysql -u root -p CREATE DATABASE your_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON your_db.* TO 'your_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
安装PHP环境
WordPress基于PHP开发,需安装PHP及常用扩展,Ubuntu 22.04默认PHP 8.1,安装命令:
sudo apt install -y php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-xmlrpc php8.1-zip php8.1-intl php8.1-soap php8.1-opcache
启动PHP-FPM并设置开机自启:
sudo systemctl start php8.1-fpm sudo systemctl enable php8.1-fpm
检查PHP版本:php -v
,确认显示PHP 8.1相关信息。
配置Nginx虚拟主机
为网站创建独立配置文件,例如/etc/nginx/sites-available/yourdomain.com
(替换为实际域名):
server { listen 80; server_name yourdomain.com www.yourdomain.com; root /var/www/yourdomain.com/html; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$args; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; } location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 7d; add_header Cache-Control "public, no-transform"; } }
创建网站目录并设置权限:
sudo mkdir -p /var/www/yourdomain.com/html sudo chown -R www-data:www-data /var/www/yourdomain.com/html sudo chmod -R 755 /var/www/yourdomain.com/html
启用站点并测试配置:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/ sudo nginx -t # 检查配置语法 sudo systemctl reload nginx
部署WordPress网站
下载WordPress并解压到网站目录:
cd /tmp wget https://wordpress.org/latest.tar.gz tar -xvzf latest.tar.gz sudo cp -r wordpress/* /var/www/yourdomain.com/html/
配置WordPress数据库连接:复制wp-config-sample.php
为wp-config.php
并修改数据库信息:
sudo cp /var/www/yourdomain.com/html/wp-config-sample.php /var/www/yourdomain.com/html/wp-config.php sudo vim /var/www/yourdomain.com/html/wp-config.php ``` 替换为实际数据库信息): ```php define('DB_NAME', 'your_db'); define('DB_USER', 'your_user'); define('DB_PASSWORD', 'your_password'); define('DB_HOST', 'localhost'); define('DB_CHARSET', 'utf8mb4'); define('DB_COLLATE', 'utf8mb4_unicode_ci');
访问http://yourdomain.com
,按WordPress提示完成安装(设置网站标题、管理员账号密码)。
配置HTTPS(Let’s Encrypt证书)
HTTPS是网站安全的必备条件,使用Certbot免费签发SSL证书:
sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
按提示输入邮箱、同意服务条款,Certbot会自动修改Nginx配置启用HTTPS,证书有效期为90天,可通过sudo certbot renew --dry-run
测试自动续期。
安全优化
- 禁用SSH密码登录(改用密钥):编辑
/etc/ssh/sshd_config
,设置PasswordAuthentication no
,重启SSH服务:sudo systemctl restart sshd
。 - 定期更新系统:添加定时任务
sudo crontab -e
,输入0 3 * * * apt update && apt upgrade -y
,每日凌晨3点自动更新。 - 配置Fail2ban:防止暴力破解,安装
sudo apt install -y fail2ban
,配置/etc/fail2ban/jail.local
,添加SSH防护规则。
Web服务器对比(Apache vs Nginx)
特性 | Apache | Nginx |
---|---|---|
并发处理 | 多进程模式,内存占用较高 | 事件驱动,高并发性能优异 |
配置方式 | 基于.htaccess(分布式配置) | 主配置文件(集中式) |
适用场景 | (如PHP)、中小型网站 | 静态资源、反向代理、高并发网站 |
模块扩展 | 动态加载模块灵活 | 需重新编译添加模块 |
FAQs
搭建网站时遇到“502 Bad Gateway”错误怎么办?
解答:通常由PHP-FPM服务异常或Nginx与PHP-FPM通信失败导致。
- 检查PHP-FPM状态:
sudo systemctl status php8.1-fpm
,未启动则执行sudo systemctl start php8.1-fpm
。 - 检查PHP-FPM配置:
sudo php-fpm8.1 -t
,若有语法错误则修正/etc/php/8.1/fpm/php.ini
或/etc/php/8.1/fpm/pool.d/www.conf
。 - 确认Nginx配置中的
fastcgi_pass
路径与PHP-FPM的listen
一致(如unix:/var/run/php/php8.1-fpm.sock
)。
如何定期备份网站数据?
解答:备份需包含数据库和网站文件,可通过脚本实现自动化。
- 备份数据库:使用
mysqldump
导出数据库,mysqldump -u your_user -p your_db > /backup/your_db_$(date +%Y%m%d).sql
- 备份网站文件:使用
tar
打包目录,tar -czf /backup/yourdomain.com_$(date +%Y%m%d).tar.gz /var/www/yourdomain.com/html
- 设置定时任务:编辑
crontab -e
,添加以下内容每日凌晨1点备份:0 1 * * * mysqldump -u your_user -p'your_password' your_db > /backup/db_$(date +%Y%m%d).sql && tar -czf /backup/site_$(date +%Y%m%d).tar.gz /var/www/yourdomain.com/html
注意:备份目录需提前创建(
sudo mkdir /backup
)并设置权限(sudo chmod 700 /backup
)。
通过以上步骤,即可完成基于Linux的网站搭建,后续可根据需求扩展功能(如CDN加速、负载均衡等)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/30460.html