[TOC] ## 简介 在本节里,我们介绍如何使用 Homestead 来创建 ThinkBBS 这个项目,并完成 Git 仓库创建。 ## 做好准备 由于我们接下来的开发都会在 Homestead 上进行,因此,在开始本章教程之前,请保证你的 Homestead 虚拟机已成功开启并登录。使用下面命令来启动和登录 Homestead : ```shell > cd ~/Homestead && vagrant up > vagrant ssh ``` 在虚拟机中进入Code文件夹(注意:Code 文件夹是我们按照 [开发环境搭建](https://learnku.com/docs/laravel-development-environment/5.8/development-environment-macos/4372) 配置的共享文件夹): ``` $ cd ~/Code ``` >[info] 注意:本书中因为虚拟机的存在,我们会有两个运行命令行的环境,一个是 **宿主机**,另一个是 **Homestead** 虚拟机。我们会在命令的前面使用『命令行提示符』来区分宿主机和 Homestead 。请记住以 **\>** 开头的命令是运行在宿主机里,以 **$** 开头的命令是运行在 Homestead 虚拟机里。详见 [写作约定 - 命令行提示符](../c1_base/01050_写作约定.md) 。 ## Composer 加速 在创建项目之前,我们先在虚拟机中运行以下命令来实现 [Composer 安装加速](https://learnku.com/composer/wikis/30594) : ```shell $ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ ``` ## 创建 ThinkBBS 项目 下面让我们来使用 Composer 创建一个名为 ThinkBBS 的应用,后面我们将基于这个应用做更多的功能完善: ```shell $ cd ~/Code $ composer create-project topthink/think ThinkBBS --prefer-dist "6.0.*" ``` 创建完后,进入项目根目录使用下面这行命令可以查看创建项目使用的 thinkphp 版本: ```shell $ cd ~/Code/ThinkBBS/ $ php think version v6.0.0 ``` ![Create Project](http://tbs.zhanghong.info/images/chapters/02/040_create_project_60.png) >[warning] 版本更迭再正常不过,安装界面的版本无需跟上面一致。官方在 [ThinkPHP6.0完全开发手册](https://www.kancloud.cn/manual/thinkphp6_0/1037481) 里创建项目时并没有指定 ThinkPHP 版本(参数--prefer-dist),但考虑到如果不指定版本 composer 会使用最新版本框架创建项目,为了避免大家学习过程中使用的框架版本和本教程版本差别过大,所以我们在这里用参数 `--prefer-dist "6.0.*"` 指定用 ThinkPHP6.0 版本创建项目。 ## 修改 hosts 使用 Homestead 开发时,我们在每个项目创建完成的第一步是设置项目的 Homestead 配置,让应用能在 Homestead 的开发环境上跑起来。 为了方便记忆,一般我们都会将 IP 映射为域名,然后通过设置宿主机的 `hosts` 文件来指定 IP 与域名之间的映射关系。由于我们在 Homestead 上默认使用 `192.168.10.10` 来作为虚拟机的 IP 的地址,因此我们需要在宿主机的 hosts 文件中将域名指向该 IP : Mac 下打开 hosts 文件: ```shell > subl /etc/hosts ``` Windows 下打开 hosts 文件: ```shell subl C:/Windows/System32/Drivers/etc/hosts ``` >[info] Windows 下,如果你没有集成 subl 命令的话, 请使用编辑器直接打开文件,Hosts 文件路径是 C:\\Windows\\System32\\Drivers\\etc\\hosts 。如果你不懂怎样修改系统的 host 文件的话,请参考 [如何修改windows系统的host文件](https://www.cnblogs.com/MLing/p/8036371.html) 。 文件成功打开后,在 hosts 文件最后面新增下面一行以完成设置: ```shell 192.168.10.10 bbs.test ``` ## 新增站点 如果你安装了 Sublime Text,可通过运行下面命令打开 `Homestead.yaml` 文件: ```shell > subl ~/Homestead/Homestead.yaml ``` 在 Homestead.yaml 文件中新增 ThinkBBS 项目的 `sites` 、 `databases` 和 `ports` 的相关设置: ``` --- ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa folders: - map: ~/Code to: /home/vagrant/Code sites: - map: homestead.test to: /home/vagrant/Code/Laravel/public - map: bbs.test # <--- 这里 to: /home/vagrant/Code/ThinkBBS/public # <--- 这里 databases: - homestead - think_bbs # <--- 这里 variables: - key: APP_ENV value: local # blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar ports: - send: 58000 # <--- 这里 to: 8000 ``` 我们主要设置了 `sites` 、 `databases` 和 `ports` 这三项。 `sites` 会将域名 `bbs.test` 映射到虚拟机的 `/home/vagrant/Code/ThinkBBS/public` 目录, `databases` 则为新创建的项目指定数据库名,而 `ports` 是为我们使用 ThinkPHP 内置服务( Built-in Server )启动项目时指定的端口映射。 ## 重启虚拟机 在我们每次对 `Homestead.yaml` 文件进行了更改之后,都需要运行下面命令来使其更改生效: ```shell > cd ~/Homestead && vagrant provision && vagrant reload ``` 命令说明: * `vagrant provision` 是命令 Vagrant 重新加载 `Homestead.yaml` 配置; * `vagrant reload` 是重启虚拟机使更改生效。 ## 访问应用 1. 我们在浏览器中打开 [http://bbs.test](http://bbs.test) 可以看到如下界面: ![Site Home](http://tbs.zhanghong.info/images/chapters/02/040_vhost_port_perview_60.png) 2. 除使用域名 [http://bbs.test](http://bbs.test) 访问外,我们还可以使用框架自带的内置服务器查看运行结果,详细步骤如下: 1)进入项目根目录启动内置服务器: ```shell # 内置服务器默认监听的是 8000 端口 $ php think run ThinkPHP Development server is started On <http://127.0.0.1:8000/> You can exit with `CTRL-C` Document root is: /home/vagrant/Code/ThinkBBS/public ``` 2) 在浏览器中打开 [http://192.168.10.10:8000](http://192.168.10.10:8000) 或 [http://localhost:58000](http://localhost:58000) ,可以看到以下结果。 虚拟机 IP + 端口访问结果: ![Preview By VM](http://tbs.zhanghong.info/images/chapters/02/040_vm_port_perview_60.png) 宿主机 IP + 端口访问结果: ![Preview By Host](http://tbs.zhanghong.info/images/chapters/02/040_host_port_perview_60.png) >[info] 我们启动内置服务器后之所以使用 [http://192.168.10.10:8000](http://192.168.10.10:8000) 和 [http://localhost:58000](http://localhost:58000) 两个地址可以浏览项目是因为此处使用了 VirtualBox 虚拟机的『端口转发』功能,Homestead 脚本默认将本机端口 58000 转发到虚拟机里的 8000 端口。 > > 到这里我们知道项目创建成功后,我们可以使用 Nginx 虚拟域名和框架内置服务器查看项目运行结果。因为这两种查看方式的运行结果相同,所以在本教程里我们统一使用 **Nginx 虚拟域名** 这种方式查看运行结果。 ## Git 代码版本控制 为了在接下来更好的追踪项目代码的更改,我们还需要将新建的 ThinkPHP 项目纳入到 Git 版本管理中。不过在把代码文件纳入版本管理之前我们需要设置一下 Git 的忽略文件规则。 `.gitignore` 是 Git 用来存储忽略文件规则的文件,每次当把文件纳入到版本控制时 Git 会根据该文件里的模式规则来判断是否将提交文件添加到版本控制中。ThinkPHP 框架为我们生成项目时也在项目根目录创建了一个 `.gitignore` ,以下是该文件内设置的忽略文件规则: *.gitignore* ``` /.idea /.vscode /vendor *.log .env ``` 在提交代码之前,我们需要把 `.gitignore` 文件修改成以下内容: *.gitignore* ``` /.idea /.vscode /vendor *.log .env # 忽略 mac 系统的隐藏文件 .DS_Store # 忽略 vi/vim 非正常关闭文件 *.swp ``` 接下来,我们初始化版本库并把所有文件纳入到版本控制里: ```shell $ cd ~/Code/ThinkBBS $ git init $ git add -A $ git commit -m "初始化" ``` 我们前面已讨论过关于使用 GitHub 的种种好处,而现在是我们开始正式应用它的时候了。熟悉一个东西最快的方法就是不断训练,不断重复,因此本教程接下来项目构建的代码都将统一托管到 GitHub 上,以便让你对 GitHub 的使用更加熟悉。现在,我们需要在 GitHub 上新建一个名为 thinkbbs 的项目 [点击创建新项目](https://github.com/new),并将代码推送上去: 注意请把下面的 <username> 替换为你的用户名。 ```shell $ git remote add origin git@github.com:<username>/thinkbbs.git $ git push -u origin master ```