lucms - vue 与 Laravel 开发的后台管理系统

lucms

项目概述

  • 产品名称:lucms
  • demo: 没钱续费服务器,暂不提供演示
  • 最新稳定版本 v2.0.5

lucms 是一个基于 laravel5.5*iviewjs 开发的一套后台管理系统。

file
file
file

功能如下

  • 用户认证 —— 登录、退出
  • 用户认证 —— 多表登录
  • 用户管理 —— 头像上传、资料修改
  • 权限系统 —— 多角色、多权限管理
  • 附件管理 —— 服务器文件管理
  • 新闻系统 —— 基础新闻管理
  • 系统安全 —— 日志记录、ip 过滤
  • Excel 导入导出
  • Markdown 编辑器支持
  • Wangeditor 编辑器支持
  • 各种组件封装

开发环境部署/安装

本项目代码使用 PHP 框架 Laravel 5.5 开发,本地开发环境使用 Laravel Homestead。

下文将在假定读者已经安装好了 Homestead 的情况下进行说明。如果您还未安装 Homestead,可以参照 Homestead 安装与设置 进行安装配置。

基础安装

  • 克隆源代码

克隆 lucms 源代码到本地:

git@gitee.com:zhjaa/lucms.git

  • php 配置修改

1). 配置本地环境,根目录指向 public

2). 安装 composer

composer install

2). 生成配置文件

cp .env.example .env
你可以根据情况修改 .env 文件里的内容,如数据库连接、缓存、邮件设置等:

2). 目录访问权限配置

  $ chmod -R 777 storage

3). 配置 .env ,修改数据库信息 . ....

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:IKlBaIonliiolP7yK0QWP8Ixwgc1Z5R2ylxEA6CD3nA=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://lucms.test

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lucms
DB_USERNAME=root
DB_PASSWORD=route
.

.

.
QUEUE_DRIVER=sync 「同步模式,不使用任何队列」 => redis

.

.

.

4). 生成数据表及生成测试数据

$ art migrate
$ art db:seed

5). 安装 passport 客户端, vue api 请求 token 认证要用到

 $ art passport:install

 # 以下内容复制到 .env 中
 Client ID: 2
 Client Secret: qtbbnoYSKM1QkAfbcs614iCiWmMvBWNdRloJNbDi

6). 配置 .env ,修改数据库信息 . ....

.

.

.
OAUTH_GRANT_TYPE=password
OAUTH_CLIENT_ID=2
OAUTH_CLIENT_SECRET=p7XaeU3D9RASxQ18eiF5CT1uL9xUJRYjT6O8BJFt
OAUTH_SCOPE=*

.

.

.

7). 生成密钥

art key:generate

