搭建好 PHP 开发环境之后,接下来就可以 copy 准备好的业务代码到站点目录中,随时发布网站了。可是如何访问站点中的网页呢?直接访问自己的公网 ip 即可访问到站点网页,可是想优雅一些就需要准备一个域名了。
一级域名(baidu.com)也叫作顶级域名,注册一级域名是需要付费的。
而二级域名(image.baidu.com)是一级域名的延伸,所以只要购买了一级域名,二级域名是可以任意配置的。
其实(www.baidu.com)也是二级域名,只是大家已经习惯使用www为前缀的二级域名作为网站的主域名而已。
通过DNS解析服务商,可以为每个二级域名绑定不同的主机IP,这样即使只有一个主域名也可以架设多个网站了。
如果你只有一台主机,并且要在上面建立多个项目,还得通过子域名的方式访问,那么你需要配置 Apache 才行。
1 . 首先域名解析,将自己的域名(我的域名是 fatxin.cn)解析到公网 ip ,一段时间后,访问 fatxin.cn 就等同于访问公网 ip 了。(前提是开发环境搭建成功)
2 . 添加子域名:在一级域名解析,添加记录。如先添加一个demo,即生成二级协作域名 demo.fatxin.cn;(既然要实现Apache 配置多站点访问就得多准备几个域名,域名需要钱的,有了一个域名,理论上就可以配置无限个二级域名了)
3 . 在云服务器中,找到 Apache 中的配置文件 ..\apache2.4\conf\httpd.conf ,定位到下面内容:
#Include conf/extra/httpd-vhosts.conf
去掉注释,即:
Include conf/extra/httpd-vhosts.conf
4 . 在文件 ..\apache2.4\conf\extra 中打开 httpd-vhosts.conf 文件,并将所有内容注释掉(删除掉也行),添加下面代码:
AllowOverride all
Require all granted
NameVirtualHost *:80
ServerAdmin 「管理员邮箱」
DocumentRoot 「项目根目录」
ServerName 「二级域名」
ServerAlias 「域名别名」
ErrorLog 「错误日志」
CustomLog 「访问日志」
解释上面代码:
Directory 标签用于给所有目录设置访问权限
AllowOverride all 允许 .htaccess 对URL进行重写 / AllowOverride none 忽略 .htaccess 文件
Require all granted 允许外部访问 / Require all denied 禁止外部访问
NameVirtualHost 是固定形式,用于使 VirtualHost 标签生效
VirtualHost 标签用于为二级域名绑定虚拟主机
每一个二级域名对应一个 VirtualHost 标签,有多少二级域名,就需要多少个 VirtualHost 标签
DocumentRoot 和 ServerName 是必填项,其余可选
注意:由于 www 域名属于特殊的二级域名,所以它也需要在 httpd-vhosts.conf 文件中注册
修改完 Apache 的配置文件后,必须重启服务器配置即可生效。
附上我的源代码:
AllowOverride all
Require all granted
NameVirtualHost *:80
# 首页
# ServerAdmin [email protected]
DocumentRoot "c:/web/Apache2.4/htdocs/wp"
ServerName fatxin.cn
# ServerAlias www.fatxin.cn
# ErrorLog "logs/dummy-host.example.com-error.log"
# CustomLog "logs/dummy-host.example.com-access.log" common
# 作品集
DocumentRoot "c:/web/Apache2.4/htdocs/demo"
ServerName demo.fatxin.cn
重启Apache之后,访问 www.fatxin.cn 即是访问站点目录(htdocs)中的wp文件夹,访问 demo.fatxin.cn 即是访问站点目录(htdocs)中的 demo 文件夹。
将 业务代码 上传到站点目录中的文件夹中即可。当然,上面说的都是需要拥有域名、云服务器的前提,作为学生一枚,搞个低配的服务器还是不需要花很多金币的。
如何在本地上部署项目?更加简单,只需要配置 hosts 和 httpd.conf 即可。
1.在 host 文件(C:\Windows\System32\drivers\etc)中添加「127.0.0.1 自定义域名」,如:
127.0.0.1 phplayer.com
这样输入 phplayer.com 就相当于输入 127.0.0.1 访问到服务器站点了。但要为不同的域名请求分配不同的处理路径,还需要修改 httpd.conf 文件 。在 apache\apache2.4\httpd.conf 文件中添加下面代码:
DocumentRoot "c:/web/Apache2.4htdocs/phplayer/"
ServerName phplayer.com
或者:
DocumentRoot "c:/web/Apache2.4/htdocs/phplayer/"
ServerName phplayer.com
Require local
重启 Apache ,访问phplayer.com 即相当于访问 127.0.0.1/phplayer了。
Directory 是用户可以访问的目录,和项目路径保持一致。注意 Directory 中的参数 Require local,它的意思是只允许本地访问,如果你把它改成 Require all granted,那么任何人都可以访问这个目录了。
部署过程知识点就这么些了,也没遇到什么坑,一切顺利,就这样吧,exit;