云计算基础-17:Linux网站服务

当你输入 www.baidu.com 并回车的那一瞬间,背后发生了什么?从 B/S 架构的概念,到 Apache 服务器的安装配置;从一台服务器跑多个网站的虚拟主机技术,到完整部署论坛、博客、电商、网校四大动态网站系统——本文将带你从零搭建完整的网站服务。

学完本章,你将能够独立部署 LAMP 架构,并上线自己的网站。


基础概念

什么是 B/S 架构

B/S(Browser/Server):浏览器/服务器架构。用户通过浏览器访问服务器上的网站,无需安装专用客户端软件。

B/S vs C/S 对比:

对比维度B/S 架构C/S 架构
全称Browser / ServerClient / Server
客户端浏览器(Chrome、Firefox)需要安装专用软件(QQ、微信)
更新维护只需更新服务器端客户端和服务器都要更新
跨平台任何有浏览器的设备都能访问需要开发不同平台的客户端
示例淘宝网页版、百度QQ 客户端、微信电脑版

现代互联网的趋势是从 C/S 向 B/S 转变——越来越多的服务通过浏览器提供。


核心名词

名词全称说明
HTMLHyperText Markup Language超文本标记语言,网页的基本构成语言
网页Web Page使用 HTML、PHP、Java 等语言格式编写的文件
主页Home Page用户访问网站时看到的第一个页面
网站Website多个网页组合而成的一台网站服务器
URLUniform Resource Locator统一资源定位符,访问网站的地址

URL 结构拆解

http://www.baidu.com:80/1.html
│      │            │   │
│      │            │   └── 资源路径(文件名)
│      │            └────── 端口号(HTTP 默认 80)
│      └─────────────────── 域名(服务器地址)
└────────────────────────── 协议(HTTP/HTTPS/FTP)

更多示例:

http://www.baidu.com:80/1.html       ← HTTP 网页
ftp://192.168.100.121:21/1.txt       ← FTP 文件
https://www.google.com:443/search    ← HTTPS 安全网页

网站架构:LAMP

LAMP 是最经典的 Web 服务器架构组合。

字母组件角色说明
LLinux操作系统系统平台
AApacheWeb 服务器处理 HTTP 请求,提供网页
MMySQL/MariaDB数据库存储和管理数据
PPHP中间件/编程语言连接 Web 服务器和数据库的桥梁
┌─────────────────────────────────────────┐
│  用户浏览器                               │
└──────────┬──────────────────────────────┘
           │ HTTP 请求
           ↓
┌─────────────────────────────────────────┐
│  L — Linux(操作系统平台)                │
│  ┌─────────────────────────────────────┐│
│  │  A — Apache(接收请求,返回响应)     ││
│  │  ┌─────────────────────────────────┐││
│  │  │  P — PHP(处理业务逻辑)          │││
│  │  │  ┌─────────────────────────────┐│││
│  │  │  │  M — MySQL(存取数据)        ││││
│  │  │  └─────────────────────────────┘│││
│  │  └─────────────────────────────────┘││
│  └─────────────────────────────────────┘│
└─────────────────────────────────────────┘

静态站点:Apache

Apache Logo

Apache 基础知识

