安裝前準備工作
系統及應用版本
centos 8.3
nginx 1.18
php 7.4.8
postgresql 12.3
zabbix 5.0.2
安裝編譯環境依賴包
dnf -y install gd gd-devel gcc gcc-c++ make automake pcre pcre-devel \
zlib zlib-devel openssl openssl-devel libxml2-devel libpng-devel curl-devel \
numactl langpacks-zh_CN.noarch glibc-common net-tools lrzsz readline readline-devel \
sqlite-devel libzip libzip-devel wget net-snmp-devel libevent-devel
安裝包下載
wget http://nginx.org/download/nginx-1.18.0.tar.gz
wget https://www.php.net/distributions/php-7.4.8.tar.gz
wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.2.tar.gz
wget https://ftp.postgresql.org/pub/source/v12.3/postgresql-12.3.tar.gz
wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
安裝nginx
解壓nginx原始碼包:
tar -zxf nginx-1.18.0.tar.gz
cd nginx-1.18.0
編譯安裝:
./configure --prefix=/opt/lnmp/nginx
make && make install
建立nginx使用者
useradd nginx
passwd nginx
將nginx命令加入環境變數
#設定環境變數
vim /etc/profile.d/nginx.sh
PATH=$PATH:/opt/nginx/sbin
export PATH
:wq!
source /etc/profile #重新整理配置
#修改nginx配置
grep "^\s*[^# \t].*$" /opt/lnmp/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
#啟動測試nginx配置檔案
/opt/lnmp/nginx/sbin/nginx -t -c /opt/lnmp/nginx/conf/nginx.conf
#啟動nginx
/opt/lnmp/nginx/sbin/nginx -c /opt/lnmp/nginx/conf/nginx.conf
#停止nginx
/opt/lnmp/nginx/sbin/nginx -c /opt/lnmp/nginx/conf/nginx.conf -s stop
--------------------------------------
[root@angrymushroom-wk nginx-1.18.0]# nginx -t
nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
[root@angrymushroom-wk nginx-1.18.0]# nginx
[root@angrymushroom-wk nginx-1.18.0]# netstat -lnptu |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 97075/nginx: master
原始碼安裝postgresql
解壓原始碼包
tar -zxf postgresql-12.3.tar.gz
cd postgresql-12.3
編譯安裝
./configure --prefix=/opt/lnmp/pgsql
make && make install
建立postgres使用者
useradd postgres
passwd postgres
新增環境變數
vim /etc/profile.d/postgresql.sh ## 增加環境變數,不推薦直接在/etc/profile中新增,系統更新升級時會需要merge
cat /etc/profile.d/postgres.sh
PATH=/opt/lnmp/pgsql/bin:$PATH
export PATH
:wq!
source /etc/profile ## 更新環境變數
將postgresql的庫新增到全域性
cat /etc/ld.so.conf.d/pgsql.conf
/opt/lnmp/pgsql/lib
ldconfig ##更新庫
ldconfig -v |grep pg ## 檢視是否新增成功
初始化資料庫
su - postgres
/opt/lnmp/pgsql/bin/initdb -D /opt/lnmp/pgsql/data
配置資料庫允許遠端登入
vim /opt/lnmp/pgsql/data/pg_hba.conf
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
vim /opt/lnmp/pgsql/data/postgresql.conf
listen_addresses = '*'
port = 5432
postgresql執行命令
opt/lnmp/pgsql/bin/pg_ctl start -D /opt/lnmp/pgsql/data -l /opt/lnmp/pgsql/logs/server.log
/opt/lnmp/pgsql/bin/pg_ctl stop -D /opt/lnmp/pgsql/data
/opt/lnmp/pgsql/bin/pg_ctl restart -D /opt/lnmp/pgsql/data
/opt/lnmp/pgsql/bin/pg_ctl reload -D /opt/lnmp/pgsql/data
/opt/lnmp/pgsql/bin/pg_ctl status -D /opt/lnmp/pgsql/data
建立庫和使用者
psql -h 192.168.253.250 -U postgres ## postgres登入資料庫
alter user postgres with password 'postgres'; ## 修改postgres密碼
create user zabbixus with password 'zabbixpwd'; ## 建立使用者設定密碼
CREATE DATABASE zabbixdb OWNER zabbuxus; ## 建立資料庫並指定使用者
grant ALL privileges on database zabbixdb to zabbixus; ## 給使用者賦資料庫許可權
psql -h 192.168.253.250 -U zabbix -W zabbixdb ## 普通使用者登入
安裝php
php依賴包oniguruma 安裝
tar -zxf oniguruma-6.9.4.tar.gz
cd oniguruma-6.9.4
./autogen.sh
./configure --prefix=/usr --libdir=/lib64
make && make install
編譯php
./configure --prefix=/opt/lnmp/php --with-config-file-path=/opt/lnmp/php/etc --with-pdo-pgsql=/opt/lnmp/pgsql/ --with-pgsql=/opt/lnmp/pgsql/ --with-freetype --with-jpeg --with-zlib --enable-bcmath --enable-shmop --enable-sysvsem --with-curl --enable-mbstring --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap-sasl --with-xmlrpc --enable-soap --with-gettext --enable-fpm --with-zip --enable-gd --with-webp
make && make install
新增php配置檔案並修改
cp php.ini-production /opt/lnmp/php/etc/php.ini
cp /opt/lnmp/php/etc/php-fpm.conf.default /opt/lnmp/php/etc/php-fpm.conf
cp /opt/lnmp/php/etc/php-fpm.d/www.conf.default /opt/lnmp/php/etc/php-fpm.d/www.conf
vim /opt/lnmp/php/etc/php.ini
date.timezone = Asia/Shanghai
post_max_size 16M
max_execution_time 300
max_input_time 300
vim /etc/profile.d/php.sh
PATH=/opt/lnmp/php/bin:/opt/lnmp/php/sbin:$PATH
export PATH
vim /opt/lnmp/nginx/html/test.php ## nginx訪問php測試頁面
<?
php phpinfo();
?>
vim /opt/lnmp/nginx/html/testpg.php ## php連線postgresql資料庫測試頁面
<?php
$conn_string = "host=localhost port=5432 dbname=zabbixdb user=zabbixus password=zabbixpwd" ;
$dbconn = pg_connect($conn_string);
if (!$dbconn)
echo "連線失敗!!!!!/r/n";
else
echo "連線成功!!!!!/r/n";
pg_close($dbconn);
?>
php執行命令
/opt/lnmp/php/sbin/php-fpm ## 直接執行啟動程式 pkill php-fpm 結束程式 php-fpm -t 檢測配置檔案是否有錯
ps -ef |grep php-fpm
root 23942 1 0 Aug06 ? 00:00:00 php-fpm: master process (/opt/lnmp/php/etc/php-fpm.conf)
nobody 39558 23942 2 05:18 ? 00:00:47 php-fpm: pool www
nobody 40815 23942 2 05:37 ? 00:00:23 php-fpm: pool www
nobody 41628 23942 2 05:50 ? 00:00:05 php-fpm: pool www
netstat -lnptu |grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 23942/php-fpm: mast
安裝ZABBIX5
解壓zabbix包
tar -zxf zabbix-5.0.2.tar.gz
cd zabbix-5.0.2
編譯安裝zabbix
./configure --prefix=/opt/zabbix --enable-server --enable-agent --with-postgresql=/opt/lnmp/pgsql/bin/pg_config --with-net-snmp --with-libcurl --with-libxml2
make && make install
建立zabbix使用者
useradd -d /opt/zabbix -s /sbin/nologin zabbix
匯入zabbix表資料
psql -d zabbixdb -U zabbixus <database/postgresql/schema.sql
psql -d zabbixdb -U zabbixus <database/postgresql/images.sql
psql -d zabbixdb -U zabbixus <database/postgresql/data.sql
psql -d zabbixdb -U zabbixus <database/postgresql/timescaledb.sql
psql -d zabbixdb -U zabbixus <database/postgresql/double.sql
修改zabbix_server.conf和zabbix_agent.conf
vim /opt/zabbix/etc/zabbix_server.conf
LogFile=/opt/zabbix/log/zabbix_server.log ## 日誌檔案存放的路徑
PidFile=/opt/zabbix/zabbix_server.pid ## pid檔案存放的路徑
DBHost=localhost ## 資料庫伺服器地址
DBName=zabbixdb ## 資料庫名字
DBUser=zabbixus ## 連線資料庫的使用者名稱
DBPassword=zabbixpwd ## 連線資料庫使用者的密碼
#DBSocket=/var/lib/mysql/mysql.sock ## 指定連線mysql的socket,mysql配置的client sock檔案路徑
DBPort=5432 ## 資料庫埠
Timeout=10 ## 超時時間
LogSlowQueries=3000 ## 慢查詢記錄的時間
mkdir /opt/zabbix/log
chown zabbix.zabbix /opt/zabbix/log
vim /opt/zabbix/etc/zabbix_agentd.conf
LogFile=/opt/zabbix/log/zabbix_agentd.log
PidFile=/opt/zabbix/zabbix_agentd.pid
Server=127.0.0.1 ## 伺服器IP
ServerActive=127.0.0.1 ## 伺服器IP
Hostname=angrymushroom-os801 ## agent客戶機主機名
vim /etc/profile.d/zabbix.sh
PATH=/opt/zabbix/bin:/opt/zabbix/sbin:$PATH
export PATH
source /etc/profile
vim /etc/ld.so.conf.d/zabbix.conf
/opt/zabbix/lib
ldconfig
啟動zabbix
/opt/zabbix/sbin/zabbix_agentd -c /opt/zabbix/etc/zabbix_agentd.conf
/opt/zabbix/sbin/zabbix_server -c /opt/zabbix/etc/zabbix_server.conf
## ps -ef |grep zabbix 檢視程式 netstat -lnptu |grep zabbix 檢視埠 pkill 結束程式
配置zabbix web頁面
cp -a zabbix-5.0.2/ui/* /opt/lnmp/nginx/html/zabbix/ ## 將web頁面cp到nginx的web根下的zabbix目錄
## 在Windows C:\Windows\Fonts 下找一個 .ttf字尾的中文包上傳到 /opt/lnmp/nginx/html/zabbix/assets/fonts/下
## 將上傳的ttf語言包名替換成原本的語言包名
cd /opt/lnmp/nginx/html/zabbix/assets/fonts/
ls *.ttf
DejaVuSans.ttf simhei.ttf ## 這裡將DejaVuSans.ttf mv 成DejaVuSans.ttf.bak 然後將simhei.ttf改為DejaVuSans.ttf
## 修改以後在瀏覽器開啟 http://IP:Prot/zabbix 進入配置頁面。第一頁是個歡迎介面下一步之後會檢查環境是否正確。如果有問題根據提示的資訊修改然後重新整理頁面
## 最後完成的時候會讓你下載一個zabbix.conf.php的配置檔案 把它上傳到對應目錄 然後重新整理頁面即可進入zabbix登入頁面
## 登入後可以在 user settings裡設定中文語言
postgresql補充
列出資料庫名(檢視已有的資料庫)
\l 或 select * from pg_database;
切換資料庫
\c 資料庫名
列出表名
\d 不加引數 或
SELECT tablename FROM pg_tables WHERE tablename NOT LIKE 'pg%' AND tablename NOT LIKE 'sql_%' ORDER BY tablename;
將資料庫的所有許可權付給使用者
postgres=# GRANT ALL PRIVILEGES ON DATABASE zabbixdb TO zabbixus; #將資料庫 zabbixdb 許可權授權於 zabbixus 但此時使用者還是沒有讀寫許可權,需要繼續授權表
GRANT
postgres=# \c zabbixdb;
GRANT ALL PRIVILEGES ON all tables in schema public TO zabbixus;
#注意,該sql語句必須在所要操作的資料庫裡執行
#這一句是將當前資料庫下 public schema 的表都授權於 zabbixus
#如果要單獨一個許可權以及單獨一個表,則:
GRANT SELECT ON TABLE mytable TO zabbixus;
------------
postgres=# grant all on database testdb to zabbixus; #將testdb所有許可權賦值給zabbixus
GRANT
匯入整個資料庫
psql -U username databasename < /data/dum.sql -- 使用者名稱和資料庫名
設定使用者遠端登入
[root@angrymushroom-wk ~]# psql -h 192.168.254.128 -U zabbixus -d zabbixdb
psql: error: could not connect to server: could not connect to server: 拒絕連線
Is the server running on host "192.168.254.128" and accepting
TCP/IP connections on port 5432?
安裝PostgreSQL資料庫之後,預設是隻接受本地訪問連線。如果想在其他主機上訪問PostgreSQL資料庫伺服器,就需要進行相應的配置。
配置遠端連線PostgreSQL資料庫的步驟很簡單,只需要修改data目錄下的pg_hba.conf和postgresql.conf配置檔案。
pg_hba.conf :配置對資料庫的訪問許可權;
postgresql.conf :配置PostgreSQL資料庫伺服器的相應的引數。
下面介紹具體配置的步驟:
修改 pg_hba.conf 檔案,配置使用者的訪問許可權(#開頭的行是註釋內容):
[root@angrymushroom-wk ~]# vim /opt/pgsql12/data/pg_hba.conf
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.168.1.0/24 md5 ## 設定允許某個網段
host all all 0.0.0.0/0 md5 ## 設定允許全部網段
# IPv6 local connections:
host all all ::1/128 trust
其中,第6條是新新增的內容,表示允許網段192.168.1.0上的所有主機使用所有合法的資料庫使用者名稱訪問資料庫,並提供加密的密碼驗證。其中,數字24是子網掩碼,表示允許192.168.1.0--192.168.1.255的計算機訪問。
修改 ostgresql.conf 檔案,將資料庫伺服器的監聽模式修改為監聽所有主機發出的連線請求。
定位到#listen_addresses = "localhost"。PostgreSQL安裝完成後,預設只接受來自本機localhost的連線請求。
將行開頭都#去掉,將行內容修改為listen_addresses = "*"來允許資料庫伺服器監聽來自任何主機的連線請求
其他擴充套件
systemctl
1、啟動、關閉、重啟防火牆服務。
systemctl start firewalld.service
systemctl stop firewalld.service
systemctl restart firewalld.service
2、顯示防火牆的狀態。
systemctl status firewalld.service
3、開機啟動防火牆。
systemctl enable firewalld.service
4、開機時禁用防火牆。
systemctl disable firewalld.service
5、檢視防火牆是否開機啟動。
systemctl is-enabled firewalld.service
6、檢視已啟動的服務列表。
systemctl list-unit-files|grep enabled
7、檢視啟動失敗的服務列表。
systemctl --failed
配置防火牆
1、檢視版本。
firewall-cmd --version
2、檢視幫助。
firewall-cmd --help
3、顯示狀態。
firewall-cmd --state
4、檢視所有開啟的埠。
firewall-cmd --zone=public --list-ports
5、重新載入,更新防火牆規則。
firewall-cmd --reload
6、檢視區域資訊。
firewall-cmd --get-active-zones
7、檢視指定介面所屬區域。
firewall-cmd --get-zone-of-interface=eth0
8、拒絕所有包。
firewall-cmd --panic-on
9、取消拒絕狀態。
firewall-cmd --panic-off
10、檢視是否拒絕。
firewall-cmd --query-panic
11、開啟80埠,–permanent永久生效,沒有此引數重啟後失效。
firewall-cmd --zone=public --add-port=80/tcp --permanent
12、檢視80埠是否開放。
firewall-cmd --zone=public --query-port=80/tcp
13、刪除80埠配置。
firewall-cmd --zone=public --remove-port=80/tcp --permanent