在Linux系统中搭建网站服务器是许多开发者和运维人员的必备技能,本文将以CentOS 7系统为例,详细讲解从环境准备到服务配置的全过程,涵盖Apache/Nginx、MySQL、PHP等核心组件的安装与优化,帮助读者快速构建稳定高效的网站服务环境。
首先需要进行系统初始化准备,确保Linux系统基础环境稳定,登录服务器后更新系统软件包列表,执行yum update -y命令安装所有可用更新,同时关闭防火墙和SELinux以简化配置(生产环境需谨慎处理),命令为systemctl stop firewalld、systemctl disable firewalld及setenforce 0,接着安装必要的基础工具包,如yum install -y wget vim tree unzip,这些工具将在后续操作中频繁使用。
网站服务器的核心组件包括Web服务器、数据库服务及编程语言运行环境,在Web服务器选择上,Apache和Nginx是最主流的两种方案,Apache模块化设计成熟,适合动态内容处理;Nginx轻量高效,擅长反向代理和静态资源分发,本文将以Nginx为例进行讲解,其安装过程如下:首先添加EPEL源扩展软件仓库,执行yum install -y epel-release,然后通过yum install -y nginx完成安装,启动服务并设置开机自启systemctl start nginx && systemctl enable nginx,安装完成后可通过浏览器访问服务器IP地址,若看到Nginx欢迎页面则证明安装成功。
数据库服务通常选择MySQL或MariaDB,后者是MySQL的开源分支,完全兼容MySQL协议,安装MariaDB的命令为yum install -y mariadb-server mariadb,启动服务并设置开机自启systemctl start mariadb && systemctl enable mariadb,安全初始化是数据库配置的关键步骤,执行mysql_secure_installation向导,设置root密码、移除匿名用户、禁止root远程登录等操作,为网站应用创建专用数据库及用户,可通过登录MySQL控制台执行以下SQL语句:
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost'; FLUSH PRIVILEGES;
PHP作为动态网页编程语言,需根据网站需求选择合适版本,以安装PHP 7.4及常用扩展为例,首先添加Remi源(提供最新PHP版本):
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm,然后启用PHP 7.4仓库yum install -y yum-utils && yum-config-manager --enable remi-php74,最后安装PHP及扩展yum install -y php php-fpm php-mysqlnd php-gd php-json php-mbstring php-xml php-curl php-zip,启动PHP-FPM服务并设置开机自启systemctl start php-fpm && systemctl enable php-fpm,检查服务状态systemctl status php-fpm确保运行正常。
Nginx与PHP的协同配置是动态网站运行的核心,编辑Nginx配置文件vim /etc/nginx/nginx.conf,在http块中添加以下优化参数:
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 2048;
use epoll;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}
创建网站配置文件vim /etc/nginx/conf.d/website.conf如下:
server {
listen 80;
server_name your_domain.com www.your_domain.com;
root /var/www/website;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
创建网站根目录并设置权限mkdir -p /var/www/website && chown -R nginx:nginx /var/www/website,重启Nginx服务systemctl restart nginx使配置生效,上传网站程序(如WordPress)到根目录,解压后设置正确权限chown -R nginx:nginx /var/www/website/wp-content。
SSL证书配置是现代网站的安全基础,通过Let's Encrypt免费证书实现HTTPS加密,安装Certbot工具yum install -y certbot python2-certbot-nginx,执行证书申请命令certbot --nginx -d your_domain.com -d www.your_domain.com,按照提示完成邮箱配置和证书安装,Nginx将自动生成包含SSL配置的server块,重启服务后即可通过HTTPS访问网站。
性能优化方面,可通过调整PHP-FPM配置提升动态处理能力,编辑/etc/php-fpm.d/www.conf,修改以下参数:
pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10 pm.max_requests = 500
重启PHP-FPM服务使配置生效,对于高流量网站,可配置Nginx缓存静态资源,在server块中添加:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 7d;
add_header Cache-Control "public, no-transform";
}
网站安全维护不容忽视,定期执行以下操作:更新系统及软件包yum update -y,备份网站文件及数据库tar -czf website_backup.tar.gz /var/www/website && mysqldump -u root -p wordpress_db > db_backup.sql,配置Fail2ban防止暴力破解yum install -y fail2ban,创建规则文件/etc/fail2ban/jail.local:
[nginx-http-auth] enabled = true port = http,https filter = nginx-http-auth logpath = /var/log/nginx/error.log maxretry = 3 bantime = 30m
监控网站运行状态是保障服务稳定的重要手段,安装Nginx状态监控模块yum install -y nginx-module-vts,配置Nginx生成状态页面,通过Prometheus+Grafana实现可视化监控,设置日志轮转/etc/logrotate.d/nginx,确保日志文件不会无限增长。
相关问答FAQs:
Q1: 如何解决Nginx访问PHP文件显示下载而非解析的问题?
A: 这通常是由于Nginx未正确配置PHP-FPM导致的,检查/etc/nginx/conf.d/website.conf中的location ~ .php$块是否包含fastcgi_param SCRIPT_FILENAME指令,确保路径与网站根目录匹配,同时确认PHP-FPM服务已启动且监听端口正确(默认9000),可执行netstat -tuln | grep 9000验证,若配置正确仍无效,尝试重启Nginx服务。
Q2: 网站访问缓慢如何排查性能瓶颈?
A: 可按以下步骤逐步排查:1) 使用top、htop检查服务器CPU、内存使用率;2) 通过df -h查看磁盘空间是否不足;3) 执行ab -n 1000 -c 10 http://your_domain.com/进行压力测试,观察响应时间和错误率;4) 检查Nginx错误日志/var/log/nginx/error.log定位具体错误;5) 分析慢查询日志/var/log/mariadb/slow-query.log优化数据库查询;6) 启用Nginx access_log分析访问模式,考虑添加缓存或优化静态资源加载。
