phpIPAM 設定及安裝過程 (NGINX版)-Ubuntu
因之前 IP 管理都是用 EXCEL 表單來做記錄,那有時候如果忘了記錄就比較麻煩不知道是否有記錄到新的 IP ,自從看到 Jason Cheng 在介紹用系統來管理目前所使用的 IP 服務,以下是安裝流程及設定。
2026.03.16 Ubuntu 系統版本
運行環境
本工作室環境都是在 「Proxmox VE 」 虛擬系統上架設,都是以 「 LXC 」模式為主,除非有特殊狀況會告知使用 「 VM 」 模式
- 系統環境: Ubuntu 24.04 ( KVM )
- Web 服務: Nginx 1.28.2
- PHP 服務: PHP 8.5
- 資料庫服務: MariaDB 11.8
安裝過程
WEB 服務安裝
- 可以參考本知識庫的 WBE 服務安裝流程 Nginx 模組擴充 - Debain \ Ubuntu
MairaDB 安裝
- 請參考本知識庫另一篇文章來安裝 在 Linux 系統上安裝 MariaDB
phpIPAM 資料庫設定
# 登入資料庫裡設定資表及權限
mariadb -u root -p
# 在資料庫裡新增 phpIPAM 資料表
CREATE DATABASE IF NOT EXISTS phpipamdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 密碼請自己輸入好記錄的密碼
GRANT ALL PRIVILEGES ON phpipamdb.* TO 'phpipamuser'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
PHP 安裝
- 安裝 php 必要套件
apt install software-properties-common -y
- 新增 PHP 來源庫
sudo add-apt-repository ppa:ondrej/php
- 如果不能安裝 PHP 8.5 先執行以下的指令
sudo apt install -y --allow-change-held-packages php8.5
- 安裝 PHP 必要套件
apt update && apt install curl git php8.5 php8.5-{common,mbstring,fpm,mysql,gd,cli,curl,ldap,odbc,xmlrpc,soap,intl,zip,tidy,xml,pdo,snmp,gmp,mcrypt,} -y
- 用指令方式修改 php 設定檔
# 指令方式修改
sed -i "s|^;cgi.fix_pathinfo=1.*$|cgi.fix_pathinfo=0|" /etc/php/8.5/fpm/php.ini
sed -i "s|^;cgi.fix_pathinfo=1.*$|cgi.fix_pathinfo=0|" /etc/php/8.5/cli/php.ini
sed -i "s|^;date.timezone =.*$|date.timezone = Asia/Taipei|" /etc/php/8.5/fpm/php.ini
sed -i "s|^;date.timezone =.*$|date.timezone = Asia/Taipei|" /etc/php/8.5/cli/php.ini
sed -i "s|^upload_max_filesize = 2M.*$|upload_max_filesize = 50M|" /etc/php/8.5/fpm/php.ini
sed -i "s|^upload_max_filesize = 2M.*$|upload_max_filesize = 50M|" /etc/php/8.5/cli/php.ini
sed -i "s|^post_max_size = 8M.*$|post_max_size = 200M|" /etc/php/8.5/fpm/php.ini
sed -i "s|^post_max_size = 8M.*$|post_max_size = 200M|" /etc/php/8.5/cli/php.ini
sed -i "s|^memory_limit = 128M.*$|memory_limit = 512M|" /etc/php/8.5/fpm/php.ini
sed -i "s|^memory_limit = -1.*$|memory_limit = 512M|" /etc/php/8.5/cli/php.ini
sed -i "s|^max_execution_time = 30.*$|max_execution_time = 600|" /etc/php/8.5/fpm/php.ini
sed -i "s|^max_execution_time = 30.*$|max_execution_time = 600|" /etc/php/8.5/cli/php.ini
sed -i "s|^max_input_time = 60.*$|max_input_time = 600|" /etc/php/8.5/fpm/php.ini
sed -i "s|^max_input_time = 60.*$|max_input_time = 600|" /etc/php/8.5/cli/php.ini
sed -i "s|^default_socket_timeout = 60.*$|default_socket_timeout = 600|" /etc/php/8.5/fpm/php.ini
sed -i "s|^default_socket_timeout = 60.*$|default_socket_timeout = 600|" /etc/php/8.5/cli/php.ini
- 設定「php-fpm」「
vim /etc/php/8.5/fpm/pool.d/www.conf」
; 由誰使用此服務
; RPM: apache user chosen to provide access to the same directories as httpd
;user = apache
user = www-data
; RPM: Keep a group allowed to write in log dir.
;group = apache
group = www-data
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
修改好存檔
:wq
- 重啟及開機自動啟動
php-fpm服務
systemctl start php8.5-fpm && systemctl enable php8.5-fpm
or
systemctl enable --now php8.5-fpm
Nginx 設定
- 全域設定檔備份
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig # 備份原本預設的設定檔
vim /etc/nginx/nginx.conf # 新增新的nginx設定檔
- 全域設定
user www-data;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
#
events {
worker_connections 1024;
}
#
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#
access_log /var/log/nginx/access.log main;
#
#
client_body_timeout 120s;
#
server_tokens off;
#
# Default is 60, May need to be increased for very large uploads
#
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
#
include /etc/nginx/mime.types;
include /etc/nginx/conf.d/*.conf;
default_type application/octet-stream;
#
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
#
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Powered-By eiblog/1.3.0;
add_header X-Content-Type-Options nosniff;
add_header Referrer-Policy "no-referrer-when-downgrade";
add_header Cache-Control no-cache;
}
- 新增服務設定檔
vim /etc/nginx/conf.d/phpipam.conf
server {
# 這個主機的 Port
listen 80;
# 這個主機的名稱
server_name 服務主機位置;
root /var/www/html/phpipam;
#
access_log /var/log/nginx/phpipam_access.log;
error_log /var/log/nginx/phpipam_error.log;
#
client_max_body_size 1G;
fastcgi_buffers 64 4K;
#
# html 檔
# phpipam
location / {
try_files $uri $uri/ /index.php;
index index.php;
}
# phpipam - api
location /api/ {
try_files $uri $uri/ /api/index.php;
}
location = /50x.html {
root /usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
# php 檔
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_index index.php;
try_files $uri = 404;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#
location ~* \.(?:ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
expires 30d;
log_not_found off;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
# location ~ /\.ht {
# deny all;
# }
# 發生 404 指定導向哪個網頁
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
# location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
}
- 重啟 nginx 服務
systemctl restart nginx
phpIPAM 安裝設定
- 建立目錄
mkdir -p /var/www/html
- 設定 wbe 服務所需要的目地下載服務
cd /var/www/html/
下載官方在 github
git clone https://github.com/phpipam/phpipam.git
進到 phpipam 目錄
cd phpipam/
確認安裝的版本
git submodule update --init --recursive
- 設定該目錄的權限
chown www-data: -R /var/www/html/phpipam/
- 複製一份 phpIPAM 設定檔
cp config.dist.php config.php
- 設定 phpIPAM 設定檔
vim config.php
設定資料庫的帳密訊息
/**
* database connection details
******************************/
$db['host'] = 'localhost';
$db['user'] = 'phpipamuser';
$db['pass'] = 'passwd';
$db['name'] = 'phpipamdb';
$db['port'] = 3306;
WEB 服務設定畫面
-
開啟瀏灠器輸入服務主機
http://ip -
因 BUBU 安裝的 PHP 版本為 8.5 官方預設為 8.4,系統會跳出要請您同意可以使用最新版本,編輯
vim /var/www/html/phpipam/config.php填入以下參數
$allow_untested_php_versions=true;
- 選擇「 New phpipam installation 」
- 選擇自動安裝「 Automatic database installation 」
- 輸入剛剛在資料庫上為該服務所建立的帳號及密碼,輸入完請按下 「 Install phpipam database 」
- 如果在設定資料庫連線資訊之前請按
Show advanced options會展開把以下有打勾的都先拿掉,這樣子可以繼續下一步動作了
- 點選 「 Continue 」
- 設定管理者的密碼,輸入完按下「 Save settings 」
- 存完之後再點選「 Proceed to login 」
- 點選完會跑到登入畫面,請填入管理者帳號及密碼,預設管理者帳號是:admin 、 密碼是剛剛所設定的那一組
- 登入之後所顯示的畫面
補充說明1
- 預先將資料庫結構匯入到資料庫裡面,建立帳號及資料庫
mariadb -u root -p
CREATE DATABASE IF NOT EXISTS phpipamdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON phpipamdb.* TO 'phpipamuser'@'localhost' IDENTIFIED BY '設定使用者密碼' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
- 進到剛剛所下載好的目錄裡面,匯入官方所提供的語法,然後再進到設定檔把連接資料庫的訊息填入,上面有教學怎麼填入那些資訊請參考。
cd /var/www/html/phpipam/db
mariadb -u root -p phpipamdb < SCHEMA.sql
- 請使用瀏覽器連至
http://ip/,預設帳號為 admin,預設密碼為 ipamadmin,即可開始登入 phpIPAM 系統,登入後系統會要求修改管理者的密碼,修改完之後再使用新的密碼登入就可以使用了
補充說明2
-
如果要使用中文語系,請先把系統底層先設定
zh_TW語系後,在進到系統除了設定系統預設語系為中文,連同帳號也要設定語系為中文 -
系統提示要把安裝精靈停用
- 停用安裝精靈
vim /var/www/html/phpipam/config.php
$disable_installer = true;









