RedHat搭建Web運用之PostgreSQL數據庫安裝(一)

開心一笑

【男:問你個問題,你喜歡貓還是狗?
女:狗狗。
男:汪汪汪!
女:……
男:我太幸福了,你竟然喜歡我!】

提出問題

如何一步一步搭建web服務器???

解決問題

勵志圖片

最近在給一家銀行部署公司的產品,覺得蠻有意思的,特意整理下,分享給大家:

軟件環境需求

本文章主要分享如何安裝postgresql數據庫以及如何如何搭建離線yum和安裝相關的依賴。

數據庫是安裝到一臺RedHat6.7服務器上,redis,jdk,tomcat是安裝到另一臺服務器上的

  • 數據庫服務器 postgresql-9.4.0 root、innodb(用戶)
001.png

安裝環境準備

使用root賬號登陸系統

#su -l

確認系統時區

#date

安裝包和腳本的放置位置

  • 行方提供應用服務器和數據庫服務器。

  • 步驟1:root用戶登錄系統

  • 步驟2:應用服務器和數據庫服務器各創建安裝包放置目錄,執行如下命令

      #  mkdir  /rjxf
    

步驟3:將安裝包拷貝到目錄/rjxf下

端口占用概況

序號 名字 所在服務器位置 端口號

  • 1 Postgresql 數據庫服務器 5432
  • 2 Redis 應用服務器 6379
  • 3 Tomcat 應用服務器 8080

檢查服務器的使用狀況

  • 1 查看磁盤使用情況,如果磁盤不足,則使用掛載 df -hl
  • 2 mount方法使用 mkdir [自定義掛載目錄]
    mount -o loop /掛載文件.iso /[自定義掛載目錄]
  • 3 查看服務器的整體安裝情況 cat /etc/redhat-release
  • 4 檢查gcc安裝情況,提示沒有文件輸入表示安裝成功 gcc
  • 5 安裝gcc yum install gcc

掛載鏡像

【前置條件】:在數據庫服務器需要掛載鏡像。
步驟1:root用戶登錄系統

# cd /
# mkdir rhel
# mount -o loop /rjxf/rhel-server-6.7-x86_64-dvd.iso /rhel

驗證掛載是否成功

# mount 

搭建離線yum

# vi /etc/yum.repos.d/local.repo

在文件中增加下面配置

[dvd]
name=install dvd
baseurl=file:///rhel/Server
enabled=1
gpgcheck=0

保存退出后,清除YUM緩存(需要按ESC)

# yum clean all

查看可以安裝的程序包

# yum list

把yum.repos.d中的原有的文件和備份刪除

安裝GCC

程序包需要編譯,安裝gcc

# yum install gcc

安裝postgresql數據庫

創建用戶及數據目錄

【前置條件】:在數據庫服務器上。
步驟1:root用戶登錄系統

步驟編號 步驟名稱 執行命令

  • 1 創建innodb用戶 useradd innodb

  • 2 給innodb用戶創建密碼 passwd innodb

  • 3 切換根目錄 cd /

  • 4 創建innodb文件夾 mkdir /innode

  • 5 創建shell文件夾 mkdir /innode/shell

  • 6 復制腳本文件 cp /rjxf/initTable.sql /innode/shell/(這里可以先略過,這是我們項目的初始化腳本)

  • 7 復制腳本文件 cp /rjxf/initData.sql /innode/shell/(這里可以先略過,這是我們項目的初始化腳本)

  • 8 給文件夾賦權 chown innodb:innodb -R /innode

  • 9 切換到innodb用戶 su innodb

  • 10 創建文件數據目錄

      mkdir /innode/postgresql 
      mkdir /innode/localbackup
      mkdir /innode/pgdata
      mkdir /innode/logs
      mkdir /innode/logs/postgresql_archivedlog
      mkdir /innode/backup 
    
  • 11 切換root用戶 su root

  • 12 進入innode cd /innode

  • 13 文件授權 chown innodb:innodb postgresql/ localbackup/ pgdata/ logs/ backup/

  • 14 文件授權 chown innodb:innodb -R /rjxf

  • 15 安裝依賴包

      yum install gcc-c++ -y
      yum install readline-devel  -y
      yum install zlib-devel -y
      yum install python-devel  -y
    
  • 16 編譯安裝UUID包 cd /rjxf

      tar -zxvf uuid-1.6.2.tar.gz
      cd uuid-1.6.2
      ./configure
      make
      make install
    
