重零開始自架Polr短網址

Jease
Jease隨筆
Published in
11 min readAug 3, 2020

在這充滿網址的時代,每次傳訊息都是一長串網址貼到群裡,總會有一種洗頻的罪惡感爽,但每次都用別人家的卻又背部起來,這時候就該來自架啦~

簡介

Polr是一款開源的短網址平台,你可以自由的設定網域、託管自己的網址,主要是由 PHP 和 Lumen 所編寫出來的一套系統。

以下是安裝要求

  • Apache, nginx, IIS, or lighttpd (Apache preferred)
  • PHP >= 5.5.9
  • MariaDB or MySQL >= 5.5, SQLite alternatively
  • composer
  • PHP requirements:
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • PDO MySQL Driver (php5-mysql on Debian & Ubuntu, php5x-pdo_mysql on FreeBSD)
  • Mbstring PHP Extension
  • Tokenizer PHP Extension
  • JSON PHP Extension
  • PHP curl extension

以下文章假設讀者沒有安裝過Apache、Mysql、PHP,所以會重安裝講起,有安裝過的可以跳過,這邊附上Github連結

Apache安裝

  1. 在安裝前一樣先進行更新
sudo apt-get update

2. 安裝Apache Webserver

sudo apt-get install apache2 -y

安裝 PHP 與 Composer

  1. 安裝PHP
sudo apt-get install php php-pdo php-mysql php-mbstring php-tokenizer php-json php-curl -y

2. 下載 Composer

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

3. 驗證檔案HASH值

看到 “Installer verified” 代表檔案驗過成功

php -r "if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

4. 全域安裝 Composer

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

當出現 Composer (version 1.10.9) successfully installed to: /usr/local/bin/composer
代表已經安裝成功

安裝Mysql

在這邊我們需要去安裝 Mysql 作為我們的資料庫

安裝 Mysql Server

sudo apt-get install mysql-server -y
sudo mysql_secure_installation

在安裝的過程中會出現以下選項,基本上就按照下面打得,跟著選就好,除非你有甚麼特殊需求,在密碼的地方,可以依據你的需求設定密碼難度,我通常選英文+特殊符號,

Would you like to setup VALIDATE PASSWORD plugin? [Y/N] N
New password: <Your Password>
Re-enter new password: <Your Password>
Remove anonymous users? [Y/N] Y
Disallow root login remotely? [Y/N] Y
Remove test database and access to it? [Y/N] Y
Reload privilege tables now? [Y/N] Y

安裝 Polr

接下來開始進入重頭戲,開始正式安裝 Polr ,前面都只是在設定基礎的環境。

下載並設定

  1. git clone 檔案
cd /var/www
sudo git clone https://github.com/cydrobolt/polr.git --depth=1

2. 設定權限

sudo chmod -R 755 polr
sudo chown -R www-data polr

3. 安裝 PHP 套件

cd polr
sudo composer install --no-dev -o

在這邊出現黃色的字,那是因為版本的問題,可以全部忽略掉,只要沒有出現紅底色的字,就代表安裝成功。

4. 讓 Polr 變成安裝環境

sudo cp .env.setup .env
sudo chown www-data .env

創建Database

在這邊我們要為了 Polr 去新增一個資料庫,以當作 Polr 儲存資料用,它裡面會存帳號、連結等等資料

  1. 登入 mysql
sudo mysql -u root -p

這時他會要你輸入你的密碼,以來進行登入。

2. 創建DB

我們要為了 ,並去新增一組帳號,來讓他管理 Polr 資料庫內的資訊

CREATE DATABASE polr;
GRANT ALL PRIVILEGES on polr.* to 'username'@'localhost' identified by 'password';
FLUSH PRIVILEGES;
exit

第一行為創建一個新的名為polr的資料庫,在第二行的地方為新增一個管理人員,在 username 的地方要替換成你想要的帳號名稱, password 則是更換成你的密碼,第三行則是更新 Mysql 的配置,接下來我們離開 Mysql

配置 Apache 文檔

在這邊我們需要去為了 Polr 設定專屬的 Apache 文檔

  1. 將預設的 Apache 網路配置給關閉並刪除index.html
sudo a2dissite 000-default.conf
sudo rm /var/www/html/index.html

