这个问题之前我提问过,后来没找到合适的,就自己弄了,我只是前端开发,所以仅仅把我部署成功的流程给大家分享一下,欢迎批评指正。
❤️ ,这几天用Fa开发项目上线测试,用的docker部署,遇到一堆问题,下面把遇到的问题记录下来帮助其它小伙伴免入坑。
说说基本思路:
Ubuntu服务器 + Nginx + Docker
Docker内部运行一个PHP-FPM容器,由外部的Nginx转发到内部。
1.前排提醒:一定要把Fa的debug:False,不然加载异常缓慢,还有就是,如果你更改了css文件,记得打包压缩,因为关闭调试就是正式了。(如果你使用了主机映射,可以直接修改css文件后,安装nodejs和phpcli,使用压缩命令)
2.首先我们看一下项目目录:dev测试使用
然后使用scp或者FTP把项目上传到服务器,过程我就省略啦,如果你压缩了,可以使用apt-get install unzip来解压。
这里为了隐私:我们假设项目目录在 /fadev/phpdev/www/fa项目文件
这里之所以把项目放到主机上,为了将容器内部与主机外部映射,这样就可以直接修改外部文件实时更新了。
创建容器先下载一个php镜像:
docker pull php7.2-fpm
然后创建容器:-d 后台运行容器,--name 起个名字 -p 主机端口映射容器内部端口 -v 主机目录映射容器目录 --link 关联另一个容器,可以直接访问Mysql,最后是使用的镜像。
docker run -d --name fa-php-dev -p 9527:80 -v /fadev/phpdev/etc/:/usr/local/etc/php -v /fadev/phpdev/www/:/var/www/html --link mysql php:7.2-fpm
如果没有报错,说明成功运行了。下面配置Nginx,最后会说SQL导入。
下面有几个重点:nginx不支持url重写,会发生模块不可访问,使用/xxx/public/index.php?s=模块/这种可以访问,我们解决一下:
server { listen 80; server_name dev.test.cn; location / { //这里注意是指向主机目录,用容器的也行 root /fadev/phpdev/www/public; index index.html index.htm index.php; if (!-e $request_filename) { rewrite ^/index.php(.*)$ /index.php?s=$1 last; rewrite ^(.*)$ /index.php?s=$1 last; break; } } error_page 500 502 503 504 /50x.html; location = /50x.html { //这是容器目录,哪个目录都可以 root /var/www/html/public; } location ~ .php(.*)$ { //重点来了,这里是PHP容器的内网地址:docker inspect 容器名去看看,将PHP转发到容器 fastcgi_pass 172.17.0.6:9000; fastcgi_index index.php; //重写url fastcgi_param SCRIPT_FILENAME /var/www/html/public$fastcgi_script_name; fastcgi_param PATH_INFO $1; include fastcgi_params; } location /assets { //如果你遇到资源文件404,用这个,感谢前公司大佬帮忙,我之前用的正则匹配后缀去了,效果不好。 alias /fadev/phpdev/www/public/assets; }}
然后
Nginx -t //检查配置语法Nginx -s reload //重启配置
下面处理MySQL:你需要进入Mysql容器里先创建一个fa的数据库
docker cp ./xx.SQL mysql:/xx //复制到容器里面 docker exec -it mysql bash mysql -u root -p use xx database; source xx.SQL; exit;
导入数据库后,最后一个就是连接数据库:你需要到fa的数据库配置文件修改配置:
连接默认应该是:localhost或者127.0.0.1吧,换成mysql的内网地址:172.0.x 使用 docker insect mysql查看内网地址就好了。
然后输入 dev.test.cn 就行了。
docker ps
本文我在自己的独立博客也记录了。
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。