安裝postgressql數據庫步驟列表
  • 1 切換到innodb用戶 su innodb
  • 2 切換安裝包目錄下 cd /rjxf
  • 3 解壓postgresql tar -zxvf postgresql-9.4.0.tar.gz
  • 4 進入postgresql cd postgresql-9.4.0
  • 5 配置初始化數據庫 ./configure --prefix=/innode/- postgresql --with-blocksize=8 --with-wal-blocksize=8 --with-ossp-uuid
  • 6 預編譯 make
  • 7 編譯數據庫 make install
配置數據庫環境變量步驟列表
  • 1 切換到root用戶 su -l 或 su root

  • 2 編輯數據庫配置文件 vi /etc/profile

  • 3 這個變量添加在profile的最后(vi)

    export PATH=/innode/postgresql/bin:$PATH
    export LD_LIBRARY_PATH=/innode/postgresql/lib:$LD_LIBRARY_PATH
    export PGDATA=/innode/pgdata
    INNO_HOME=/innode

  • 4 重啟數據庫環境變量 source /etc/profile

  • 5 檢查環境變量是否生效 echo $PATH

初始化數據庫步驟列表
  • 1 切換到innodb用戶操作數據庫 su innodb
  • 2 進入postgresql數據庫下的bin文件 cd /innode/postgresql/bin
  • 3 初始化postgresql數據庫 ./initdb --encoding=utf8 -D /innode/pgdata
  • 4 配置數據庫訪問地址
    (將注釋去除) vi /innode/pgdata/postgresql.conf
  • 5 將config文件下的listen_addresses參數改為""
    port 修改端口 5432 listen_addresses = '
    '
    port=5432
  • 6 修改日志放置路徑 log_directory='/innode/logs/pg_log'
  • 7 存檔模式設置 archive_mode = on
    archive_command = 'cp "%p" /innode/logs/postgresql_archivedlog/"%f"'
    archive_timeout = 3600
  • 8 主庫備份 wal_level = hot_standby
  • 9 編輯數據庫ip的連接方式 vi /innode/pgdata/pg_hba.conf
  • 10 編輯config文件下的IPv4的配置 # IPv4 local connections:
    host all all 127.0.0.1/32 md5
    host all all 0.0.0.0/0 md5
  • 11 停止數據庫服務
    注:如果原來數據庫服務已停止,可以忽略 pg_ctl stop
  • 12 啟動數據庫服務 pg_ctl start
  • 13 切換root用戶 su root
  • 14 切換到數據庫uuid目錄 cd /rjxf/postgresql-9.4.0/contrib/uuid-ossp/
  • 15 編譯 make && make install
  • 16 將uuid庫復制到數據庫的庫中 cp /usr/local/lib/libuuid.so.16 /innode/postgresql/lib/
執行數據庫初始化腳本
  • 1 進入postgresql數據庫的bin目錄 cd /innode/postgresql/bin

    ./psql -h 127.0.0.1 -p 5432 -U innodb innode < /innode/shell/de/initTable.sql
    ./psql -h 127.0.0.1 -p 5432 -U innodb innode < /innode/shell/pcs/pcs-initTable.sql

  • 2 將install下的腳本文件分別導入數據庫(如果在數據庫服務器,可忽略端口和IP)

    ./psql -h 127.0.0.1 -p 5432 -U innodb innode < /innode/shell/pcs/pcs-initData.sql
    ./psql -h 127.0.0.1 -p 5432 -U innodb innode < /innode/shell/de/initData.sql

設置開機自啟動postgresql服務
  • 1 切換至root用戶 su root

  • 2 編輯配置文件 vi /etc/rc.local

  • 3 在文檔結尾加入命令

    su -l innodb -c "/innode/postgresql/bin/postgres -D /innode/pgdata/ -c config_file=/innode/pgdata/postgresql.conf &"

  • 4 保存退出 :wq

