做网站用小公司还是大公司好,网站开发经理招聘,长安仿做网站,wordpress能用代码吗虚拟主机
一.什么是虚拟主机#xff1f;
1.1 概念虚拟主机#xff08;Web Hosting#xff09;英文#xff1a;Web Hosting / Shared Hosting核心概念#xff1a; 一台服务器被切分给多个用户#xff0c;每个人只使用服务器的一部分资源#xff08;CPU、内存、带宽、存储…虚拟主机
一.什么是虚拟主机
1.1 概念虚拟主机Web Hosting英文Web Hosting / Shared Hosting核心概念 一台服务器被切分给多个用户每个人只使用服务器的一部分资源CPU、内存、带宽、存储用于部署网站。通俗的讲 虚拟主机就是将计算机中不同文件夹进行不同命名然后可以实现让服务器Apache根据用户的需求从不同文件夹网站中读取不同内容个人理解 虚拟主机就是把一台服务器“切开”给很多人用就好像在一个大房子里隔出很多房间每个人都有一个属于自己的小空间可以放网站文件、图片、代码等。服务器软件例如 Apache、Nginx会根据访问的 域名 或 端口去不同的“房间”里找对应的内容返回给用户。1.2 特点
多个网站共享同一台物理服务器的资源用户权限受限制通常不能随意安装系统或软件管理简单一般只需上传网站文件即可成本低适合小型网站或个人博客
例子
你买的便宜空间在 cPanel 里上传 HTML/PHP 文件别人也在同一台服务器上开空间
适合对象
个人网站、小型公司官网、电商初创网站
1.3 虚拟主机可以分成哪几种类型
在Apache中可以将虚拟主机分成两种
1. 基于 IP 的虚拟主机IP-based Virtual Host
概念
一台服务器可以绑定多个 IP 地址每个 IP 地址对应一个网站。用户访问某个 IP 时Apache 会根据这个 IP 来确定应该返回哪个网站的内容。原理
一般电脑默认只有一个网卡 → 一个 IP 地址。但服务器通常可以配置多个网卡或者在同一个网卡上绑定多个 IP。Apache 通过监听不同的 IP 地址将请求分发到对应的网站目录。
优点
配置直观、兼容性好。早期 SSLHTTPS环境下必须使用这种方式因为当时还没有 SNI 技术。
缺点
每个网站需要单独的 IP资源浪费成本高。在 IPv4 地址紧缺的情况下几乎不会大规模使用。示例配置
VirtualHost 192.168.1.10:80ServerName site1.comDocumentRoot /var/www/site1
/VirtualHostVirtualHost 192.168.1.11:80ServerName site2.comDocumentRoot /var/www/site2
/VirtualHost补充IP地址和IP
IPinternet Protocol) 协议 定义了地址的格式、长度、使用规则比如 IPv4 是 32 位IPv6 是 128 位以及数据包如何在网络中传输。
IP 地址 就是按照这个协议规范生成的一个唯一标识。
所以每个 IP 地址都遵循 IP 协议才能在网络上被正确识别和路由。
2. 基于域名的虚拟主机Name-based Virtual Host
一台电脑上一个IP一个IP下可以制作多个网站但需要给每个网站不同名字虚拟主机名多个网站共享同一个 IPApache 通过 域名Host 头部 来区分访问的是哪个网站。特点
节省 IP 地址一个 IP 可以跑很多网站。现代网站普遍采用这种方式。对 HTTPSSSL曾有过限制但随着 SNI 技术现在也能支持多域名 SSL。示例配置
VirtualHost *:80ServerName site1.comDocumentRoot /var/www/site1
/VirtualHostVirtualHost *:80ServerName site2.comDocumentRoot /var/www/site2
/VirtualHost二.实操
2.1 Homebrew Apache 配置基于域名虚拟主机的完整示例
前提
已经通过 Homebrew 安装 Apache
brew install httpdApache 配置文件路径
Intel 芯片/usr/local/etc/httpd/httpd.confM1/M2 芯片/opt/homebrew/etc/httpd/httpd.conf
默认 Homebrew Apache 监听 8080 端口可以改成 80但需要 sudo。1. 修改 hosts 文件本机域名映射
sudo nano /etc/hostssudo
全称 “superuser do”让你以 管理员权限root 执行后面的命令因为 /etc/hosts 文件是系统文件普通用户没有权限修改所以必须加 sudonano
一个终端下的 文本编辑器简单易用用它可以打开文件、编辑内容、保存退出还有其他编辑器可用比如 vi、vim/etc/hosts是系统的 本地域名映射文件作用把域名例如 site1.local映射到 IP例如 127.0.0.1当你访问一个域名时系统会先查这个文件看是否有对应 IP再去 DNS 查询添加
127.0.0.1 site1.local
127.0.0.1 site2.local2. 创建网站目录
mkdir -p ~/Sites/site1
mkdir -p ~/Sites/site2# 添加测试首页
echo h1Site 1/h1 ~/Sites/site1/index.html
echo h1Site 2/h1 ~/Sites/site2/index.html指令解释mkdir全称 “make directory”用来 创建一个新目录文件夹-p 参数全称 “parents”作用如果上级目录不存在会 自动创建上级目录3.启用虚拟主机功能
编辑 Homebrew Apache 配置文件
nano /usr/local/etc/httpd/httpd.conf # Intel
# 或者
nano /opt/homebrew/etc/httpd/httpd.conf # M1/M2启用虚拟主机配置
找到
#Include /usr/local/etc/httpd/extra/httpd-vhosts.conf去掉 #
Include /usr/local/etc/httpd/extra/httpd-vhosts.conf设置主机名解析
确认 ServerName 已设置
ServerName localhost:80804. 配置虚拟主机文件
编辑 /usr/local/etc/httpd/extra/httpd-vhosts.conf或对应路径
这里m2 是/opt/homebrew/etc/httpd/extra/httpd-vhosts.conf
默认配置:配置含义
1.VirtualHost *:8080 ... /VirtualHost
作用定义一个虚拟主机块Apache 监听 *所有 IP和 8080 端口的请求。原理* 表示可以接收任意网卡的请求端口必须匹配 Apache 当前监听的端口。
2.ServerAdmin webmastersite1.local
作用定义网站管理员邮箱。原理当网站出错500/404 等时Apache 可以在错误页显示这个邮箱方便用户联系管理员。原理点这是 元信息不会影响请求匹配但便于运维。
3.DocumentRoot /Users/你的用户名/Sites/site1
作用虚拟主机的网页根目录。原理Apache 根据访问的虚拟主机把 HTTP 请求映射到这个目录下的文件。本质虚拟主机是目录映射 域名匹配的组合。
4.ServerName site1.local
作用定义这个虚拟主机的主域名。原理Apache 根据 HTTP 请求中的 Host 头部匹配 ServerName找到对应网站
5.ServerAlias www.site1.local
作用定义别名可以匹配多个域名。原理如果用户访问别名也会指向同一个 DocumentRoot
6.Directory /Users/你的用户名/Sites/site1 ... /Directory
作用设置目录访问权限和选项。各项原理
Options Indexes FollowSymLinks
Indexes如果目录没有 index.html允许显示文件列表FollowSymLinks允许 Apache 跟随符号链接访问文件
AllowOverride All
允许目录下的 .htaccess 文件覆盖配置
Require all granted
允许所有用户访问此目录重要否则会 403 禁止访问7.ErrorLog 和 CustomLog
ErrorLog记录错误日志例如 404、500便于排查问题CustomLog记录访问日志谁访问了哪个页面常用格式 common原理日志是 Apache 内部模块通过路径写入文件便于运维和调试。
实操配置如下5. 设置目录权限
sudo chown -R $(whoami):_www ~/Sites
chmod -R 755 ~/SitesApache 并不强制网站目录必须在 /var/www它可以访问任何你配置的 DocumentRoot 目录只要
Apache 进程有权限读取目录和文件
Homebrew Apache 在 macOS 上通常以 _www 用户运行_www 用户必须有 读权限和目录执行权限才能访问你的 HTML/PHP 文件
目录权限和所有权设置正确
如果你的网站目录在桌面或 ~/Sites 下默认权限可能是
所有者你自己组staff权限700 或 755
Apache 可能没有权限访问导致 403 Forbidden拆解sudo chown -R $(whoami):_www ~/Sites
1.sudo
以管理员权限执行命令因为普通用户可能没有权限修改其他用户或系统目录的所有权。
2.chown
全称 “change owner”
用于修改文件或目录的 所有者owner和所属组group
3.-R
Recursive递归
表示命令会作用于该目录及其所有子目录和文件
4.$(whoami)
代表当前登录用户
用命令替换将当前用户名填入例如 user
5.:_www
冒号前是所有者owner冒号后是所属组group
_www 是 macOS 系统默认的 Web 服务组Apache 属于这个组
6.~/Sites
指要修改的目录路径
~ 代表当前用户主目录
拆解chmod -R 755 ~/Sites
1.chmod
全称 “change mode”
用于修改文件或目录的 权限
2.-R
递归修改该目录及其所有子文件和子目录
3.755
权限数字表示法
第一个数字 7 → 所有者权限读®写(w)执行(x) 7第二个数字 5 → 所属组权限读®执行(x) 5第三个数字 5 → 其他用户权限读®执行(x) 5
4.~/Sites
指要修改权限的目录
6.重启 Apache
brew services restart httpd7. 测试
浏览器访问
http://site1.local:8080 → 显示 Site 1
http://site2.local:8080 → 显示 Site 28.注意
如果想用 80 端口需要修改 httpd.conf
Listen 80并用 sudo brew services restart httpd 启动。
如果 Homebrew Apache 和系统自带 Apache 冲突建议停止系统 Apache
sudo apachectl stop以后要添加新虚拟主机只要在 httpd-vhosts.conf 增加一个 VirtualHost 块即可并更新 /etc/hosts。