8). 设定图片上传软链接 storage/app/public/*public/storage/images

$ cd public
$ mkdir storage
$ ln -s /srv/wwwroot/homestead-code/lucms/storage/app/public/* ./storage/
  • 修改 js 配置

1). 全局修改基本域名 http://lucms.test => https://xxxxx

cp  lu/example.vue.config.js lu/vue.config.js
cp  lu/config/example.env.js lu/config/env.js
cp  lu/config/example.url.js lu/config/url.js

lucms/lu/vue.config.js

const BASE_URL = env === 'development'
  ? '/iview-admin/'
  : 'https://lucms.com/lu/dist/'

lucms/lu/config/url.js

const DEV_URL = 'http://lucms.test/'
const PRO_URL = 'https://lucms.com/'

vuejs 安装与运行

1). 开发环境

$ cd lu
$ cnpm install
$ npm run dev

2). 生产环境

$ cd lu 
$ npm run build

扩展包使用情况

扩展包 一句话描述 本项目应用场景
laravel/passport jwt 用户认证包 api 登录认证
Intervention/image 图片处理包 图片上传裁剪
laravel-permission:~2.7 权限管理包 权限管理
mews/purifier xss过滤 富文本编辑器
overtrue/pinyin 基于 CC-CEDICT 词典的中文转拼音工具 文章 seo 友好的 url
nrk/predis redis 队列驱动器 队列管理
laravel/horizon 队列监控 队列监控
rap2hpoutre/laravel-log-viewer laravel 日志查看 查看日志
aliyuncs/oss-sdk-php 啊里云 oss 对象存储
overtrue/easy-sms 短信发送 找回密码
barryvdh/laravel-cors 跨越解决 开发环境方便测试
league/html-to-markdown markdown 转 html 富文本编辑器 markdown 支持
Maatwebsite/Laravel-Excel excel 处理 导入导出 excel

队列

Jobs 一句话描述
TranslateSlug 翻译文章 title
本作品采用《CC 协议》,转载必须注明作者和本文链接
do it now
本帖由系统于 5年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 72

@Hugh 可以 了我没做限制,有人把管理员邮箱改了

5年前 评论

@Ucer npm的问题已搞定,执行了下npm update vue-template-compiler

5年前 评论

@Ucer
已解决迁移问题

file

索引长度 & MySQL / MariaDB
在 AppServiceProvider 中调用 Schema::defaultStringLength 方法配置后可以正常迁移

5年前 评论

下载的项目里面没有 没有lu/dist文件夹,view->dashboard 视图也没看到,是我哪里弄的不对么?

5年前 评论

@fubing0532 dist 是要自己生成的。照着文档来一遍就有了

5年前 评论

Homestead 环境下执行 cnpm install 出现

file
什么原因呢?

5年前 评论
xingchen

看了留言那么多的问题都不敢用了,还是自己组装好一些,叫iview-admin

5年前 评论

@yuhan888 这个是索引过长导致的。你可以试试改下 database/migrations/2018_06_19_100726_create_permission_tables.php

.
.
.
            $table->primary(['permission_id', 'model_id', 'model_type'], 'model_has_permissions_permission_model_type_primary');

=>
            $table->primary(['permission_id']); 

.
.
.
5年前 评论

file
编码格式正确,都是按照这个走的,迁移还是报错,mysql是5.7.21版本

file


大佬帮忙看下

5年前 评论

@cjason wiki 有基本的使用文档。后面会慢慢补上

5年前 评论

@Ucer 看起来不错,去学习下,有文档就更好了

5年前 评论

@Ucer 很棒,之前我也想搞个类似的,发现权限管理那块有点头疼,支持继续更新,加油

5年前 评论

@skywingfs 写的不好的地方欢迎指正

5年前 评论

仓库怎么空了呀 :joy:

5年前 评论

@ Ucer 可以不用 Laravel Homestead 这个环境吗?

5年前 评论

@ni5400 请做下软链接:

cd public
ln -s /xx /storage/app/public/* ./storage

5年前 评论
ni5400

file
这个怎么解决

5年前 评论

建议 $ art migrate 这个写全部命令为好,毕竟不是所有的别名都好使的!

5年前 评论

@DljLyy 可以 ,但是推荐用.

5年前 评论
xingchen

@haiwei_sun 不建议使用方法 做的不怎么样就开始收费了 利益比较重 而且看起来是一个人弄的

5年前 评论

@doobi 等晚上我修改一下程序,老是有个把邮箱改了

5年前 评论

测试网站登录不上去,报User模型不存在错误!

5年前 评论

@zxg321 关于这个问题,自己习惯就好。现在还在慢慢完善中...

5年前 评论
zxg321

可能到项目成熟还需要一段时间,我使用LARAVEL ADMIN觉得好用,可以参考下。

5年前 评论

看demo域名已过期..

5年前 评论

@Ucer 数据库迁移文件是不是没有给够?api/login接口报错缺失ip_filters表

5年前 评论

@Alexanderwmc

  1. 执行命令
    $ cd lu
    $ npm run build
    $ cp public/dashboard.blade.php resources/views/
  2. 浏览器访问 http://xxx.test/dashboard

  3. 进入断点调试模式,查看程序走到哪里

  4. 我用的插件是这个

file

5年前 评论

@Ucer 嗯,下载了allow-control,也配置了

file

不知这样可对?目前是浏览器console不再报错缺少Access-Control-Allow-Origin这个请求头而阻止了请求,但还是报错
请求失败,服务器错误

5年前 评论

@skyver18 问题跟文档会慢慢完善。你说的不能用是怎么个不能用法,有问题提出来能解决的会帮助解决。

5年前 评论
skyver18

有问题,都不能用,为什么还要加精,让大家浪费时间

5年前 评论

这个是开发环境下的跨域问题,浏览器下载一个 allow-control

5年前 评论

@Ucer 后台登录页面输入账号密码登录,报错:

Cannot read property 'status' of undefined

postman中我使用email:dev@lucms.com, password:123456,测试请求接口,目前报错:

请求失败,服务器错误

发现此处用了个ProxyTrait,是请求代理来生成一个token,这样的报错是我passport安装错了?

5年前 评论

@Alexanderwmc 数据库文件现在在 databases/lucms.sql 里面,后面会写成 migrate 形式

5年前 评论

@Ucer 已换为你这个扩展,但问题仍是一样的,

file

ProxyTrait里我打印了这里的错误

file

file

对了,js中也有错误,看着是store状态管理里JSON解析的错误,我觉得应该还是因为登录问题导致的

file

5年前 评论

@Ucer 编译完成后登陆页面已打开,目前登录不上去,发现后台接口还有问题,目前正在查找中。我目前自己的项目使用的vue-element-admin + laravel5.5,由于laravel和vue都是刚刚接触,用的还不是太好,向您学习学习,会持续关注的

5年前 评论

@Alexanderwmc ok,你以成功让后面的人少走了弯路 :+1:

5年前 评论

@Ucer 嗯,laravel的问题解决了,不过上边安装步骤应该有问题,应该先数据迁移,再执行passport的安装,对吧?
不过目前的问题又是npm的问题:
Vue packages version mismatch:

  • vue@2.5.16
  • vue-template-compiler@2.5.13

This may cause things to work incorrectly. Make sure to use the same version for both.
If you are using vue-loader@>=10.0, simply update vue-template-compiler.
If you are using vue-loader@<10.0 or vueify, re-installing vue-loader/vueify should bump vue-template-compiler to the latest.
但是,package.json文件中的版本都是2.5.13。伤不起的nodejs!

5年前 评论

@Alexanderwmc 解决了吗,最新版本的应该没这问题

5年前 评论

数据库迁移文件多了一个

5年前 评论

按照步骤安装的,报错,里边看来有错误吧
root@7a5ae296d827:/var/www/lucms# php artisan passport:install
Encryption keys generated successfully.

In Connection.php line 664:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lucms.oauth_clie
nts' doesn't exist (SQL: insert into oauth_clients (user_id, name, s ecret, redirect, personal_access_client, password_client, revoked,
updated_at, created_at) values (, Laravel Personal Access Client, LklR
koVDEiZRzda6ThhQyWkVhIhGKCdNE8ZNwZPz, http://localhost, 1, 0, 0, 2018-07-04
23:32:48, 2018-07-04 23:32:48))

In Connection.php line 452:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lucms.oauth_clie
nts' doesn't exist

root@7a5ae296d827:/var/www/lucms# php artisan migrate
Migration table created successfully.
PHP Fatal error: Cannot declare class SeedRolesAndPermissionsData, because the name is already in use in /var/www/lucms/database/migrations/2018_07_04_180438_seed_roles_and_permissions_data.php on line 50

In 2018_07_04_180438_seed_roles_and_permissions_data.php line 50:

Cannot declare class SeedRolesAndPermissionsData, because the name is alrea
dy in use

5年前 评论
幽弥狂

@Ucer 出第一版本的时候就关注了。。。然后觉得界面不好看 放弃了

5年前 评论

@Chasers9527 嗯,是的啊,文中也说了。你也可以用那个

5年前 评论

可以,就是服务器没授权跨哉

5年前 评论
幽弥狂

这个不就是 iview-admin 么???

5年前 评论
Hugh

报错了,登录不了了

5年前 评论

演示站点有个bug,上传图片无法保存。应该是目录没有给权限

file

5年前 评论

@Ucer 此处是要使用oauth_clients表中的数据吧,上边跟下边这里都要跟数据库中的数据一致吧,而不是原样复制,对不?

file

5年前 评论

@Alexanderwmc 不行的话重新看看文档,是不是哪里不对,我试了两次。没问题的

5年前 评论

我用postman请求的api/login,应该不涉及跨域问题,查看服务器日志,是请求通了,应该还是认证这里的问题

file
(时区为UTC)

5年前 评论
Hugh

@Ucer 你的线上demo登录不了,想进去看看不行。

file

5年前 评论

@Ucer 那我给项目安装个barryvdh/laravel-cors包试试,不在浏览器下载扩展进行跨域了

5年前 评论

@Alexanderwmc 应该是服务器没允许跨域,你搜索一下,重新再看看文档

2). 开发环境跨域配置 chrome 安装插件 Access-Control-Allow_Credentials

服务器跨域,Apache请自行搜索处理或在 php 文件中处理。此处不建议在 php 中处理:

nginx 配置如下:

.
.
.
  add_header Access-Control-Allow-Origin http://localhost:8080;
  add_header Access-Control-Allow-Headers *;
  add_header Access-Control-Allow-Methods GET,POST,OPTIONS,PATCH,PUT;
  .
  .
  .
5年前 评论

@Alexanderwmc 项目打包发我邮箱 ucer183@163.com 我帮你看看

5年前 评论

@Ucer 一开始是ID为2的那条,不能用我才执行了passport:client生成了一个新的,替换为了第七条,但还是不行,现在挫败感爆棚,一个passport就搞得头晕脑胀

5年前 评论

@Alexanderwmc 你复制 id 为2 的那条不对吗? 你的问题应该就出在这里

5年前 评论

@Ucer 这个吗?

file

刚刚改为了ID为7的那条数据的

file

5年前 评论

@Alexanderwmc 你修改了 .env 文件中的 OAUTH_CLIENT_SECRET你添加 了没有

.
.
.

OAUTH_GRANT_TYPE=password
OAUTH_CLIENT_ID=2
OAUTH_CLIENT_SECRET=p7XaeU3D9RASxQ18eiF5CT1uL9xUJRYjT6O8BJFt  # 看一下 passport 文档这里怎么取
OAUTH_SCOPE=*

.
.
.
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!