在使用FastAdmin开发完成进入部署阶段时,如果有分布式部署要求时,需要关注以下几个关键配置和步骤来确保系统的正常运行和高可用性:
1. 负载均衡
Nginx配置:配置Nginx作为反向代理服务器,实现请求的负载均衡。你需要在Nginx配置文件中添加 upstream
模块定义后端服务器列表,并在 server
配置中使用 proxy_pass 指向这个 upstream
。
upstream thinkphp_servers { server backend1.example.com; server backend2.example.com; # 可以添加更多服务器节点}server { listen 80; server_name your_domain.com; location / { proxy_pass http://thinkphp_servers; # 其他代理相关配置,如proxy_set_header等 }}
也可以使用第三方负载均衡服务来搭建,如阿里云、腾讯云等。
2. Session共享
当使用分布式部署时,通常要求使用Session共享,此时我们需要修改配置文件application/config.php
,找到session
节点,修改Session的驱动方式为Redis
。
'session' => [ 'id' => '', // SESSION_ID的提交变量,解决flash上传跨域 'var_session_id' => '', // SESSION 前缀 'prefix' => 'think', // 驱动方式 支持redis memcache memcached 'type' => 'redis', // redis主机 'host' => '127.0.0.1', // redis端口 'port' => 6379, // 密码 'password' => '你的Redis密码', // redis数据库,选择第1个数据库,这里建议和cache缓存区分开 'select' => 1, // 是否自动开启 SESSION 'auto_start' => true, // 共享域名 'domain' => '你的域名',],
3. 缓存配置
当使用分布式部署时,通常要求使用同一个缓存,此时我们需要修改配置文件application/config.php
,找到cache
节点,修改缓存驱动为Redis
。
'cache' => [ // 驱动方式 'type' => 'Redis', // 缓存保存目录 'path' => CACHE_PATH, // 缓存前缀 'prefix' => '', // 缓存有效期 0表示永久缓存 'expire' => 0, //Redis缓存配置 // redis主机 'host' => '127.0.0.1', // redis端口 'port' => 6379, // 密码 'password' => '你的密码', // redis数据库,选择第2个数据库,这里建议和session缓存区分开 'select' => 2 ],
4. 数据库读写分离
在使用分布式部署时,如果有数据库读写分离的要求,修改配置文件application/database.php
中配置主数据库和从数据库配置,实现读写分离。
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'deploy' => 0, // 数据库读写是否分离 主从式有效 'rw_separate' => false, // 读写分离后 主服务器数量 'master_num' => 1, // 指定从服务器序号 'slave_no' => '', // 是否严格检查字段是否存在
更多配置请参考ThinkPHP官方文档:https://www.kancloud.cn/manual/thinkphp5/118061
5. 文件上传
如果应用有上传文件的需求,可以考虑使用云存储服务(如阿里云OSS、腾讯云存储)来存储和上传文件,FastAdmin插件市场中有适配多家云存储厂商,请参考:https://www.fastadmin.net/store.html?category=17
6. 配置同步
由于目前FastAdmin配置和插件相关配置均采用文件存储,未使用数据库或其它存储方式,因此建议在分布式部署时,做好服务器文件的同步更新,建议使用第三方实现文件修改后的实时同步,如:inotify
+rsync
7. 日志与监控
如果有集中日志的要求,可以参考THinkPHP官方日志章节文档使用Socket
日志驱动,文档:https://www.kancloud.cn/manual/thinkphp5/118126
常见问题
服务器使用了负载均衡或CDN后造成获取客户端IP为内网IP时该如何处理?
FastAdmin分布式部署如何保证微信AccessToken一致性
温馨提示
完成上述配置后,需要确保所有服务器环境一致,包括PHP版本、扩展、依赖库等,并进行充分的测试,以验证分布式部署是否正确无误。
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。