直接下载我准备好的 docker 镜像

git clone https://github.com/libenfu/docker-example.git

安装 centos 7 操作系统 内部的 DockerFile yum 及 编译一些基础库

cd centos 
sh build.sh
cd ..

构建php

cd php-build 
sh build.sh
cd ..

docker compose 构建开发环境

cd 进入 2.lnmp-example 找到 docker-compose.yml 就可以构建了

# 构建
docker-compose up -d --build

# down
docker-compose down

先看下 docker-compose.yml 配置

version: "3.3"

services:
nginx:
build: ./nginx
ports:
- "8899:80"
volumes:
- ./nginx/logs:/var/logs/nginx/:rw
networks:
- backend

cgi:
build: ./cgi
ports:
- "9000"
tty: true
volumes:
- ./cgi/MyAdmin:/var/www
networks:
- backend

mysql:
image: "mysql:5.7"
ports:
- "3306:3306"
volumes:
- ./mysql:/data/mysql
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/logs:/logs
- ./mysql/data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
networks:
- backend
redis:
image: "redis"
ports:
- "6379:6379"
networks:
- backend

networks:
backend:

上面的配置参数可以在我其他docker相关文章中找到注释, 这里不详细介绍了.

开始搞起 FastAdmin

官方文档 : https://doc.fastadmin.net/doc/install.html

1. 克隆FastAdmin到你本地

#创建项目目录
mkdir -p 2.lnmp-example/cgi/MyAdmin
cd 2.lnmp-example/cgi/MyAdmin

# git 拉取代码
git clone https://gitee.com/karson/fastadmin.git

