Clone the project:
git clone https://github.com/alpaca0x0/reurl.git --depth 1 reurl
Edit example files:
# Enter project folder
cd reurl
# Copy config example files
cp config.example.php config.php
cp configs/db.example.php configs/db.php
# Edit config files (choose your own editor)
vim config.php
vim configs/db.php
Import the structure of database:
src/url.sql
Update the blocked domains list (Optional):
cd ./configs/blocked-domains/
./auto.sh
Set http router (e.g. Nginx
):
# Setting router in web server
# For example, nginx:
vim /etc/nginx/conf.d/default.conf
# Route all traffic to router.php in project root path
# p.s. The "root" value set as your own path of project root
# The same goes for other fields...
location ^~ /reurl/ {
root /var/www/html/reurl;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/router.php;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
For docker:
location / {
proxy_pass http://127.0.0.1; # Your proxy
proxy_buffering off;
proxy_set_header X-Remote-Addr $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
}
😁 Have fun.
說明一些關於該專案的架構,僅僅解釋較為主要或有疑慮的部份。
所有流量都會被導向至/router.php
,其稱作Main Router
,再由此路由判斷請求的類型,並將其導向至其類型專屬的子路由(Sub Router
)。
config.php
用於存放該站點的核心參數,如設定站點專案根目錄ROOT
,或是開關DEBUG
或DEV
模式等。init.php
用於初始化站點的核心檔案,會自動的引入config.php
。router.php
主要的路由(Main Router
),所有流量必須經過這,由該檔案將流量導至其他子路由(Sub Router
)。該檔案會自動引入init.php
。
-
api
一些專門用於獲取資料的頁面。captcha
取得驗證碼的值,當然這只能用於 DEV 模式下。
-
assets
前端所會用到的資源,包含常見的 JS、CSS,以及圖片、插件庫等。 -
auth
用於驗證的頁面,通常採用 Ajax 請求,並回應 Json 格式。通常情況下,回應欄位有以下幾種:-
type
作為回應類別,通常有如下幾種常見的類型:success
成功執行warning
請求存在問題,而無法完成error
伺服端錯誤info
單純的顯示訊息
當然這並非固定格式,在某些特定功能中,也會有其獨有的回應格式。
-
status
回應狀態碼,同個功能下,必須是唯一值,用於表明請求的處理狀態,且不能含有空格。例如is_login
或data_not_found
...等。 -
data
用於回傳相關資料,如執行更新請求後,回傳新值等。
當然,若是沒有需要回傳的欄位,該欄位可以為NULL
。 -
message
用於顯示的回應訊息,可以含有任意字元,但通常結尾並不會有標點符號。大多數情況下,該欄位被要求必須設定,但在少數情況,該欄位被允許為NULL
。
-
-
classes
一些核心的功能,以 Class 的方式包裝資料與函式,通常為靜態呼叫。init
在該目錄下的檔案會在初始時自動的被載入。
-
components
一些常用的頁面部件,如header
、footer
等。 -
configs
用於存放設定檔的目錄,其.example
為範例檔案,需要將檔名中的該字節刪除。如db.example.php
修改內容後更名為db.php
。 -
functions
一些核心的函式。init
在該目錄下的檔案會在初始時自動的被載入。
-
libraries
與assets/plugin
不同的點在於,plugin
資源可於前端調用,而libraries
僅供後端使用。 -
pages
存放站點的主要頁面。 -
routers
用於存放Sub Router
的目錄。 -
src
用於存放站點架設所需的資源,該目錄並未有嚴格的規定,總之...有需要就塞。
Tocas-UI
(v4.2.4)Animate.css
(v4.1.1)
Vue3
(v3.0.2)Sweetalert2
(v11.6.16)Ajax
(Jquery-ajax-only
fromjquery-builder
)