前言
在開始操作這篇文章之前,需要完成下面的教學文章:
PostgreSQL簡易介紹
PostgreSQL是一個關聯式的資料庫,個人認為比MySQL/MariaDB強大的原因是,因為PostgreSQL可以支援一些不一樣的欄位型別,像是JSON type等等。這是有別於一般的SQL資料庫,同時這也是它的優勢跟特性。
PostgreSQL安裝
首先,我們依序執行下面的指令:
sudo apt-get update sudo apt-get install postgresql postgresql-contrib
安裝好以後,預設會有一個使用者叫做postgres的使用者。
切換使用者之後,輸入:psql,就會進入指令模式了,要退出只要輸入\q或是ctrl+d組合鍵即可退出。
sudo su - postgres psql
為了不要讓外部可以連線,我們需要到PostgreSQL的設定檔進行設定。
sudo vim /etc/postgresql/9.5/main/pg_hba.conf
每個版本號對應的路徑設定檔會不一樣,像這邊是9.5版本,如果是安裝9.1版本,那9.5那邊就要改成9.1。
理論上要確認長成這樣的使用者設定。
設定一個使用者
有別於MySQL/MariaDB的使用者設定,PostgreSQL設定外連的使用者是需要設定在設定檔裡面的,所以我們要接續上面的打開設定檔並把
local all postgres peer
改成
local all postgres trust
改完之後接著重新啟動PostgreSQL服務
sudo service postgresql restart
切換成使用者postgres
psql -U postgres
接著進入PostgreSQL的互動shell中,修改密碼並離開互動shell。
ALTER USER postgres with password 'your-password';
最後再去把設定檔中的下面這一行:
local all postgres trust
改成
local all postgres md5
並重新啟動PostgreSQL服務。
sudo service postgresql restart
利用Adminer.php驗證PostgreSQL連線設定
為了要知道先前的設定可以知道,是否連線是正確的,所以我們在這部份要利用Adminer來驗證前一部份的設定。
在這之前,我們為Adminer建立一個子網域叫做db.peter-lee.tk。
詳細的在Nginx架設與子網域設定,請看最前面的前言教學連結。
Adminer介紹
Adminer是一款只有一個單一PHP檔案的PostgreSQL資料庫管理系統,當然PostgreSQL也有phppgAdmin可以使用,但是已經在2013以後就沒有在積極的維護了。為了有良好的使用體驗跟完整的支援,我這次在這篇的教學中使用Adminer來管理PostgreSQL資料庫。
下載Adminer
首先,先拜訪Adminer官方網站,接著拉到頁面在下方的downloads部份。如圖所示
並複製第一個Adminer的連結。
切換到要拜訪的子網域的網頁根目錄下(web root)並輸入下面的指令下載
sudo wget https://github.com/vrana/adminer/releases/download/v4.6.2/adminer-4.6.2.php
有時候版本會更新,所以複製的下載連結會有所不同,這點需要注意!
下載完成之後,把檔案名稱修改成index.php
sudo mv adminer-4.6.2.php index.php
利用Nginx網址重寫導向給index.php
我們假設我們建立好的子網域名稱叫做:db.peter-lee.tk。則我們打開此子網域的對應設定檔做設定。
sudo vim /etc/nginx/sites-available/db.peter-lee.tk
打開的設定檔並加上網址重寫,其完整的設定檔長成這樣:
server { listen 80; root /var/www/db.peter-lee.tk; index index.php index.html index.htm index.nginx-debian.html; server_name db.peter-lee.tk; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } location ~ /\.ht { deny all; } }
- 一律導向給index.php做處理。
接著嘗試連線PostgreSQL連線看看有沒有設定正確。若連線成功的話,就會像下面一樣的畫面了。
同場加映
在下一篇,我們會介紹如何建置一個Hello Laravel App。
敬請期待!