基于 Laravel 开源项目 Pixelfed 构建照片上传和分享平台


项目简介

Pixelfed 是一个基于 Laravel 开发的、免费开源的照片分享平台,运行该项目需要机器具备以下条件:

  • HTTP Web 服务器,如 Nginx、Apache;
  • 数据库,如 MySQL(5.7+)、PostgreSQL(10+);
  • PHP 7.3+;
  • 其他程序:Composer、Git、Redis、GD/ImageMagick、JPEGOptimOptiPNGPNGQuant

下面我们以 Homestead 作为本地开发环境演示如何在本地安装并启动该应用。

环境准备

由于 Homestead 已经为我们准备好了 Laravel 项目开发所需要的必要软件环境,我们只需要在宿主机下载项目代码并将其映射到 Homestead 指定目录,然后在 Homestead 配置文件中配置对应站点域名、数据库即可。

比如我在本地 ~/Devlopment/php/laravel 目录下克隆项目代码:

git clone https://github.com/pixelfed/pixelfed

然后进入项目根目录,通过 Composer 安装 PHP 依赖:

cd pixelfed
composer install --no-ansi --no-interaction --optimize-autoloader

安装完成后,运行 cp .env.testing .env 命令生成本地环境配置文件(生成环境请使用 cp .env.example .env),然后修改如下几个配置项:

APP_NAME="Pixelfed"

APP_URL=https://pixelfed.test
APP_DOMAIN="pixelfed.test"
ADMIN_DOMAIN="pixelfed.test"
SESSION_DOMAIN="pixelfed.test"

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pixelfed
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file

接下来运行如下命令生成图片目录软链接到 public 目录:

php artisan storage:link

至此,基础配置就已经完成了。

下面我们打开 Homestead 配置文件 Homestead.yaml,配置目录映射如下:

folders:    
    ... // 其它目录映射
    - map: ~/Devlopment/php/laravel/pixelfed
      to: /home/vagrant/pixelfed

配置站点映射如下(指定 PHP 版本为 7.3):

sites:
    ... // 其它站点
    - map: pixelfed.test
      to: /home/vagrant/pixelfed/public
      php: "7.3"

配置数据库连接信息如下:

databases:
    ... //其它数据库
    - pixelfed

接下来就可以运行如下命令重启 Homestead 让配置生效了:

vagrant reload --provision

然后运行 homestead ssh 命令登录到 Homestead 虚拟机,进入 pixelfed 目录运行数据库迁移命令生成数据表:

我们可以在本地连接到 Homestead 数据库查看生成的数据表:

如果你希望通过 Web 页面访问 Horizon 的话,还要进行如下初始化操作:

php artisan horizon:install
php artisan horizon:assets

然后运行 php artisan horizon 启动 Horizon,当然你也可以通过 Supervisor 来管理 Horizon 进程。

最后我们在本地 /etc/hosts 中新增域名映射:

192.168.10.10 pixelfed.test

就可以通过 http://pixelfed.test 在浏览器中访问 Pixelfed 应用了,Homestead 在配置 Nginx 站点时默认已经支持 HTTPS 访问,但是这是通过 OpenSSL 生成的自签名证书,还没有得到操作系统认可,为此我们需要配置操作系统信任该证书:

以 MacOS 系统为例,按住证书拖到桌面,然后打开「钥匙串」将桌面上的证书拖到系统列表:

然后双击该证书在弹出框选择始终信任该证书:

这样 pixelfed.test 域名的证书就可以被操作系统识别并信任,接下来就可以通过 https://pixelfed.test 访问应用了:

访问应用

注册成功后即可进入应用首页:

注:如果报错,响应状态码为 419,可以去错误日志中定位错误原因,一般是 Redis 门面类和 PHP Redis 扩展提供的 Redis 类同名冲突导致的,可以到 app/Services/UserFilterService.php 引用完整的 Redis 门面类解决:Illuminate\Support\Facades\Redis

点击右上角的相机按钮即可上传照片:

发布后即可在时间线上看到刚刚发布的照片:

一次上传多张图片的效果是这样的:

此外你还可以到详情页对照片进行喜欢、评论、分享:

我们也可以通过创建相册将多张照片聚合起来(URL 输入框填写之前创建过的 Post 详情页链接):

你还可以对其他人进行关注,以便看到他们的最新动态:

以及到后台对个人信息进行编辑:

如果对某些功能不熟悉,还可以通过帮助中心 https://pixelfed.test/site/help 进行了解:

另外,还可以通过 Tinker 命令行交互将某个用户升级为后台管理员:

然后我们就可以通过页面右上角用户图标下拉列表中的「Admin」链接进入后台管理页面:


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: 基于 Laravel 实现的类似 Reddit 的实时社交论坛系统 —— Voten

>> 下一篇: 使用 Laravel 快速构建网站系列 —— Laravel 技巧站:Laravel Tricks