數碼中文坊

 取回密碼
 我要註冊
檢視: 53|回覆: 0

[分享] Discuz X[每日建構版本]

[複製連結]
發表於 7 天前 | 顯示全部樓層 |閱讀模式

軟體名稱: Discuz X
軟體版本: 3.5
軟體性質: 共享軟體
原廠網址: http://www.comsenzservice.com/
下載網址: https://www.discuz.net/daily/?dl=DZX-TC_UTF8-v3.5-202003200500-615560ef.zip
對映網址: https://iothk.oo.gd

馬上註冊,結交更多好友,享用更多功能,讓你輕鬆瀏覽論壇。

你需要 登入 才可以下載或檢視,沒有帳號?我要註冊

x
## 暫時不建議普通用戶下載本分支代碼

### **3.5版本說明**

相對於3.4版本,做了以下修改:

#### 1. 資料庫相關變更

3.5版本,支持InnoDB與MyISAM兩種資料庫引擎,在兩種引擎下資料庫都不再支持utf8編碼,轉而支持utf8mb4編碼。

##### 1.1 資料庫表結構的變更:

參考 [scheme-change-without-data-loss.sql](https://gitee.com/oldhuhu/Discuz ... thout-data-loss.sql)
  * 修改了所有的IP位址,改為varchar(45)類型;
  * 在所有記錄IP位址的地方,增加了埠號的記錄;
  * 在pre_common_banned表中,增加了upperip和lowerip兩個VARBINARY(16)類型的欄位,用於記錄IP位址的封禁範圍最大值和最小
  * 將部分欄位改」大「,比如INT改為BIGINT, TEXT改為MEDIUMTEXT等
  * 為支持IPv6,去掉了所有IP1/IP2/IP3/IP4的欄位定義,參考[scheme-change-drop-columns.sql](https://gitee.com/oldhuhu/Discuz ... ge-drop-columns.sql)

##### 1.2 為支持InnoDB相關的變更

對於InnoDB資料庫引擎,還會做如下變更,參考 [scheme-change-innodb.sql](https://gitee.com/oldhuhu/Discuz ... e-change-innodb.sql)
  * 為支持InnoDB,在表pre_common_member_grouppm中增加了一個索引
  * 為支持InnoDB,在表pre_forum_post中,取消了position的auto_increment屬性

在配置文件中,引入了一個新的相關配置項,這個配置項要正確設置。尤其對於升級用戶,否則會導致發帖功能不正常。

```
/*
* 資料庫引擎,根據自己的資料庫引擎進行設置,3.5之後默認為innodb,之前為myisam
* 對於從3.4升級到3.5,並且沒有轉換資料庫引擎的用戶,在此設置為myisam
*/
$_config['db']['common']['engine'] = 'innodb';
```


##### 1.3 為支持utf8mb4相關的變更

對於MyISAM引擎,由於1000個字節的索引長度限制,因此要對一些索引做重新定義,參考 [scheme-change-myisam-utf8mb4.sql](https://gitee.com/oldhuhu/Discuz ... -myisam-utf8mb4.sql)

無論是InnoDB還是MyISAM,所有的表都使用utf8mb4編碼與utf8mb4_unicode_ci,參考 [scheme-change-charset.sql](https://gitee.com/oldhuhu/Discuz ... -change-charset.sql)


#### 2. IP相關變更

在3.5版本中,為了支持IPv6,做了以下變更

##### 2.1 IP位址庫

系統現在支持多個地址庫,通過配置文件中的以下配置項進行選擇:

```
$_config['ipdb']['setting']['fullstack'] = '';    // 系統使用的全棧IP庫,優先級最高
$_config['ipdb']['setting']['default'] = '';    // 系統使用的默認IP庫,優先級最低
$_config['ipdb']['setting']['ipv4'] = 'tiny';    // 系統使用的默認IPv4庫,留空為使用默認庫
$_config['ipdb']['setting']['ipv6'] = 'v6wry'; // 系統使用的默認IPv6庫,留空為使用默認庫
```

地址庫對應的class為 `ip_<地址庫名稱>` ,位於 `source/class/ip` 下面。系統會根據配置自動加載相應的class,相應的class也可以有自己的配置項,其規則為:

```
* $_config['ipdb']下除setting外均可用作自定義擴展IP庫設置選項,也歡迎大家PR自己的擴展IP庫。
* 擴展IP庫的設置,請使用格式:
*         $_config['ipdb']['擴展ip庫名稱']['設置項名稱'] = '值';
* 比如:
*         $_config['ipdb']['redis_ip']['server'] = '172.16.1.8';
```

系統現在內置一個IPv4庫,一個IPv6庫

##### 2.2 IP封禁

現在IP位址封禁,不再使用 `*` 作為通配符,而是使用[子網掩碼(CIDR)](https://cloud.tencent.com/developer/article/1392116)的方式來指定要封禁的地址範圍。

IP封禁的配置,現在保存在pre_common_banned表中,**每次**用戶訪問的時候,都會觸發檢查。現在的檢查效率較高,每次只會產生一個帶索引的SQL查詢(基於VARBINARY類型的大小比較)。對於一般的站點性能不會帶來問題。另外可以啟用Redis緩存,來進一步提高性能。另外還有一個配置項可關閉此功能,使用外部的防火牆等來進行IP封禁管理:

```
$_config['security']['useipban'] = 1; // 是否開啟允許/禁止IP功能,高負載站點可以將此功能疏解至HTTP Server/CDN/SLB/WAF上,降低服務器壓力
```

##### 2.3 IP位址獲取

IP位址獲取,現在默認只信任REMOTE_ADDR,其它的因為太容易仿造,默認禁止。獲取的方式也可以擴展,在配置文件中增加了以下配置項

```
/**
* IP獲取擴展
* 考慮到不同的CDN服務供應商提供的判斷CDN源IP的策略不同,您可以定義自己服務供應商的IP獲取擴展。
* 為空為使用默認體系,非空情況下會自動調用source/class/ip/getter_值.php內的get方法獲取IP位址。
* 系統提供dnslist(IP反解析域名白名單)、serverlist(IP位址白名單,支持CIDR)、header擴展,具體請參考擴展文件。
* 性能提示:自帶的兩款工具由於依賴RDNS、CIDR判定等操作,對系統效率有較大影響,建議大流量站點使用HTTP Server
* 或CDN/SLB/WAF上的IP黑白名單等邏輯實現CDN IP位址白名單,隨後使用header擴展指定服務商提供的IP頭的方式實現。
* 安全提示:由於UCenter、UC_Client獨立性及擴展性原因,您需要單獨修改相關文件的相關業務邏輯,從而實現此類功能。
* $_config['ipgetter']下除setting外均可用作自定義IP獲取模型設置選項,也歡迎大家PR自己的擴展IP獲取模型。
* 擴展IP獲取模型的設置,請使用格式:
*         $_config['ipgetter']['IP獲取擴展名稱']['設置項名稱'] = '值';
* 比如:
*         $_config['ipgetter']['onlinechk']['server'] = '100.64.10.24';
*/
$_config['ipgetter']['setting'] = '';
$_config['ipgetter']['header']['header'] = 'HTTP_X_FORWARDED_FOR';
$_config['ipgetter']['iplist']['header'] = 'HTTP_X_FORWARDED_FOR';
$_config['ipgetter']['iplist']['list']['0'] = '127.0.0.1';
$_config['ipgetter']['dnslist']['header'] = 'HTTP_X_FORWARDED_FOR';
$_config['ipgetter']['dnslist']['list']['0'] = 'comsenz.com';
```

#### 3. 緩存

3.5非常大的增強了對Redis緩存的支持,在使用了Redis的情況下,完全消除了對內存表的使用。包括:

* 所有的原session內存表相關的功能,全部由Redis實現
* setting不再一次性加載,而是分批按需加載
* 對IP封禁的檢測結果進行緩存

推薦所有的站配置並啟用Redis緩存。

由於memcached的功能限制,以上的增強對memcached無效。

#### 4. 支持包括論壇在內在所有功能開關

3.5現在支持幾乎所有功能的開關,管理員甚至可以關閉論壇,只使用門戶。相關的修改請點擊 [PR291](https://gitee.com/ComsenzDiscuz/DiscuzX/pulls/291)


#### 5. 其它改動

* 增加了一個測試框架,可在後台運行,代碼位於 `upload/tests` 下,測試用例可在 `upload/tests/class` 下添加。歡迎大家通過Pull Request提交測試用例
* 修改了安裝程序最後一步的日誌輸出方式,現在整個創建資料庫的過程日誌都可實時顯示
* 不再使用mysql驅動,只使用mysqli
* 內置了function_debug.php文件,通過 `$_config['debug'] = 1` 打開

#### 6. 最低運行環境要求

**安全提示:我們強烈建議您使用仍在開發團隊支持期內的操作系統、Web服務器、PHP、資料庫、內存緩存等軟體,超出支持期的軟體可能會對您的站點帶來未知的安全隱患。**

| 軟體名稱 | 版本要求 | 其他事項                         |
| ------- | ------- | ------------------------------ |
| PHP     | >= 5.6   | 依賴cURL擴展、GD擴展            |
| MySQL   | >= 5.7   | 如使用MariaDB,版本號需 >= 10.2 |

### **簡介**

Discuz! X 官方 Git (https://gitee.com/ComsenzDiscuz/DiscuzX) ,簡體中文 UTF8 版本

### **聲明**
您可以 Fork 本站代碼,但未經許可 **禁止** 在本產品的整體或任何部分基礎上以發展任何派生版本、修改版本或第三方版本用於 **重新分發**

### **相關網站**

[Discuz!官方站](http://www.discuz.net)

### **感謝 Fans**

[DiscuzFans](https://gitee.com/sinlody/DiscuzFans)  [DiscuzLite](https://gitee.com/3dming/DiscuzL)

### **升級方法**
[點擊閱讀](https://gitee.com/ComsenzDiscuz/ ... %B3%95?sort_id=9978)

### **發布版下載**
[點擊下載](https://gitee.com/3dming/DiscuzL/attach_files)

*感謝 DiscuzFans 提供簡體GBK、簡體UTF8、繁體UTF8的打包版*

### **每日構建下載**

Discuz! X提供3.4(穩定版)和正在開發中的3.5(不穩定版本)的每日構建,在有提交的第二天早上,可以下載到簡體GBK、簡體UTF8、繁體BIG5、繁體UTF8的打包版本。

[點擊打開](https://www.discuz.net/daily/)

### **友情提示**
- 本站不再發布其他編碼的版本,請下載後自行通過[轉碼工具](https://gitee.com/ComsenzDiscuz/DiscuzX/attach_files)轉碼,或者下載本站授權的打包版
- Git 版的 Release 版本號不再更新,但 DiscuzFans 的打包版會更新
- 由於 X3.2、X3.3 已停更,X3.4 漏洞和相關修補同樣適用於 X3.2、X3.3 版本,請隨時關注[更新列表](https://gitee.com/ComsenzDiscuz/DiscuzX/commits/master),您可進行手動修補,讓自己的站點時隨刻保持最安全的狀態!

### 截圖
![系統信息]( "系統信息截圖")
你需要登入後才可以回覆 登入 | 我要註冊

本版積分規則

Archiver|禁閉室|手機版|數碼中文坊

GMT+8, 2020-3-30 07:35 AM

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud. | 正體中文:數碼中文坊

快速回覆 返回頂端 返回清單