2. 設置一個專屬於 Polr 的 Apache 設置

sudo vim /etc/apache2/sites-available/polr.conf

3. 將以下內容貼到上面新增的文檔中

這邊要將example.com替換成個人網域,DocumentRoot 的地方是稍後 clone Polr 的位置

<VirtualHost *:80>
ServerName example.com
ServerAlias example.com
DocumentRoot "/var/www/html/public"
<Directory "/var/www/html/public">
Require all granted
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

4. 將配置新增到 Apache2裡面

sudo a2ensite polr.conf

5. 啟動 Apache2 模組

sudo a2enmod rewrite

6. 重新啟動Apache2

sudo systemctl restart apache2.service

安裝 SSL 證書

大家都知道 http 是不太安全的一個協定,而在 Polr 中內建的協定便是 http ,這時候我們要去安裝 SSL 證書

  1. 安裝 certbot
sudo apt install certbot python-certbot-apache

2. 執行 certbot

sudo certbot

在第一次執行時,會要求你填寫 Email , 以及是否同意 Tos 和參與他們的計畫,再依據個人的想法來填寫即可。

在執行certbot後,他會要你選擇哪一個網址是要進行配置的,以下圖的情況,因為我只有一個網址所以選1就好

接下來會問你要不要證書相關的事情

最後問你要不要重新導向,我個人建議選2

這樣就配置完成了~

安裝 Polr

打開網站,然後打上你剛剛設定的網域+/setup,範例如下

example.com/setup

然後你會進入到下面的畫面中,在以下設定有幾個點需要特別注意一下

在這邊主要是設定你的資料庫,在帳號地方填寫你剛剛新設定的那一組Mysql帳號跟密碼,還有資料庫名稱

這邊從第一個填空依序是做應用名稱、應用協定、網域、是否提供分析跟是否公開與錯誤時該是否重導向。

應用協定部分,在剛才我們有設定了 SSl ,所以我們這邊要改成https:// ,然後網域則是填上剛剛設定的網域,其他部分則依據個人去進行設定

在 Default URL Ending Type 跟 URL Ending Base的地方則是選擇你的網址長度跟編碼形式,我個人是都選則62

在下一個設定則是管理者設定,在這部分填入你的信箱、帳號、密碼等資訊。

接下來是做SMTP Server , 這部分是在於伺服器有狀況或是要寄送郵件時所需要的,可設置可不設置都是可以的。

在最後面的其他設定這邊有一個坑,當你第一次設定的時候,如果選了關閉註冊,這時候系統就會莫名其妙地產生錯誤,所以在這邊需要先把他設定成有條件式的開放註冊。這可以在後面去修改設定檔把它關閉。

在後面的密碼回復等設定就看讀者想怎麼設定,都是可以的。

在最後可以去設定一下頁面的風格,可以按 Screenshots去挑選風格

當全部設定完成,按下提交後等他跑一下,如果成功會出現下面介面

當失敗時,可以去 polr 資料夾底下,那邊有一個.env,文檔中找到APP_DEBUG=false把false改成true然後就可以看到錯問訊息,當知道錯誤後,從文檔中找到POLR_SETUP_RAN=true後,把true改成false就可以重新設定頁面。

而前面提到的申請帳號的權限問題,在這邊也可以直接修改,找到POLR_ALLOW_ACCT_CREATION=1後把1改成0即可完成

功能運行

當完全設定都沒問題時,你可以在網頁中打上你剛剛填上的網域時,便會出現類似下面的網站,他會依據你剛剛的設定去給出不同的頁面。

而在登入之後,可以看到這個畫面,在這個時候你會發現右上角的位置出現你的帳號名稱,這時你就可以開始縮短網址了。

在縮短網址方面有兩種,第一種是貼上網址後直接按縮短,這時他會隨機產生一組網址給你,第二種是自由的去設定(Link options),在設定的地方你可以去填入你自己想要的文字,在按下縮短即可完成。啽Polr同時提供QRcode來讓手機方便進行掃碼

再新增成功後,前往後台便可以看到你剛剛設定的短網址了

而在網址下方可以看到Users,在這邊可以進行添加使用者與管理者權限

總結

這篇文章就到這邊告一個段落,文章從安裝Apache到Mysql、PHP 最後安裝polr縮網址服務。

--

--