一、什么是PHPIPAM
通过官网可以看到,它是一款基于PHP的免费开源的ip管理工具,并且带有MySQL数据库后端,使用jQuery库,ajax和HTML5/CSS3功能。
二、搭建和部署
官方目前只有手动在服务器上搭建的详细步骤,而针对docker部署的情况,只有一条拉取镜像的语句,和基础的docker-compose.yml这个yaml文件,而在实际应用中,涉及到的具体问题还有很多,需要很多额外的操作。相对好用的文章只有( www.freesion.com/article/873… )这一篇帖子,也很感谢这位老哥,给小白提供了一个思路。于是根据下面这篇文章的步骤,自己操作了一下,重新补充和完善了一下。
环境:Centos7.9(2009)和Ubuntu 20.04
1、安装Docker和Docker-compose
这里关于docker的安装不多赘述了,可以根据菜鸟教程上的一键部署方法直接进行部署,最终,在命令行上执行docker -v 和docker-compose version 能够出现其版本号即可
[root@localhost ~]# docker -v
Docker version 20.10.17, build 100c701
[root@localhost ~]# docker-compose version
Docker Compose version v2.6.1
2、拉取镜像
根据官方的方法( hub.docker.com/r/phpipam/p… ) 将镜像拉取到本地
docker pull phpipam/phpipam-www
3、配置docker-compose.yml文件
在官方文档里( hub.docker.com/r/phpipam/p… )包含了两个yaml文件,一个是将数据库镜像一同pull下来的(Docker Standalone),一个是链接本地的数据库的(Docker External MySQL Server)。这里我们选择第一个,在它的模板上进行修改。(拷贝时把相关注释删除)
# WARNING: Replace the example passwords with secure secrets.
# WARNING: 'my_secret_phpipam_pass' and 'my_secret_mysql_root_pass' 这里提示了,下面这三个密码部分要用自己的密码替换
version: '3'
services:
phpipam-web:
privileged: true #这里添加一条,给它一个特级权限,下面相同
image: phpipam/phpipam-www:latest
ports: #添加一条映射到本地端口,这里我映射了8888
- "8888:80"
environment:
- TZ=Asia/Shanghai
- IPAM_DATABASE_HOST=phpipam-mariadb
- IPAM_DATABASE_PASS=my_secret_phpipam_pass #这里的my_secret_phpipam_pass要修改任意其他密码
- IPAM_DATABASE_WEBHOST=%
restart: unless-stopped
volumes:
- phpipam-logo:/phpipam/css/images/logo
depends_on:
- phpipam-mariadb
phpipam-cron:
privileged: true
image: phpipam/phpipam-cron:latest
environment:
- TZ=Asia/Shanghai #这里设置成上海
- IPAM_DATABASE_HOST=phpipam-mariadb
- IPAM_DATABASE_PASS=my_secret_phpipam_pass #这里的my_secret_phpipam_pass要修改任意其他密码
- SCAN_INTERVAL=1h
restart: unless-stopped
depends_on:
- phpipam-mariadb
phpipam-mariadb:
privileged: true
image: mariadb:latest
ports:
- "3306:3306" #这里映射端口到3306,如果本地已有数据库,可以映射为其他端口,不冲突
environment:
- MYSQL_ROOT_PASSWORD=my_secret_mysql_root_pass #这里密码要修改成任意密码,在搭建完成后,新登录的时候会提示输入root用户和root用户的密码,输的就是这个密码
restart: unless-stopped
command: #这里添加command 设置拉取的mysql镜像支持中文
- mysqld
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- phpipam-db-data:/var/lib/mysql
volumes:
phpipam-db-data:
phpipam-logo:
保存之后要设置权限
chmod 777 docker-compose.yml
(检查一下是否设置成功)
4、开放本地的端口(很重要)
如果本地的firewall或者iptables有规则,要先把上面yaml文件里映射的端口,也就是平台用到的端口放行,否则在第一次登录平台配置的时候,会卡在使用root登录数据库那一步,一直转圈,无法进行下去。 (Centos建议不用firewall改用iptables,个人在使用firewall的过程中,开放了端口也会出现放行失败,连不上数据库的情况。Ubuntu的ufw不会影响)
5、启动
docker-compose -p phpIPAM up -d
全部启动后,执行docker ps 会看到所有都已启动,要注意,数据库可能会出现循环启动的情况,这个时候要检查yaml文件里关于数据的配置。
至此后台部署搭建的过程全部完毕
6、配置前端界面
①首次进入,登录ip:端口号/phpipam,进入配置界面,选择"new phpipam installation",再选择"Automatic database installation"
②输入Mysql username 为root,Mysql password 为yaml文件中配置的数据库密码,点击"show" advanced options,将下面的三个选项全部勾选上,单击"install phpipam database"等待一会,会提示"Database installed successfully"即安装成功。
③设置登录用户Admin的密码,点击保存
④设置界面中文。进到界面后,点击红色的"管理",选择User选项,可以将语言修改成中文简体,保存。退出重新登录即改变为中文界面
7、设置支持输入中文
该平台默认字符是MesloLGS-Regular.ttf,该字符不支持中文,会导致所有输入的中文为框框。
这里需要进行修改
①下载一个中文的ttf格式的字体文件,将它的名修改为MesloLGS-Regular.ttf
②将该文件从本地拷贝到docker中的phpipam/phpipam-www 镜像下的/phpipam/css/fonts/中,直接拷贝覆盖即可
docker cp /root/MesloLGS-Regular.ttf 83fc81b11370:/phpipam/css/fonts/
然后去界面上刷新一下,或清理缓存重新登录一下,即可