docker下安装使用maccms_v10系统
# 下载maccms v10源码
解压到maccms10/www下
# 创建docker compose目录结构
maccms10
├── docker-compose.yml
├── nginx
│ ├── conf.d
│ │ └── default.conf
│ └── log
│ ├── access.log
│ └── error.log
├── php
│ ├── conf.d
│ │ └── php.ini
│ ├── php.ini-development
│ └── php.ini-production
└── www
├── addons
├── admin.php
├── api.php
├── application
├── crossdomain.xml
├── extend
├── index.php
├── install.php
├── LICENSE
├── README.md
├── robots.txt
├── runtime
├── static
├── template
├── thinkphp
├── upload
├── vendor
└── \350\257\264\346\230\216\346\226\207\346\241\243
由于mysql数据库使用现有的所以不再创建
这里我启动了一个nginx和php,这个nignx只为php服务,外部还有一个全局nginx在代理到这个nginx上面(如果也是我这种方式,这里的ports也可以不用映射)
maccms10/docker-compose.yml
version: '3.7'
services:
maccms-nginx:
image: nginx:alpine
container_name: maccms-nginx
restart: always
# ports:
# - 8081:80
# - 8444:443
environment:
- TZ=Asia/Shanghai
depends_on:
- maccms10
volumes:
- /data/docker/awei/maccms10/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
- /data/docker/awei/maccms10/nginx/log:/var/log/nginx
- /data/docker/awei/maccms10/www:/usr/share/nginx/www
networks:
- proxy
maccms10:
image: php:7.2.34-fpm
container_name: maccms10
restart: always
# ports:
# - 9000:9000
environment:
- TZ=Asia/Shanghai
volumes:
- /data/docker/awei/maccms10/www:/usr/share/nginx/www
- /data/docker/awei/maccms10/php/conf.d/php.ini:/usr/local/etc/php/php.ini
networks:
- proxy
networks:
proxy:
external: true
内部nginx:maccms10/nginx/conf.d/default.conf
server {
listen 80 default_server;
server_name localhost;
root /usr/share/nginx/www;
location / {
index index.html index.htm index.php;
}
# nginx下除了首页其他都是404怎么办?修改一下伪静态规则,一般都可以解决了。 如果修改了后台文件入口admin.php,则改为对应的文件名。
if (!-e $request_filename) {
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^/admin.php(.*)$ /admin.php?s=$1 last;
rewrite ^/api.php(.*)$ /api.php?s=$1 last;
# rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
location ~ \.php$ {
fastcgi_pass maccms10:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
php/conf.d/php.ini是从php.ini-development复制而来,这里可以看这篇博客docker搭建nginx+php环境的两种方式
外部nginx:maccms.bstu.cn.conf
server {
listen 443 ssl;
server_name maccms.bstu.cn;
# ssl on;
ssl_certificate "/root/.acme.sh/bstu.cn/cert.pem";
ssl_certificate_key "/root/.acme.sh/bstu.cn/key.pem";
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL';
ssl_prefer_server_ciphers on;
charset utf-8;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";
location / {
proxy_pass http://maccms-nginx:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# 开始搭建
1.启动
docker compose up -d
这时候应该能正常进入install.php安装页面,进入第二页时会报pdo_mysql、zip以及部分文件无读写权限
2.修改权限
chmod 777 -R runtime
chmod 777 -R application
chmod 777 -R upload
# 由于导入播放器需要static文件夹下某些文件的保存文件权限,所以static也给一下读写
chmod 777 -R static
3.修改php.ini
php/conf.d/php.ini 文件中找到;extension=pdo_mysql这一行,将前面的分号去掉并保存
4.使用docker exec进入php进行php扩展的安装
docker exec -it maccms10 bash
# 更新源
apt update
# 安装pdo_mysql
docker-php-ext-install pdo pdo_mysql
# 安装zip扩展所需的依赖扩展
apt-get update && apt-get install -y zlib1g-dev && apt-get install -y libzip-dev
# 安装并启动zip扩展
docker-php-ext-install zip
# 安装并启动gd扩展
# 安装库
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev
# 创建并初始化 /usr/src/php目录
docker-php-source extract
# gd源码文件夹
cd /usr/src/php/ext/gd
# php>=7.4准备编译配置
docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2
# php<7.4编译配置
docker-php-ext-configure gd --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2/
# 安装gd 扩展
docker-php-ext-install gd
# 验证GD
php --ri gd
5.重启容器
docker compose restart
6.回到浏览器刷新页面,这时候所有问题都解决了,进行下一步安装
^_^ Be the first to comment.
Comment
Nickname
Email (Reply notice)
Website
Content (can use Markdown syntax)