Laravel 基于 PHP 语言的一个简洁优雅 Web 开源框架,采用了 MVC 的架构模式,今天我就使用 Laravel 创建一个博客应用。

开发环境

我一直使用 Homestead 作为我的本地开发环境,相对于其它的 Laravel 本地开发环境来说它比较重,并不推荐你使用 Homestead,但是我用习惯了,后面可能会尝试其他的本地开发环境。

我的博客项目选择使用当前最新的 Laravel 版本,但是目前最新的 Laravel 版本是 9.8,它要求最低的 PHP 版本是 8,而我 PHP 版本是 7.4,因此我不得不升级 PHP 版本,我甚至升级了 Homestead,升级过程参考了 《开发环境搭建 - MacOS 》。

创建项目

开始项目的第一步是在本地开发环境创建一个项目,我使用 Homestead 作为我的本地开发环境,如果你想跟着我的步骤走,请确保已经安装 Homestead。

进入到 Homestead 目录,输入以下命令启动虚拟机:

  1. vagrant up

登录到虚拟机:

  1. vagrant ssh

里面有一个 code 目录,我的项目代码都存放在里面,进入到 code 目录,通过以下命令 创建一个名为 sd-blog 的博客项目。

  1. composer create-project laravel/laravel sd-blog

退出虚拟机:

exit

修改 Homestead.yaml文件,在 sites 区块增加 blog.test 站点,在 databases 区块增加 blog 数据库

.
.
.
sites:
  - map:blog.test
  to: /home/vagrant/code/sd-blog/public
.
.
.
database:
  - blog
.
.
.

每次对 Homestead.yaml 文件进行了更改之后,都需要运行下面命令来使其更改生效:

cd ~/Homestead && vagrant provision && vagrant reload

使用以下命令打开 hosts文件:

sudo vim /etc/hosts

文件成功打开后,在 hosts 文件最后面新增下面一行以完成设置:

192.168.10.10  blog.test

为方便记忆,一般我们都会将 IP 映射为域名,我们能够通过设置 hosts 文件来指定 IP 与域名之间的映射关系,由于我们在 Homestead 上默认使用 192.168.10.10 来作为虚拟机的 IP 的地址,因此我们需要在系统的 hosts 文件中将域名指向该 IP 上。

在使用 Chrome 浏览器打开 [http://blog.test](http://blog.test) 可以看到如下界面显示:
image.png

修改默认试图

上面看到的界面是 Laravel 项目的默认界面,Laravel 在项目创建时会自动为我们生成一个 welcome.blade.php 文件,这个文件将被用于渲染 Laravel 的默认视图。

打开 resources/views/welcome.blade.php 文件,替换成如下内容:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>sd-blog 博客应用</title>
    <style>
        .hero {
            text-align: center;
        }
    </style>
</head>
<body>
<section class="hero">
    <div class="hero-body">
        <h1 class="title">Sd-Blog</h1>
        <p class="subtitle">SevDot 的个人博客</p>
        <a href="https://github.com/sevdot" class="button">
            <span class="icon">
                <i class="fa fa-github"></i>
            </span>
            <span>Github</span>
        </a>
    </div>
</section>
</body>
</html>

重新打开 [http://blog.test](http://blog.test)页面可以看到如下页面:
image.png

总结

创建了一个 Laravel 应用,并且成功的将 blog.test 域名映射到 IP 上,完成了开发博客应用的一小步。