防火墻配置(iptables)
  • 1 轉換root用戶 su root
  • 2 修改linux操作系統開放端口 vi /etc/sysconfig/iptables
  • 3 開放5432端口,在-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT下插入這一行端口配置 -A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
  • 4 重啟端口配置文件 service iptables restart

注: 如果/etc/sysconfig/iptables為新建文件則添加如下信息

步驟編號 步驟名稱 執行命令

  • 1 加入命令,配置文件

      # Firewall configuration written by system-config-firewall
      # Manual customization of this file is not recommended.
      *filter
      :INPUT ACCEPT [0:0]
      :FORWARD ACCEPT [0:0]
      :OUTPUT ACCEPT [0:0]
      -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      -A INPUT -p icmp -j ACCEPT
      -A INPUT -i lo -j ACCEPT
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
      -A INPUT -j REJECT --reject-with icmp-host-prohibited
      -A FORWARD -j REJECT --reject-with icmp-host-prohibited
      COMMIT
    

2 保存退出 service iptables restart

查看數據庫步驟列表
  • 1 切換用戶到innodb su innodb
  • 2 進入postgresql數據庫的bin目錄 cd /innode/postgresql/bin
  • 3 登錄數據庫,如果已登錄數據庫,可省略此步 ./psql -U innodb innode
  • 4 查看當前數據庫系統安裝的數據庫情況,查看數據庫是否已存 \l
  • 5 從innodb數據庫執行查詢操作,如果能查詢到數據,證明數據庫安裝成功。 select * from sys_user;
  • 6 退出數據庫 \q
修改postgres的參數配置
  • 1 切換innodb用戶 su innodb

  • 2 備份配置文件 cp /innode/pgdata/postgresql.conf /innode/pgdata/postgresql.conf.bak

  • 3 修改參數,包括5個參數 cd

      work_mem=100MB  #工作內存或者操作內存
      shared_buffers=128MB  #改為物理內存的30%,假設物理內存為24G,則24G*30%=7372MB
      maintenance_work_mem  512MB  #維護工作內存
      checkpoint_segments  30 # WAL log的最大數量
      max_connections = 100  #修改數據庫連接數
    
  • 4 重啟數據庫服務

    pg_ctl stop
    pg_ctl start

導入數據異常處理

若查看數據庫發現數據未正常導入,先執行刪除數據庫,然后重新執行新建innodb數據庫、將腳本數據文件導入innodb數據庫。
如下步驟為刪除數據庫。
步驟編號 步驟名稱 執行命令

  • 1 進入postgresql數據庫下的bin文件 cd /innode/postgresql/bin
  • 2 刪除innode數據庫 ./dropdb innode
安裝postgresql異常處理

若初始化數據庫或啟動數據庫碰到問題無法解決,可重新安裝數據庫。
重新安裝數據庫之前,先執行如下步驟。
步驟編號 步驟名稱 執行命令

  • 1 查看postgresql進程運行情況 ps -ef|grep post
  • 2 殺掉postgresql進程 kill -9 postgresql的進程ID
  • 3 刪除文件 rm -rf /innodb/postgresql

讀書感悟

來自《安妮日記》

  • 我希望,我能完全信任你,我還從來沒有能這樣信任過誰。我也希望,你將給我最大的支持。
  • 只要我還活著,能看到這陽光,這無云的天空,我就不可能不幸福!
  • 通過這事,我明白了:只有在爭吵后,才能真正看清一個人。這時候,才能清楚他們的真實性格。
  • 對于孤單、驚恐、悲傷的人來說,最佳良藥就是出去走走,去一個只有天空、自然和上帝的地方,一個無人的地方。只有這樣,才能感受到本來的樣子,感受到上帝希望人們在淳樸和自然的美景中幸福快樂。
  • 我開始思考、寫作,終于得出結論:其他人不再和我有關系。他們沒有權利將我當作鐘擺隨意擺布、來回晃蕩。我想以自己的方式改變自己。
    我相信自己。
  • 我們全都活著,但我們并不知道為什么活著,不知道去向何方,我們活著的目的都是要幸福,我們的生命千差萬別卻又沒什么兩樣。

其他

如果有帶給你一絲絲小快樂,就讓快樂繼續傳遞下去,歡迎轉載,點贊,頂,歡迎留下寶貴的意見,多謝支持!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容