如何架设linux网站服务器的过程

如何架设linux网站服务器的过程

安装 LAMP/LNMP 环境,配置 Web 服务器(Apache/Nginx),开放防火墙端口,上传网站文件至...

优惠价格:¥ 0.00
当前位置:首页 > Linux > 如何架设linux网站服务器的过程
详情介绍
安装 LAMP/LNMP 环境,配置 Web 服务器(Apache/Nginx),开放防火墙端口,上传网站文件至

前期准备阶段

硬件资源规划表

项目 推荐配置 作用说明
CPU核心数 ≥2核 支撑并发请求处理
内存容量 2GB+ (建议4GB以上) 同时运行系统+Web服务+数据库
存储类型 SSD硬盘 提升文件读写速度
公网IP地址 固定静态IP 确保域名解析稳定性
操作系统选择 Ubuntu Server LTS/Debian 社区支持度高,文档丰富

系统初始化关键操作

# 查看当前系统信息
lsb_release -a
# 修改主机名为自定义名称(例:webserver)
hostnamectl set-hostname webserver
# 编辑/etc/hosts文件添加解析记录
echo "192.168.1.100 webserver" >> /etc/hosts
# 同步时间源(以阿里云NTP为例)
timedatectl set-ntp true && timedatectl set-timezone Asia/Shanghai

核心服务搭建流程

▶️ 方案A:LAMP架构(Linux+Apache+MySQL+PHP)

Step 1: 安装基础组件

# 更新软件源并升级系统
apt update && apt upgrade -y
# 安装Apache Web服务器
apt install apache2 -y
# 验证安装结果
systemctl status apache2
curl http://localhost

Step 2: 配置虚拟主机(多站点管理)
编辑/etc/apache2/sites-available/default-ssl.conf,新增以下内容:

<VirtualHost :80>
    ServerAdmin admin@example.com
    DocumentRoot /var/www/html/mysite
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory "/var/www/html/mysite">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

执行a2ensite default-ssl启用配置,重启服务systemctl restart apache2

Step 3: 安装MariaDB数据库

# 安装数据库及管理工具
apt install mariadb-server mariadb-client -y
# 初始化数据库
systemctl start mariadb
mysql_secure_installation # 按提示设置root密码及安全策略
# 创建业务数据库
mysql -u root -p -e "CREATE DATABASE mydb; GRANT ALL PRIVILEGES ON mydb. TO 'user'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;"

Step 4: PHP环境配置

# 安装PHP及相关扩展
apt install libapache2-mod-php8.1 php-mysql php-gd php-xml php-mbstring -y
# 测试PHP版本
php -v
# 创建info.php测试文件
echo "<?php phpinfo(); ?>" > /var/www/html/info.php

▶️ 方案B:LEMP架构(Linux+Nginx+MySQL+PHP)

优势对比表
| 特性 | Apache | Nginx |
|————-|———————|———————|
| 性能 | 中等 | 高并发处理能力更强 |
| 配置复杂度 | 语法直观易读 | 基于事件驱动模型 |
| 反向代理 | 需额外模块 | 原生支持 |
| 静态资源压缩| 依赖第三方插件 | 内置gzip模块 |

Nginx安装示例

# 添加Nginx官方仓库
echo "deb http://nginx.org/packages/mainline/ubuntu $(lsb_release -sc) nginx" | tee /etc/apt/sources.list.d/nginx.list
# 导入GPG密钥
wget http://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
# 安装最新稳定版
apt update && apt install nginx -y
# 配置服务器块
nano /etc/nginx/sites-available/default
# 写入如下内容后保存退出
server {
    listen 80;
    server_name your_domain.com;
    root /var/www/html;
    index index.html index.htm index.php;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ .php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }
}
# 创建符号链接并重启服务
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
systemctl restart nginx

安全防护配置

防火墙设置(UFW)

# 允许常用端口
ufw allow OpenSSH          # SSH默认22端口
ufw allow 'Apache Full'    # HTTP(80)+HTTPS(443)
# 启用防火墙
ufw enable
# 查看当前规则
ufw status numbered

SSL证书部署(Let’s Encrypt)

# 安装Certbot客户端
apt install python3-certbot-apache -y
# 申请证书(自动配置Apache)
certbot --apache -d your_domain.com -m your_email@example.com --agree-tos
# 自动续期测试
certbot renew --dry-run

用户权限管理

# 创建专用运行用户
adduser --system --shell /bin/bash --gecos "Web Service User" --group --disabled-password --home /opt/webapp webuser
# 修改文件所有权
chown -R webuser:webuser /var/www/html
# 限制PHP执行权限
find /var/www/html -type f -exec chmod 640 {} ;
find /var/www/html -type d -exec chmod 750 {} ;

进阶优化措施

性能调优参数表

子系统 优化项 推荐值
Linux内核 dirty_ratio vm.dirty_ratio=15%
Apache MaxKeepAliveRequests 100
Nginx worker_connections 1024
PHP-FPM pm.max_children 服务器CPU核心数×2+4
MySQL innodb_buffer_pool_size 物理内存的70%-80%

日志监控方案

# 安装日志分析工具
apt install goaccess -y
# 生成每日访问统计
goaccess /var/log/nginx/access.log --log-format=COMBINED --output=report.html
# 配置日志轮转
nano /etc/logrotate.d/nginx
# 添加以下内容
/var/log/nginx/.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

故障排查手册

现象 可能原因 解决方案
浏览器显示500错误 .htaccess语法错误 检查.htaccess文件格式
数据库连接失败 防火墙阻断3306端口 ufw allow 3306/tcp
PHP脚本不执行 FastCGI未正确配置 检查/etc/php/8.1/fpm/pool.d/www.conf
上传文件大小受限 PHP上传限制 修改upload_max_filesize参数
页面加载缓慢 未开启Gzip压缩 在Nginx配置中添加gzip on;

相关问答FAQs

Q1: 为什么通过公网IP能访问但域名打不开?

解答:该问题通常由DNS解析异常引起,请依次检查:① 域名注册商的控制台是否正确设置A记录指向服务器IP;② 本地hosts文件是否存在旧记录干扰;③ 使用dig your_domain.com命令验证DNS解析结果;④ 清除本机DNS缓存(Windows执行ipconfig /flushdns,Mac/Linux执行sudo killall -HUP mDNSResponder)。

Q2: 如何在不重启服务的情况下应用新配置?

解答:不同服务有不同的优雅重启方式:① Apache使用apachectl graceful;② Nginx使用kill -HUP <主进程号>;③ PHP-FPM使用kill -USR2 <主进程号>,可通过ps aux | grep [服务名]获取进程号,注意:首次修改重要配置建议先备份原文件,必要时仍应完整重启服务

0