|
|

楼主 |
发表于 2025-7-22 08:11
|
显示全部楼层
LAMP的配置
首先创建httpd的容器 做好配置
然后创建php的容器 并安装mysqli扩展
最后创建mariadb的容器
下面是我刚完成的
- docker load < /root/docker/docker-image/httpd.tar.gz
- docker load < /root/docker/docker-image/mariadb-10.3.35.tar.gz
- docker load < /root/docker/docker-image/php-7.4.33-fpm.tar.gz
- 先临时运行一下把conf文件复制出来
- docker run -it \
- -d \
- --name httpd \
- -v /root/docker/httpd_bak/:/root/docker/httpd/ \
- -e TZ=Asia/Shanghai \
- --restart unless-stopped \
- httpd:latest
- 把/usr/local/apache2这个文件夹整个复制出来
- docker exec -it httpd mv /usr/local/apache2 /root/docker/httpd/
- 最后删掉这个docker
- 然后准备修改配置文件,用改好的配置文件创建docker
- 编辑配置文件
- 这里我就按照我自己的需求来写了,既有http也有https
- vi /usr/local/apache2/conf/httpd.conf
- 需要https的话就把下面3行前面的注释去掉
- #LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
- #LoadModule ssl_module modules/mod_ssl.so
- #Include conf/extra/httpd-ssl.conf
- 需要VHOST的话就把下面的注释去掉
- #Include conf/extra/httpd-vhosts.conf
- 需要rewrite的话就把下面的注释去掉
- #LoadModule rewrite_module modules/mod_rewrite.so
- 把显示文件列表去掉,大概在280行
- Options +FollowSymLinks -Indexes
- AllowOverride All
- 启用PHP的模块,把下面两行前面的注释去掉
- #LoadModule proxy_module modules/mod_proxy.so
- #LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
- 还是在280行那里在AllowOverride All下面添加这一段内容
- # 将 PHP 文件转发到 PHP-FPM
- <FilesMatch \.php$>
- SetHandler "proxy:fcgi://192.168.21.4:9000"
- </FilesMatch>
- 把默认页面加上index.php并且放到index.html前面
- <IfModule dir_module>
- DirectoryIndex index.php index.html
- </IfModule>
- 然后编辑网站配置
- vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
- 按照下面的方式编辑
- <VirtualHost *:80>
- ServerAdmin 648473061@qq.com
- DocumentRoot "/usr/local/apache2/htdocs/d2mods.cn/www"
- ServerName www.d2mods.cn
- ServerAlias www.d2mods.cn
- ErrorLog logs/www.d2mods.cn-error_log
- CustomLog logs/www.d2mods.cn-access_log common
- RewriteEngine off
- RewriteCond %{SERVER_NAME} =www.d2mods.cn
- RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
- </VirtualHost>
- <VirtualHost *:80>
- ServerAdmin 648473061@qq.com
- DocumentRoot "/usr/local/apache2/htdocs/d2mods.cn/www"
- ServerName www.d2mods.cn
- ServerAlias www.d2mods.cn
- ErrorLog logs/d2mods.cn-error_log
- CustomLog logs/d2mods.cn-access_log common
- RewriteEngine on
- RewriteCond %{SERVER_NAME} =d2mods.cn
- RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
- </VirtualHost>
- 带www的那个的重定向我没开启,因为用c#winform编辑的网页比较坑,用https以后提示证书错误,我用的阿里云免费证书
- 然后编辑https的配置
- vi /usr/local/apache2/conf/extra/httpd-ssl.conf
- 大约在121行
- <VirtualHost _default_:443>
- DocumentRoot "/usr/local/apache2/htdocs/d2mods.cn/www"
- ServerName www.d2mods.cn:443
- ServerAdmin 648473061@qq.com
- ErrorLog logs/www.d2mods.cn-error_log
- TransferLog logs/www.d2mods.cn-transfer_log
- SSLCertificateFile "/usr/local/apache2/htdocs/d2mods.cn/zhengshu/d2mods.cn_public.crt"
- SSLCertificateKeyFile "/usr/local/apache2/htdocs/d2mods.cn/zhengshu/d2mods.cn.key"
- SSLCertificateChainFile "/usr/local/apache2/htdocs/d2mods.cn/zhengshu/d2mods.cn_chain.crt"
- 基本上就是改上面这些东西就行
- 如果未来有多个网站,估计要按照下面的改,有机会再试
- <VirtualHost *:443>
- 至此http容器就编辑好了
- 最后创建docker
- docker run -it \
- -d \
- --name httpd_3 \
- -v /root/docker/httpd/apache2/:/usr/local/apache2/ \
- -e TZ=Asia/Shanghai \
- --network=docker_bridge_192_168_21 --ip=192.168.21.3 \
- -p 80:80 \
- -p 443:443 \
- --restart unless-stopped \
- httpd:latest
- 注意:一定要手动固定IP地址
- docker logs httpd_3
- docker exec -it httpd_3 bash
- 最后修改d2mods的数据库ip,一共三个地方
- config/config_global.php
- config/config_ucenter.php
- uc_server/data/config.inc.php
- 还需要修复一下权限,不然访问管理后台会提示没权限
- docker exec -it httpd_3 chmod -R 777 /usr/local/apache2/htdocs/d2mods.cn/www/bbs
- ----------------------------------------------------
- 然后创建php的
- docker run -it \
- -d \
- --name php_4 \
- -v /root/docker/httpd/apache2/htdocs/:/usr/local/apache2/htdocs/ \
- -e TZ=Asia/Shanghai \
- --network=docker_bridge_192_168_21 --ip=192.168.21.4 \
- --restart unless-stopped \
- php:7.4.33-fpm
- #这里映射目录就不需要把配置文件映射进来了,只需要映射网页目录就行,并且一定要严格对应httpd的目录,否则php会找不到文件的
- docker exec -it php_4 bash
- 然后给php安装功能
- docker-php-ext-install mysqli
- docker-php-ext-enable mysqli
- # 1. 替换容器内的 apt 源为阿里云(解决源慢+索引旧的问题)
- sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list
- # 2. 快速更新索引(仅需一次,国内源几秒完成)
- apt update -y
- # 3. 安装依赖(此时就能找到包了)
- apt install -y libpng-dev libjpeg62-turbo-dev libgif-dev
- # 4. 安装 GD 扩展 同时还安装freetype的
- #配置 GD 扩展(仅保留 FreeType + JPEG,GIF 自动支持)
- docker-php-ext-configure gd --with-freetype --with-jpeg
- #安装 GD 扩展
- docker-php-ext-install -j$(nproc) gd
- 安装完毕重启这个容器
- docker restart php_4
- ----------------------------------------------------
- 最后安装mariadb
- 注意,各种排除错误以后我发现数据要用旧服务器上同样的版本才行
- 最新的mariadb并不兼容于discuz3.4了 弄了很久才发现的
- docker run \
- -d \
- --name mariadb_6 \
- -v /root/docker/mariadb_6/datadir/:/var/lib/mysql:Z \
- -v /root/docker/mariadb_6/backup/:/backup/ \
- -e TZ=Asia/Shanghai \
- -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 \
- --network=docker_bridge_192_168_21 --ip=192.168.21.6 \
- --restart unless-stopped \
- mariadb:10.3.35
- docker exec -it mariadb_6 bash
- 进入数据库
- mysql
- 添加数据库
- create database d2mods
- 退出数据库操作
- 然后导入数据库
- mysql d2mods<d2mods.sql
- 这个版本的数据库可以直接用mysqldump备份
- mysqldump d2mods>d2mods.sql
- ----------------------------------------------------
- 至此,apache mariadb10.3.35 php就都分开了
- 然后d2dmos论坛也全部迁移完毕了
复制代码 |
|