# 文件移动上来
mv fastadmin/* ./

cgi 和 `nginx 中配置 已经将默认工作目录指定为 /var/www , 在 docker-compose.yml 中已经共享文件的方式 cgi/MyAdmin:/var/www

2. 下载前端插件依赖包

bower install 指令抛错 提示可以授权root

root@123: bower install --allow-root​

Unable to find a suitable version for jspdf, please choose one by typing one of the numbers below:
1) jspdf#~1.0.178 which resolved to 1.0.272 and is required by jspdf-autotable#2.0.17
2) jspdf#1.3.2 - 1.3.4 which resolved to 1.3.4 and is required by tableExport.jquery.plugin#1.10.14

Prefix the choice with ! to persist it to bower.json

? Answer 1
bower install jquery.cookie#1.4.1
bower install toastr#2.1.3
bower install fastadmin-addtabs#1.0.4
bower install bootstrap-select#1.11.2
bower install require-css#0.1.10
bower install fastadmin-layer#3.1.3
bower install jcrop#2.0.4
bower install bootstrap-table#1.11.3
bower install nice-validator#1.1.4
bower install art-template#3.1.3
bower install bootstrap-slider#879a98dcd0
bower install fastadmin-dragsort#1.0.0
bower install fastadmin-cxselect#1.4.1
bower install jquery-slimscroll#1.3.8
bower install fastadmin-selectpage#1.0.2
bower install bootstrap-daterangepicker#2.1.27
bower install plupload#2.2.1
bower install requirejs-plugins#1.0.3
bower install jquery#2.2.4
bower install fastadmin-citypicker#1.3.2
bower install Sortable#1.10.2
bower install jstree#3.3.8
bower install moment#2.24.0
bower install less#2.7.3
bower install eonasdan-bootstrap-datetimepicker#4.17.47
bower install tableExport.jquery.plugin#1.10.14
bower install file-saver#2.0.2
bower install es6-promise#4.2.4
bower install html2canvas#0.4.1
bower install jspdf-autotable#2.0.17
bower install font-awesome#4.7.0
bower install jspdf#1.0.272
bower install bootstrap#3.4.1

jquery.cookie#1.4.1 bower_components/jquery.cookie
└── jquery#2.2.4

toastr#2.1.3 bower_components/toastr
└── jquery#2.2.4

fastadmin-addtabs#1.0.4 bower_components/fastadmin-addtabs

bootstrap-select#1.11.2 bower_components/bootstrap-select
└── jquery#2.2.4

require-css#0.1.10 bower_components/require-css

fastadmin-layer#3.1.3 bower_components/fastadmin-layer

jcrop#2.0.4 bower_components/jcrop

bootstrap-table#1.11.3 bower_components/bootstrap-table

nice-validator#1.1.4 bower_components/nice-validator
└── jquery#2.2.4

art-template#3.1.3 bower_components/art-template

bootstrap-slider#879a98dcd0 bower_components/bootstrap-slider

fastadmin-dragsort#1.0.0 bower_components/fastadmin-dragsort
└── jquery#2.2.4

fastadmin-cxselect#1.4.1 bower_components/fastadmin-cxselect

jquery-slimscroll#1.3.8 bower_components/jquery-slimscroll

fastadmin-selectpage#1.0.2 bower_components/fastadmin-selectpage

bootstrap-daterangepicker#2.1.27 bower_components/bootstrap-daterangepicker
├── jquery#2.2.4
└── moment#2.24.0

plupload#2.2.1 bower_components/plupload

requirejs-plugins#1.0.3 bower_components/requirejs-plugins

jquery#2.2.4 bower_components/jquery

fastadmin-citypicker#1.3.2 bower_components/fastadmin-citypicker
└── jquery#2.2.4

Sortable#1.10.2 bower_components/Sortable

jstree#3.3.8 bower_components/jstree
└── jquery#2.2.4

moment#2.24.0 bower_components/moment

less#2.7.3 bower_components/less

eonasdan-bootstrap-datetimepicker#4.17.47 bower_components/eonasdan-bootstrap-datetimepicker
├── jquery#2.2.4
└── moment#2.24.0

tableExport.jquery.plugin#1.10.14 bower_components/tableExport.jquery.plugin
├── es6-promise#4.2.4
├── file-saver#2.0.2
├── html2canvas#0.4.1
├── jquery#2.2.4
├── jspdf#1.0.272
└── jspdf-autotable#2.0.17

file-saver#2.0.2 bower_components/file-saver

es6-promise#4.2.4 bower_components/es6-promise

html2canvas#0.4.1 bower_components/html2canvas

jspdf-autotable#2.0.17 bower_components/jspdf-autotable
└── jspdf#1.0.272

font-awesome#4.7.0 bower_components/font-awesome

jspdf#1.0.272 bower_components/jspdf

bootstrap#3.4.1 bower_components/bootstrap
└── jquery#2.2.4

3. 下载PHP依赖包 composer install

composer 用过的朋友们都知道国内非常慢. 通过修改 composer.json 添加

{
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
}

也可以在项目目录下 使用指令 composer config repo.packagist composer https://packagist.phpcomposer.com 会追加在 composer.json 文件中.

诶 这个依赖库太夸张了 太多了…. 老家网速也不给力快1小时了…… 用国内加速也是很给力….

[root@95fe8e8bf9b4 www]# composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)



Package operations: 30 installs, 0 updates, 0 removals
As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension.
This may cause invalid reports of corrupted archives. Besides, any UNIX permissions (e.g. executable) defined in the archives will be lost.
Installing 'unzip' may remediate them.
- Installing topthink/think-installer (v1.0.12): Downloading (100%)
- Installing symfony/polyfill-mbstring (v1.13.1): Downloading (100%)
- Installing psr/http-message (1.0.1): Downloading (100%)
- Installing paragonie/random_compat (v9.99.99): Downloading (100%)
- Installing symfony/polyfill-php70 (v1.13.1): Downloading (100%)
- Installing symfony/http-foundation (v3.4.37): Downloading (100%)
- Installing symfony/psr-http-message-bridge (v1.2.0): Downloading (100%)
- Installing ralouphie/getallheaders (3.0.3): Downloading (100%)
- Installing guzzlehttp/psr7 (1.6.1): Downloading (100%)
- Installing guzzlehttp/promises (v1.3.1): Downloading (100%)
- Installing guzzlehttp/guzzle (6.5.2): Downloading (100%)
- Installing doctrine/cache (v1.4.4): Downloading (100%)
- Installing overtrue/socialite (1.3.0): Downloading (100%)
- Installing psr/log (1.1.2): Downloading (100%)
- Installing monolog/monolog (1.25.3): Downloading (100%)
- Installing psr/container (1.0.0): Downloading (100%)
- Installing pimple/pimple (v3.2.3): Downloading (100%)
- Installing overtrue/wechat (3.3.33): Downloading (100%)
- Installing symfony/options-resolver (v3.4.37): Downloading (100%)
- Installing endroid/qr-code (1.9.3): Downloading (100%)
- Installing topthink/framework (v5.0.24): Downloading (100%)
- Installing topthink/think-captcha (v1.0.8): Downloading (connecting...)


Downloading (100%)
- Installing mtdowling/cron-expression (v1.2.3): Downloading (100%)
- Installing phpmailer/phpmailer (v5.2.27): Downloading (100%)
- Installing karsonzhang/fastadmin-addons (1.1.10): Downloading (100%)
- Installing overtrue/pinyin (3.0.6): Downloading (100%)
- Installing psr/simple-cache (1.0.1): Downloading (100%)
- Installing markbaker/matrix (1.2.0): Downloading (100%)
- Installing markbaker/complex (1.4.7): Downloading (100%)
- Installing phpoffice/phpspreadsheet (1.10.1): Downloading (60%)




Downloading (100%)
paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)
symfony/psr-http-message-bridge suggests installing nyholm/psr7 (For a super lightweight PSR-7/17 implementation)
guzzlehttp/psr7 suggests installing zendframework/zend-httphandlerrunner (Emit PSR-7 responses)
guzzlehttp/guzzle suggests installing ext-intl (Required for Internationalized Domain Name (IDN) support)
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing sentry/sentry (Allow sending log messages to a Sentry server)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing php-amqplib/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server via PHP Driver)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
phpmailer/phpmailer suggests installing league/oauth2-google (Needed for Google XOAUTH2 authentication)
phpoffice/phpspreadsheet suggests installing mpdf/mpdf (Option for rendering PDF with PDF Writer)
phpoffice/phpspreadsheet suggests installing dompdf/dompdf (Option for rendering PDF with PDF Writer)
phpoffice/phpspreadsheet suggests installing tecnickcom/tcpdf (Option for rendering PDF with PDF Writer)
phpoffice/phpspreadsheet suggests installing jpgraph/jpgraph (Option for rendering charts, or including charts with PDF or HTML Writers)
Package mtdowling/cron-expression is abandoned, you should avoid using it. Use dragonmantank/cron-expression instead.
Writing lock file
Generating autoload files

4. 一键创建数据库并导入数据

php think install -u 数据库用户名 -p 数据库密码
不懂就 php think help install

我直接页面设置的数据库配置

… 安装成功

对了有个很坑的地方 如果使用 nginx 自己配置对我来说有些困难 从网上找都不靠谱 还是看官方文档 例子如下: …
https://doc.fastadmin.net/docs/faq.html#toc-18

server {
listen 80;
server_name www.fa.com *.fa.com;
root "C:/phpstudy/WWW/fastadmin/public";
location / {
index index.html index.htm index.php;
#主要是这一段一定要确保存在
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
#结束
#autoindex on;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}