IIS部署php项目——discuz论坛
1、安裝CgiModule模塊
首先,IIS要部署php項目,需要CgiModule模塊的支持,所以首先我們要確認這個模塊是否存在
打開IIS管理器:
我這里是存在的:
如果不存在,可以自行在控制面板=》程序與功能=》啟用或者關閉windows功能:
2、下載安裝PHP和discuz
PHP和discuz可以前往官網下載
PHP官網:https://www.php.net/downloads
discuz應用中心:https://addon.dismall.com/
discuz包下載地址:https://www.dismall.com/thread-73-1-1.html
百度云:https://pan.baidu.com/s/1HvkBASRkNDR4idppCHSbMw (提取碼: yff2)(這個是本文用到的版本)
注:貌似這個地址會被百度網盤和諧掉,我不知道為什么,如果這個下載不了,那就只能去上面的discuz包下載地址去下載x3.4版本的包,如果discuz包下載地址也進不去,那就只能通過上面的discuz應用中心地址頁面最下面的Discuz程序下載鏈接去Discuz官方論壇找了。
3、準備工作
mysql:
地址:192.168.18.129
端口:3306
用戶:root
密碼:123456
數據庫:ultrax(論壇)、ucenter(用戶中心)這兩個數據庫實現創建好
redis:
地址:192.168.18.129
端口:6379
通過上面的百度云下載php和discuz的壓縮包,將php-5.6.38-nts-Win32-VC11-x64.zip解壓到D:php,作為php的安裝目錄,進入安裝目錄,復制一份php.ini-production,重命名為php.ini,使用文本打開后,修改配置并啟用一下模塊(去掉前面的分號):
#取消以下配置參數前面的分號和修改值
extension_dir = "D:phpext" #設置php模塊路徑為同目錄下ext文件夾
date.timezone = Asia/Shanghai #設置時區為中國時區
cgi.force_redirect= 0 #開啟以CGI方式運行php
fastcgi.impersonate= 1
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
discuz壓縮包中upload的就是discuz的項目文件,將它解壓出來,我這里的解壓目錄是C:inetpubwwwrootdiscuz
使用文本編輯打開config中的config_global_default.php和config_ucenter_default.php,然后分別配置數據庫信息和redis
編輯config_global_default.php,并重命名為config_global.php:
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: config_global_default.php 36362 2017-02-04 02:02:03Z nemohou $
*/
$_config = array();
// ---------------------------- CONFIG DB ----------------------------- //
// ---------------------------- 數據庫相關設置---------------------------- //
/**
* 數據庫主服務器設置, 支持多組服務器設置, 當設置多組服務器時, 則會根據分布式策略使用某個服務器
* @example
* $_config['db']['1']['dbhost'] = 'localhost'; // 服務器地址
* $_config['db']['1']['dbuser'] = 'root'; // 用戶
* $_config['db']['1']['dbpw'] = 'root';// 密碼
* $_config['db']['1']['dbcharset'] = 'gbk';// 字符集
* $_config['db']['1']['pconnect'] = '0';// 是否持續連接
* $_config['db']['1']['dbname'] = 'x1';// 數據庫
* $_config['db']['1']['tablepre'] = 'pre_';// 表名前綴
*
* $_config['db']['2']['dbhost'] = 'localhost';
* ...
*
*/
$_config['db'][1]['dbhost'] = '192.168.18.129';
$_config['db'][1]['dbuser'] = 'root';
$_config['db'][1]['dbpw'] = '123456';
$_config['db'][1]['dbcharset'] = 'utf8';
$_config['db'][1]['pconnect'] = 0;
$_config['db'][1]['dbname'] = 'ultrax';
$_config['db'][1]['tablepre'] = 'pre_';
/**
* 數據庫從服務器設置( slave, 只讀 ), 支持多組服務器設置, 當設置多組服務器時, 系統根據每次隨機使用
* @example
* $_config['db']['1']['slave']['1']['dbhost'] = 'localhost';
* $_config['db']['1']['slave']['1']['dbuser'] = 'root';
* $_config['db']['1']['slave']['1']['dbpw'] = 'root';
* $_config['db']['1']['slave']['1']['dbcharset'] = 'gbk';
* $_config['db']['1']['slave']['1']['pconnect'] = '0';
* $_config['db']['1']['slave']['1']['dbname'] = 'x1';
* $_config['db']['1']['slave']['1']['tablepre'] = 'pre_';
* $_config['db']['1']['slave']['1']['weight'] = '0'; //權重:數據越大權重越高
*
* $_config['db']['1']['slave']['2']['dbhost'] = 'localhost';
* ...
*
*/
$_config['db']['1']['slave'] = array();
//啟用從服務器的開關
$_config['db']['slave'] = false;
/**
* 數據庫 分布部署策略設置
*
* @example 將 common_member 部署到第二服務器, common_session 部署在第三服務器, 則設置為
* $_config['db']['map']['common_member'] = 2;
* $_config['db']['map']['common_session'] = 3;
*
* 對于沒有明確聲明服務器的表, 則一律默認部署在第一服務器上
*
*/
$_config['db']['map'] = array();
/**
* 數據庫 公共設置, 此類設置通常對針對每個部署的服務器
*/
$_config['db']['common'] = array();
/**
* 禁用從數據庫的數據表, 表名字之間使用逗號分割
*
* @example common_session, common_member 這兩個表僅從主服務器讀寫, 不使用從服務器
* $_config['db']['common']['slave_except_table'] = 'common_session, common_member';
*
*/
$_config['db']['common']['slave_except_table'] = '';
/**
* 內存服務器優化設置
* 以下設置需要PHP擴展組件支持,其中 memcache 優先于其他設置,
* 當 memcache 無法啟用時,會自動開啟另外的兩種優化模式
*/
//內存變量前綴, 可更改,避免同服務器中的程序引用錯亂
$_config['memory']['prefix'] = 'discuz_';
/* reids設置, 需要PHP擴展組件支持, timeout參數的作用沒有查證 */
$_config['memory']['redis']['server'] = '192.168.18.129';
$_config['memory']['redis']['port'] = 6379;
$_config['memory']['redis']['pconnect'] = 1;
$_config['memory']['redis']['timeout'] = 0;
$_config['memory']['redis']['requirepass'] = '';
/**
* 是否使用 Redis::SERIALIZER_IGBINARY選項,需要igbinary支持,windows下測試時請關閉,否則會出>現錯誤Reading from client: Connection reset by peer
* 支持以下選項,默認使用PHP的serializer
* [重要] 該選項已經取代原來的 $_config['memory']['redis']['igbinary'] 選項
* Redis::SERIALIZER_IGBINARY =2
* Redis::SERIALIZER_PHP =1
* Redis::SERIALIZER_NONE =0 //則不使用serialize,即無法保存array
*/
$_config['memory']['redis']['serializer'] = 1;
$_config['memory']['memcache']['server'] = ''; // memcache 服務器地址
$_config['memory']['memcache']['port'] = 11211; // memcache 服務器端口
$_config['memory']['memcache']['pconnect'] = 1; // memcache 是否長久連接
$_config['memory']['memcache']['timeout'] = 1; // memcache 服務器連接超時
$_config['memory']['apc'] = 0; // 啟動對 APC 的支持
$_config['memory']['apcu'] = 0; // 啟動對 APCu 的支持
$_config['memory']['xcache'] = 0; // 啟動對 xcache 的支持
$_config['memory']['eaccelerator'] = 0; // 啟動對 eaccelerator 的支持
$_config['memory']['wincache'] = 0; // 啟動對 wincache 的支持
$_config['memory']['yac'] = 0; //啟動對 YAC 的支持
$_config['memory']['file']['server'] = ''; // File 緩存存放目錄,如設置為 data/cache/filecache ,設置后啟動 File 緩存
// 服務器相關設置
$_config['server']['id'] = 1; // 服務器編號,多webserver的時候,用于標識當前服務器的ID
// 附件下載相關
//
// 本地文件讀取模式; 模式2為最節省內存方式,但不支持多線程下載
// 1=fread 2=readfile 3=fpassthru 4=fpassthru+multiple
$_config['download']['readmod'] = 2;
// 是否啟用 X-Sendfile 功能(需要服務器支持)0=close 1=nginx 2=lighttpd 3=apache
$_config['download']['xsendfile']['type'] = 0;
// 啟用 nginx X-sendfile 時,論壇附件目錄的虛擬映射路徑,請使用 / 結尾
$_config['download']['xsendfile']['dir'] = '/down/';
// 頁面輸出設置
$_config['output']['charset'] = 'utf-8'; // 頁面字符集
$_config['output']['forceheader'] = 1; // 強制輸出頁面字符集,用于避免某些環境亂碼
$_config['output']['gzip'] = 0; // 是否采用 Gzip 壓縮輸出
$_config['output']['tplrefresh'] = 1; // 模板自動刷新開關 0=關閉, 1=打開
$_config['output']['language'] = 'zh_cn'; // 頁面語言 zh_cn/zh_tw
$_config['output']['staticurl'] = 'static/'; // 站點靜態文件路徑,“/”結尾
$_config['output']['ajaxvalidate'] = 0; // 是否嚴格驗證 Ajax 頁面的真實性 0=關閉,1=打開
$_config['output']['iecompatible'] = 0; // 頁面 IE 兼容模式
// COOKIE 設置
$_config['cookie']['cookiepre'] = 'discuz_'; // COOKIE前綴
$_config['cookie']['cookiedomain'] = ''; // COOKIE作用域
$_config['cookie']['cookiepath'] = '/'; // COOKIE作用路徑
// 站點安全設置
$_config['security']['authkey'] = 'asdfasfas'; // 站點加密密鑰
$_config['security']['urlxssdefend'] = true; // 自身 URL XSS 防御
$_config['security']['attackevasive'] = 0; // CC 攻擊防御 1|2|4|8
$_config['security']['querysafe']['status'] = 1; // 是否開啟SQL安全檢測,可自動預防SQL注入攻擊
$_config['security']['querysafe']['dfunction'] = array('load_file','hex','substring','if','ord','char');
$_config['security']['querysafe']['daction'] = array('@','intooutfile','intodumpfile','unionselect','(select', 'unionall', 'uniondistinct');
$_config['security']['querysafe']['dnote'] = array('/*','*/','#','--','"');
$_config['security']['querysafe']['dlikehex'] = 1;
$_config['security']['querysafe']['afullnote'] = 0;
$_config['security']['creditsafe']['second'] = 0; // 開啟用戶積分信息安全,可防止并發刷分,滿足 times(次數)/second(秒) 的操作無法提交
$_config['security']['creditsafe']['times'] = 10;
$_config['admincp']['founder'] = '1'; // 站點創始人:擁有站點管理后臺的最高權限,每個站點可以設置 1名或多名創始人
// 可以使用uid,也可以使用用戶名;多個創始人之間請使用逗號“,”分開;
$_config['admincp']['forcesecques'] = 0; // 管理人員必須設置安全提問才能進入系統設置 0=否, 1=是[安全]
$_config['admincp']['checkip'] = 1; // 后臺管理操作是否驗證管理員的 IP, 1=是[安全], 0=否。僅在管理員無法登陸后臺時設置 0。
$_config['admincp']['runquery'] = 0; // 是否允許后臺運行 SQL 語句 1=是 0=否[安全]
$_config['admincp']['dbimport'] = 1; // 是否允許后臺恢復論壇數據 1=是 0=否[安全]
/**
* 系統遠程調用功能模塊
*/
// 遠程調用: 總開關 0=關 1=開
$_config['remote']['on'] = 0;
// 遠程調用: 程序目錄名. 出于安全考慮,您可以更改這個目錄名, 修改完畢, 請手工修改程序的實際目錄
$_config['remote']['dir'] = 'remote';
// 遠程調用: 通信密鑰. 用于客戶端和本服務端的通信加密. 長度不少于 32 位
// 默認值是 $_config['security']['authkey'] 的 md5, 您也可以手工指定
$_config['remote']['appkey'] = md5($_config['security']['authkey']);
// 遠程調用: 開啟外部 cron 任務. 系統內部不再執行cron, cron任務由外部程序激活
$_config['remote']['cron'] = 0;
// $_GET|$_POST的兼容處理,0為關閉,1為開啟;開啟后即可使用$_G['gp_xx'](xx為變量名,$_GET和$_POST集合的所有變量名),值為已經addslashes()處理過
$_config['input']['compatible'] = 1;
// Addon Setting
//$_config['addonsource'] = 'xx1';
//$_config['addon'] = array(
// 'xx1' => array(
// 'website_url' => 'http://127.0.0.1/AppCenter',
// 'download_url' => 'http://127.0.0.1/AppCenter/index.php',
// 'download_ip' => '',
// 'check_url' => 'http://127.0.0.1/AppCenter/?ac=check&file=',
// 'check_ip' => ''
// )
//);
?>
config_global.php
編輯config_ucenter_default.php并重命名為config_ucenter.php:
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: config_ucenter_default.php 11023 2010-05-20 02:23:09Z monkey $
*/
// ============================================================================
define('UC_CONNECT', 'mysql'); // 連接 UCenter 的方式: mysql/NULL, 默認為空時為 fscoketopen(), mysql 是直接連接的數據庫, 為了效率, 建議采用 mysql
// 數據庫相關 (mysql 連接時)
define('UC_DBHOST', '192.168.18.129'); // UCenter 數據庫主機
define('UC_DBUSER', 'root'); // UCenter 數據庫用戶名
define('UC_DBPW', '123456'); // UCenter 數據庫密碼
define('UC_DBNAME', 'ucenter'); // UCenter 數據庫名稱
define('UC_DBCHARSET', 'utf8'); // UCenter 數據庫字符集
define('UC_DBTABLEPRE', '`ucenter`.uc_'); // UCenter 數據庫表前綴
define('UC_DBCONNECT', '0'); // UCenter 數據庫持久連接 0=關閉, 1=打開
// 通信相關
define('UC_KEY', 'yeN3g9EbNfiaYfodV63dI1j8Fbk5HaL7W4yaW4y7u2j4Mf45mfg2v899g451k576'); // 與 UCenter 的通信密鑰, 要與 UCenter 保持一致
define('UC_API', 'http://localhost/ucenter/branches/1.5.0/server'); // UCenter 的 URL 地址, 在調用頭像時依賴此常量
define('UC_CHARSET', 'utf-8'); // UCenter 的字符集
define('UC_IP', '127.0.0.1'); // UCenter 的 IP, 當 UC_CONNECT 為非 mysql 方式時, 并且當前應用服務器解析域名有問題時, 請設置此值
define('UC_APPID', '1'); // 當前應用的 ID
// ============================================================================
define('UC_PPP', '20');
?>
config_ucenter.php
同時,將C:inetpubwwwrootdiscuz目錄權限添加到Everyone,右鍵C:inetpubwwwrootdiscuz,選擇【安全】選項卡,添加用戶Everyone,并給予可讀可寫的權限;
4、IIS部署discuz
新建站點:
添加模塊映射,請求路徑:*.php 模塊:FastCgiModule 可執行文件:D:phpphp-cgi.exe D:php是php的安裝目錄
添加默認文檔:index.php
運行站點之后,打開瀏覽器輸入http://localhost:82 ,就可以打開discuz的安裝向導了
同意之后,進入環境檢查頁面,看頁面是否全部都是綠的的勾勾,是的話進入下一步,不是則逐個處理:
設置運行環境,我這里選擇【全新安裝 Discuz! X (含 UCenter Server)】
安裝數據庫,這個配置是前面我們配置過了,所以只需要添加管理員賬號即可:
點擊下一步即開始安裝:
到這里discuz安裝即完成了,可以在瀏覽器直接輸入http://localhost:82進入,我們還可以使用上面添加的管理員賬號進入http://localhost:82/admin.php進入后臺管理員頁面,可以進行人員管理,郵件設置等等功能,還能檢驗discuz安裝是否完善等等,這就是后臺操作的東西了:
總結
以上是生活随笔為你收集整理的IIS部署php项目——discuz论坛的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bzoj4636: 蒟蒻的数列
- 下一篇: 从零开始入门 K8s | 理解容器运行时