项目说明
官网www.apache.orgApache 软件基金会
软件包名httpdCentOS 中的包名
服务端口80/tcp (HTTP)、443/tcp (HTTPS)Web 服务默认端口
主配置文件/etc/httpd/conf/httpd.conf核心配置
子配置文件/etc/httpd/conf.d/*.conf扩展配置(虚拟主机等)
默认主目录/var/www/html网站源代码默认位置

版本建议:建议使用 Apache 2.4 及以上版本。


安装 Apache

# 安装 httpd
[root@localhost ~]# yum -y install httpd

# 启动服务
[root@localhost ~]# systemctl start httpd

# 查看服务状态
[root@localhost ~]# systemctl status httpd

# 设置开机自启
[root@localhost ~]# systemctl enable httpd

# 关闭防火墙(测试环境)
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

# 查看 Apache 版本
[root@localhost ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   May 30 2023 14:01:11

验证安装:

打开浏览器,访问 http://服务器IP,看到 Apache 测试页面即表示安装成功。


虚拟主机(VirtualHost)

什么是虚拟主机

虚拟主机 的作用:在一台物理服务器上运行多个网站。

基于主机名的虚拟主机:

同一台服务器(同一个 IP),通过不同的域名区分不同的网站:
  www.a.org  →  网站 A
  www.b.org  →  网站 B

实验目标

网站域名网站资源存放目录
www.a.org/var/www/html/a.org
www.b.org/b.org

注意/b.org 目录不在默认的 /var/www/html 下,需要额外配置目录权限。


配置 www.a.org 站点

步骤 1:准备网站源码目录

[root@web ~]# mkdir /var/www/html/a.org
[root@web ~]# vim /var/www/html/a.org/index.html

输入网页内容:

<html><body><h1>a.com.com.com</h1></body></html>

步骤 2:创建网站配置文件

[root@web ~]# vim /etc/httpd/conf.d/a.org.conf
<VirtualHost *:80>
    ServerName www.a.org
    DocumentRoot /var/www/html/a.org
</VirtualHost>
指令说明
<VirtualHost *:80>定义虚拟主机,监听所有 IP 的 80 端口
ServerName网站域名
DocumentRoot网站根目录(源代码存放位置)

步骤 3:检测配置并重启

# 检测配置文件语法
[root@web ~]# httpd -t
Syntax OK

# 重启服务
[root@web ~]# systemctl restart httpd

配置 www.b.org 站点

步骤 1:准备网站源码目录

[root@web ~]# mkdir /b.org
[root@web ~]# vim /b.org/index.html

输入网页内容:

<html><body><h1>b.org.org.org</h1></body></html>

步骤 2:创建网站配置文件

[root@web ~]# vim /etc/httpd/conf.d/b.org.conf
<VirtualHost *:80>
    ServerName www.b.org
    DocumentRoot /b.org
</VirtualHost>

<Directory "/b.org">
    Require all granted
</Directory>

重要<Directory> 区块用于目录授权。当网站主目录不在 /var/www/html 下时,必须添加此授权,否则 Apache 会拒绝访问。

步骤 3:检测配置并重启

[root@web ~]# httpd -t
Syntax OK

[root@web ~]# systemctl restart httpd

客户端测试

Linux 客户端

步骤 1:配置域名解析

[root@client ~]# vim /etc/hosts

# 添加以下内容:
192.168.100.121 www.a.org
192.168.100.121 www.b.org

/etc/hosts 是本地 DNS 解析文件,优先级高于网络 DNS 服务器。

方法一:字符界面测试

[root@client ~]# yum install -y elinks
[root@client ~]# elinks http://www.a.org
[root@client ~]# elinks http://www.b.org

方法二:图形界面测试

打开 Firefox 浏览器,分别访问:

  • http://www.a.org
  • http://www.b.org

Windows 客户端

步骤 1:配置域名解析

  1. Win + R 打开运行窗口
  2. 输入 cmd 打开命令提示符
  3. 编辑 hosts 文件:notepad C:\Windows\System32\drivers\etc\hosts
  4. 添加以下内容:
192.168.100.121 www.a.org
192.168.100.121 www.b.org

步骤 2:浏览器测试

打开浏览器访问 http://www.a.orghttp://www.b.org

Windows 客户端测试


动态站点:LAMP 实战

资源准备

下面的资源下载链接如果失效,可下载好提供的资源后上传到虚拟机使用。

通过网盘分享的文件:网站源码

上传示例:

# 下载传输工具
[root@apache ~]# yum -y install lrzsz

# 选择上传文件/压缩包(回车后会弹出选择框)
[root@apache ~]# rz

[root@apache ~]# ls
anaconda-ks.cfg  Discuz_X2.5_SC_UTF8.zip

也可以使用 FinalShell 拖拽传输。


通用基础环境

以下所有动态站点部署,都需要先完成基础环境准备。

# 永久关闭 SELinux
[root@apache ~]# sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config

# 临时关闭 SELinux
[root@apache ~]# setenforce 0

# 停止防火墙
[root@apache ~]# systemctl stop firewalld.service

# 开机禁用防火墙
[root@apache ~]# systemctl disable firewalld.service

注意事项:

  • 由于域名解析或浏览器缓存的问题,域名访问可能出现连接失败的现象,但 IP 无论在真机还是虚拟机都可以直接访问。
  • 如使用域名访问:实验环境建议使用两台虚拟机,其中一台带有图形化的 Linux 虚拟机做验证(可以使用浏览器),浏览器清空历史数据或使用无痕模式访问。
  • 可能出现如下图的问题,但不必在意,主要理解实验即可,无论是域名访问还是 IP 访问都不影响实验结果。
域名访问问题示例


安装 LAMP 组件

# 安装 LAMP 全家桶
[root@apache ~]# yum -y install httpd mariadb-server mariadb php php-mysql gd php-gd

# 启动服务
[root@apache ~]# systemctl start httpd mariadb

# 设置开机自启
[root@apache ~]# systemctl enable httpd mariadb
软件包说明
httpdApache Web 服务器
mariadb-serverMariaDB 数据库服务器
mariadbMariaDB 数据库客户端
phpPHP 中间件
php-mysqlPHP 连接 MySQL 的插件
gd图形库
php-gdPHP 图形库

部署论坛系统:Discuz

Discuz Logo

导入网站源码

# 下载 Discuz 源码
[root@apache ~]# wget http://download.comsenz.com/DiscuzX/2.5/Discuz_X2.5_SC_UTF8.zip

# 创建网站目录
[root@apache ~]# mkdir -p /webroot/discuz

# 安装解压工具
[root@apache ~]# yum install -y unzip

# 解压源码
[root@apache ~]# unzip Discuz_X2.5_SC_UTF8.zip

# 拷贝源码到网站目录
[root@apache ~]# cp -rf upload/* /webroot/discuz/

# 修改文件所有者(Apache 运行用户)
[root@apache ~]# chown -R apache.apache /webroot/discuz/

配置 Apache 虚拟主机

[root@apache ~]# vim /etc/httpd/conf.d/discuz.conf
<VirtualHost *:80>
    ServerName www.discuz.com
    DocumentRoot /webroot/discuz
</VirtualHost>

<Directory "/webroot/discuz">
    Require all granted
</Directory>
[root@apache ~]# systemctl restart httpd

准备数据库

[root@apache ~]# mysql

MariaDB [(none)]> create database discuz;
MariaDB [(none)]> show databases;    ← 验证是否创建成功

建议:创建数据库后,用 show databases; 再检查一遍,确认创建成功。

前台安装

客户端配置域名解析:

[root@client ~]# vim /etc/hosts
192.168.100.121  www.discuz.com

如果没有配置域名解析,可直接输入 IP 访问。

浏览器访问:

打开浏览器访问 http://www.discuz.com192.168.100.121,按照安装向导完成论坛的安装。

安装步骤 1

安装步骤 2

安装步骤 3

安装步骤 4

提示:如果安装过程出现下图所示,不用理会,可能是版本比较老旧的问题。打开新页面搜索即可看到主页。

版本兼容性问题

安装完成


部署博客系统:WordPress

WordPress Logo

配置 Apache 虚拟主机

[root@apache ~]# vim /etc/httpd/conf.d/wordpress.conf
<VirtualHost *:80>
    ServerName www.wordpress.com
    ServerAlias wordpress.com
    DocumentRoot /webroot/wordpress
</VirtualHost>

<Directory "/webroot/wordpress">
    Require all granted
</Directory>
[root@apache ~]# systemctl restart httpd

ServerAlias 是域名别名——用户访问 wordpress.comwww.wordpress.com 都能看到网站。

导入网站源码

# 创建网站目录
[root@apache ~]# mkdir -p /webroot/wordpress

# 获取、解压源码包
[root@apache ~]# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
[root@apache ~]# tar xvf wordpress-4.9.4-zh_CN.tar.gz

# 拷贝源码到主目录
[root@apache ~]# cp -rf wordpress/* /webroot/wordpress/

# 赋予权限
[root@apache ~]# chmod -R 777 /webroot/wordpress

# 重启 Web 服务和数据库服务
[root@apache ~]# systemctl restart httpd mariadb

准备数据库

[root@apache ~]# mysql

MariaDB [(none)]> create database wordpress;
MariaDB [(none)]> show databases;    ← 验证

前台安装

客户端配置域名解析:

[root@client ~]# vim /etc/hosts
192.168.100.121  www.wordpress.com

浏览器访问:

打开浏览器访问 http://www.wordpress.com 或 IP,按照安装向导操作:

1. 点击”现在安装”

WordPress 安装 - 开始

2. 填写数据库信息(数据库名:wordpress,用户:root,密码留空)

WordPress 安装 - 数据库信息 1

WordPress 安装 - 数据库信息 2

3. 设置站点标题和管理员密码

WordPress 安装 - 站点信息 1

WordPress 安装 - 站点信息 2

4. 安装完成后,根据提示登录查看控制台(仪表盘),也可访问 IP/wp-admin 进入

WordPress 安装 - 控制台 1

WordPress 安装 - 控制台 2

5. 打开新页面搜索 IP 或域名访问站点首页

WordPress 首页


部署电商系统:ECShop

下载并导入源码

# 从 ECShop 官网下载:http://www.ecshop.com/
# 源码包:ECShop_V3.0.0_UTF8_release0518.zip
# 也可以使用提供的资源

[root@apache ~]# mkdir -p /webroot/ecshop
[root@apache ~]# unzip ECShop_V3.0.0_UTF8_release0518.zip
[root@apache ~]# cp -rf ECShop_V3.0.0_UTF8_release0518/* /webroot/ecshop/

配置 HTTP 虚拟主机

[root@apache ~]# vim /etc/httpd/conf.d/ecshop.conf
<VirtualHost *:80>
    ServerName www.ecshop.com
    ServerAlias ecshop.com
    DocumentRoot /webroot/ecshop
</VirtualHost>

<Directory "/webroot/ecshop">
    Require all granted
</Directory>
# 检测语法
[root@apache ~]# httpd -t

# 重启服务
[root@apache ~]# systemctl restart httpd

配置域名解析

[root@client ~]# vim /etc/hosts
192.168.100.121  www.ecshop.com

授权源码目录

[root@apache ~]# chmod -R 777 /webroot/ecshop/

ECShop 安装过程中需要写入配置文件,必须赋予足够的权限。

修改 PHP 时区

如果安装时遇到时区报错:

[root@apache ~]# vim /etc/php.ini

# 找到这一行(默认被注释):
;date.timezone =

# 修改为:
date.timezone = Asia/Shanghai
[root@apache ~]# systemctl restart httpd

准备数据库

[root@apache ~]# mysql

MariaDB [(none)]> create database ecshop;
MariaDB [(none)]> show databases;    ← 验证是否创建成功

建议:创建数据库后,用 show databases; 再检查一遍,确认创建成功。

前台安装

打开浏览器访问 http://www.ecshop.com/ 或 IP,按照安装向导操作:

1. 欢迎界面 → 同意协议

ECShop 安装 - 协议

2. 检测环境

ECShop 安装 - 环境检测

3. 配置数据库信息

4. 填写站长信息(设置管理员账号密码)

ECShop 安装 - 管理员信息

5. 安装完成

访问前台:

http://www.ecshop.com/
ECShop 前台

访问管理后台(需管理员账号密码登录):

http://www.ecshop.com/admin/privilege.php?act=login
ECShop 后台


部署网校系统:EduSoho

安装 EPEL 源

[root@apache ~]# yum -y install epel-release

如果 yum repolist 中已有 epel 源,则无需此步骤。

安装 LAMP 组件

[root@apache ~]# yum -y install bash-completion httpd php php-cli php-curl \
    php-fpm php-intl php-mcrypt php-mysql php-gd php-mbstring php-xml php-dom \
    mariadb-server mariadb

[root@apache ~]# systemctl start httpd mariadb

EduSoho 需要更多的 PHP 扩展模块,因此安装项比前面的系统多。

准备数据库

[root@apache ~]# mysql

MariaDB [(none)]> create database edusoho;
MariaDB [(none)]> show databases;    ← 检查

设置上传限制(可选)

网校的视频文件比较大,需要修改 PHP 的上传限制:

[root@apache ~]# vim /etc/php.ini
post_max_size = 1024M
memory_limit = 1024M
upload_max_filesize = 1024M
date.timezone = Asia/Shanghai
[root@apache ~]# vim /etc/php-fpm.d/www.conf
listen.owner = apache
[root@apache ~]# systemctl restart httpd php-fpm

上传源码

# 下载源码
[root@apache ~]# wget http://download.edusoho.com/edusoho-7.5.12.tar.gz

# 解压
[root@apache ~]# tar xf edusoho-7.5.12.tar.gz

# 创建目录并拷贝
[root@apache ~]# mkdir -p /webroot/edusoho
[root@apache ~]# cp -rf edusoho/* /webroot/edusoho

# 修改所有者
[root@apache ~]# chown -R apache.apache /webroot/edusoho

设置虚拟主机

[root@apache ~]# vim /etc/httpd/conf.d/edusoho.conf
<VirtualHost *:80>
    ServerName www.edusoho.com
    DocumentRoot /webroot/edusoho/web
</VirtualHost>

<Directory "/webroot/edusoho/web">
    Require all granted
</Directory>

注意:EduSoho 的 DocumentRoot 指向的是 /webroot/edusoho/web(多了一层 web),这是框架的要求。

[root@apache ~]# systemctl restart httpd

客户端配置 DNS

[root@client ~]# vim /etc/hosts
192.168.100.121  www.edusoho.com

前台安装

浏览器访问以下地址开始安装:

http://www.edusoho.com/install/start-install.php
或
http://192.168.100.121/install/start-install.php
EduSoho 安装 - 开始

按照安装向导完成安装。请记住管理员用户名和密码——这是后续上传视频和管理课程的账号。

EduSoho 安装 - 步骤 1

EduSoho 安装 - 步骤 2

EduSoho 安装 - 步骤 3

EduSoho 安装 - 步骤 4

正式访问

http://www.edusoho.com/app.php    或    http://192.168.100.121/app.php
EduSoho 首页

需要先在后台创建课程、分配课时,才能正常访问课程内容。


常用命令速查

Apache 管理

命令说明
systemctl start httpd启动 Apache
systemctl stop httpd停止 Apache
systemctl restart httpd重启 Apache
systemctl status httpd查看 Apache 状态
systemctl enable httpd设置开机自启
httpd -v查看 Apache 版本
httpd -t检测配置文件语法

MySQL/MariaDB 管理

命令说明
systemctl start mariadb启动数据库
mysql进入数据库命令行
create database 库名;创建数据库
show databases;查看所有数据库
drop database 库名;删除数据库

域名解析

系统配置文件格式
Linux/etc/hostsIP 域名
WindowsC:\Windows\System32\drivers\etc\hostsIP 域名

常见问题

Apache 无法启动

# 检查端口是否被占用
[root@localhost ~]# netstat -antp | grep 80

# 检查配置文件语法
[root@localhost ~]# httpd -t

# 查看错误日志
[root@localhost ~]# tail /var/log/httpd/error_log

访问网站显示 403 Forbidden

检查 <Directory> 授权配置,确保 Require all granted 已正确设置。

访问网站显示 404 Not Found

检查 DocumentRoot 配置的路径是否正确,目录下是否有 index.html

虚拟主机不生效

  1. 确保子配置文件放在 /etc/httpd/conf.d/ 目录下
  2. 文件名必须以 .conf 结尾
  3. 修改配置后重启 Apache
  4. 客户端 /etc/hosts 中配置了正确的域名解析

PHP 页面显示源码而不是渲染

确保 phpphp-mysql 已正确安装,并重启 Apache。


最佳实践

  1. 虚拟主机配置分离

    • 每个网站一个独立的 .conf 文件,放在 /etc/httpd/conf.d/
    • 文件名使用域名命名,如 discuz.confwordpress.conf
  2. 网站目录规范

    • 统一使用 /webroot/ 作为网站代码根目录
    • 每个网站以域名命名子目录:/webroot/discuz//webroot/wordpress/
  3. 权限管理

    • 网站文件所有者设为 apache.apache
    • 需要写入的目录(如上传目录)赋予 777 权限
    • 生产环境不应使用 777,应精确控制权限
  4. 数据库安全

    • 每个应用使用独立的数据库和用户
    • 不要使用 root 用户连接应用数据库
    • 定期备份数据库
  5. PHP 配置优化

    • 修改时区为 Asia/Shanghai
    • 根据需求调整上传限制(upload_max_filesize
    • 生产环境关闭错误显示

总结

通过本章节的学习,你应该掌握了:

  • 理解 B/S 架构的概念和优势
  • 掌握 HTML、网页、主页、网站、URL 等核心名词
  • 理解 LAMP 架构(Linux + Apache + MySQL + PHP)的各组件作用
  • 掌握 Apache 的安装、启动、版本查看和配置检测
  • 理解虚拟主机的概念和基于主机名的虚拟主机配置
  • 掌握 <VirtualHost><Directory> 配置指令
  • 理解 /etc/hosts 本地 DNS 解析的作用
  • 掌握 LAMP 环境的一键安装(httpd + mariadb + php + 扩展)
  • 能够独立部署 Discuz 论坛系统
  • 能够独立部署 WordPress 博客系统
  • 能够独立部署 ECShop 电商系统
  • 能够独立部署 EduSoho 网校系统
  • 掌握每个系统的通用部署流程:基础环境 → 安装 LAMP → 导入源码 → 配置虚拟主机 → 创建数据库 → 前台安装

学习建议:网站服务是运维工作中最常接触的内容。建议在自己的虚拟机上完整部署一遍这四个系统,尤其是 LAMP 环境的搭建和虚拟主机的配置。实际操作一遍,远胜于阅读十遍文档。每个系统部署成功后,截图记录,这些都是你技术能力的证明。


🙋 学习路上不孤单,有坑一起填!



卡在参数调试、命令打架、功能没反应、资源失效?其他问题?直接戳我,也可以进群和同好交流!



📱 个人QQ:3838586495    👥 交流Q群:1094091455    📮 邮箱:leyan2504@163.com



内容帮你省了大把踩坑时间?可以文末小小打赏鼓励一波,也欢迎安利给身边学习的朋友~



✨ 欢迎来评论区「交作业」:分享你的配置思路、提出疑难问题;评论区正确填写邮箱,不错过任何人的解答回复!


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