Apache、MariaDB、PHP 独立安装于 Windows

In the early years, websites built with AppServ were hacked,Could never figure out the reason,Wanted to update the Apache、PHP、But the MySQL version was restricted due to Joomla plugin compatibility issues, so couldn't proceed,Later, there was a need to add another website,Originally planned to switch to XAMPP,但在阅读 XAMPP 官方文档时,赫然看到官方并不建议将此软件用于正式环境,若非得使用,官方雖有建議調整部份設定值,为了提高安全性,但又提醒你,这只能稍微增加一点安全性而已 (好直白的官方啊~哈),因此便动手研究独立安装 Apache、MariaDB、PHP 及 phpMyAdmin。

各套件安裝流程如下

【Apache】

  • Apache Haus Download the compressed file (x64)。
  • 解压缩,先看 readme_first.html 說明
  • Copy the Apache24 directory to the desired location。
  • Open httpd.conf,設定 Define SRVROOT 路徑如 D:\Web\Apache24
  • 在 httpd.conf 找到 Options Indexes FollowSymLinks刪掉 Indexes避免被瀏覽目錄
  • 直接執行 httpd.exe看啟動過程有沒有跳出錯誤之後以瀏覽器瀏覽 localhost看是否正確
  • CMD 輸入httpd.exe -k install”,將 Apache 設成服務 (移除指令為 “httpd.exe -k 卸载”)。

 


【PHP】

PHP 分为 Non Thread Safe(非线程安全)和 Thread Safe(线程安全)两种版本,这里引用两篇文章来说明两者的选择方式:

 

PHP Non Thread Safe 和 Thread Safe 区别 – 歪麦博客” 提到:

Non Thread Safe 就是非线程安全,执行时不进行线程安全检查。

Thread Safe 就是线程安全,执行时会进行线程安全检查,以防止有新请求时启动新线程,耗尽系统资源。

…略

FastCGI 执行方式是以单线程来执行操作,因此不需要进行线程安全检查,去掉线程安全检查反而可以提高执行效率。

而线程安全检查是为 ISAPI 方式的 PHP 准备的,也就是为 IIS 准备的,因为许多 PHP 模块不是线程安全的,所以需要使用线程安全版本的 PHP。

所以,如果是以 FastCGI 执行 PHP ,都建议用 Non Thread Safe 的 PHP (zip安装包)

PS. 建議前往該篇文章查看完整說明

 

PHP Thread Safe and Non-Thread Safe for Windows – Stack Overflow的 Crack 提到

So it really depends on the way that you want to use PHP:

Apache + LoadModule: Thread Safe
Apache + FastCGI: Non-Thread Safe
IIS: Thread Safe
IIS + FastCGI: Non-Thread Safe

PHP manual has nice installation instructions.

AFAIR running PHP with FastCGI is the preferable way, it performs faster and allows for more fine-grained security configuration.

 

  從上面兩篇可以得知使用 FastCGI + Non-Thread Safe 的 PHP 會是比較好的選擇而實際使用的感受我從原本的 Thread Safe 改成 Non Thread Safe 後在瀏覽 Joomla 網站時竟可以感受到頁面開啟速度的提昇讓我有些驚訝

  下面將列出 Non Thread Safe 跟 Thread Safe 的兩種設定方式

 

【PHP – 非线程安全】(推薦)

  • 官方网站 下载非线程安全压缩包。
  • 解压缩,复制目录到目标位置,把 php.ini-production 改 php.ini
  • 開啟 php.ini,修改以下内容:
  • # 搜尋 extension_dir = "ext",改成:
    extension_dir = "D:\Web\php-7.4.3\ext"
    或
    ./ext
    
    # 搜尋 file_uploads = On,改成:
    file_uploads = Off
    # 如果網站沒有用到檔案上傳功能,建議關閉,
    # 有需要使用時再開啟,避免被上傳病毒檔案。
    # 之前我們 ESET 防毒常攔截到網站伺服器被上傳惡意檔案,
    # 直到關閉此設定才沒再發生。
    
    # 搜尋 upload_max_filesize = 2M,改成適合的大小:
    upload_max_filesize = 30M
    # Joomla 4 的建議值為 30M
    
    # 搜尋 allow_url_fopen = On,改成:
    allow_url_fopen = Off
    # 如果網站沒有用到檔案上傳功能,建議關閉,
    # 有需要使用時再開啟,避免被上傳病毒檔案。
    # 之前我們 ESET 防毒常攔截到網站伺服器被上傳惡意檔案,
    # 直到關閉此設定才沒再發生。
    
    # 搜尋 ;date.timezone =,改成:
    date.timezone ="Asia/Taipei"
    # 建議要設,避免部份網站程式的時間有時差。
  • Apache Haus 下載「Mod FCGID for Apache 2.4.x x64」
  • 解壓縮後將 mod_fcgid.so複製到 Apache 的 Modules 底下
  • 開啟 Apache 的 httpd.conf加入下面內容
  • LoadModule fcgid_module modules/mod_fcgid.so
    # 載入 FastCGI 的模組。
    
    # 搜尋 DirectoryIndex,在後面增加:
    index.php
    

接下來有兩個做法一為標準做法一為簡易做法

【FastCGI 設定標準做法】

  • 將 FastCGI 目錄裡 conf/extra 底下的 httpd-fcgid.conf複製到 Apache 的 conf/extra 底下
  • 開啟 httpd-fcgid.conf,修改以下内容:
  • # 搜尋 FcgidInitialEnv PHPRC "C:\\php",改成:
    FcgidInitialEnv PHPRC "D:\\Web\\php-7.4.6"
    # 讓 FastCGI 知道 php.ini 所在目錄。
    # 其他的 FcgidInitialEnv 環境參數可視實際環境修正。
    
    FcgidMaxRequestLen 15360000
    # 此參數可選擇性增加。
    # 根據「壞蛋的密室」文章的說明,
    # 此參數為用戶端送來的最大長度資料,預設值為 139072 (135K)。
    
    # 搜尋 FcgidWrapper "C:/php/php-cgi.exe" .php,改成:
    FcgidWrapper "D:/Web/php-7.4.6/php-cgi.exe" .php
    # FastCGI 設定。
    
  • 開啟 Apache 的 httpd.conf,修改以下内容:
  • # 搜尋 Include conf/extra/httpd-fcgid.conf,
    # 將前面的註解井字號拿掉。
    

【FastCGI 設定簡易做法】

  • 開啟 Apache 的 httpd.conf新增下面內容
  • FcgidInitialEnv PHPRC "D:/Web/php-7.4.6" 
    # 讓 FastCGI 知道 php.ini 所在目錄。
    
    AddHandler fcgid-script .php
    # 設定 FastCGI 處理 php 檔案。
    
    FcgidWrapper "D:/Web/php-7.4.6/php-cgi.exe" .php
    # FastCGI 設定。
    
    FcgidMaxRequestLen 15360000
    # 此參數可選擇性增加。
    # 根據「壞蛋的密室」文章的說明,
    # 此參數為用戶端送來的最大長度資料,預設值為 139072 (135K)。
    
    # 搜尋 Options FollowSymLinks
    # (或 Options Indexes FollowSymLinks,
    # 若未在上面 Apache 步驟中去除 Indexes),在後面增加:
    ExecCGI
    # 讓網頁目錄有執行 CGI 的權限。
    
  • FastCGI 設定完成後可新增一 index.php 檔 (測試用),放D:\Web\Apache24\htdocs,内容如下:
  • <?php
    phpinfo();
    ?>
  • 以瀏覽器開啟 index.php確認可看到 php 資訊
  • 提醒如果在執行 httpd.exe 時有跳出路徑錯誤可檢查 httpd.conf 的絕對路徑的斜線方向請以斜線(/)取代反斜線(\)。我原本使用 D:\Web\php-7.4.6 會跳錯改成 D:/Web/php-7.4.6 才 OK

     

    【PHP – 线程安全】

    • 官方网站 下载线程安全压缩包。
    • 解压缩,复制目录到目标位置,把 php.ini-production 改 php.ini
    • 開啟 php.ini,修改以下内容:
    • # 搜尋 extension_dir = "ext",改成:
      extension_dir = "D:\Web\php-7.4.3\ext"
      
      # 搜尋 file_uploads = On,改成:
      file_uploads = Off
      # 如果網站沒有用到檔案上傳功能,建議關閉,
      # 有需要使用時再開啟,避免被上傳病毒檔案。
      # 之前我們 ESET 防毒常攔截到網站伺服器被上傳惡意檔案,
      # 直到關閉此設定才沒再發生。
      
      # 搜尋 upload_max_filesize = 2M,改成適合的大小:
      upload_max_filesize = 30M
      # Joomla 4 的建議值為 30M
      
      # 搜尋 allow_url_fopen = On,改成:
      allow_url_fopen = Off
      # 如果網站沒有用到檔案上傳功能,建議關閉,
      # 有需要使用時再開啟,避免被上傳病毒檔案。
      # 之前我們 ESET 防毒常攔截到網站伺服器被上傳惡意檔案,
      # 直到關閉此設定才沒再發生。
      
      # 搜尋 ;date.timezone =,改成:
      date.timezone ="Asia/Taipei"
      # 建議要設,避免部份網站程式的時間有時差。
    • 開啟 Apache 的 httpd.conf加入下面內容
    • PHPIniDir "D:\Web\php-7.1.5"
      # 指定 php.ini 存放的資料夾位置。
      
      LoadModule php7_module "D:\Web\php-7.1.5\php7apache2_4.dll"
      # 載入 php 的模組。
      
      AddType application/x-httpd-php .php .php3 .phtml .inc
      # 指定附檔名是 .php .php3 .phtml .inc 的程式都為 php 程式。
      
      AddType application/x-httpd-php-source .phps .phpsource
      # 指定附檔名是 .phps 時,
      # 把內容視為 hightlight 的原始碼輸出到網頁。
      
      # 搜尋 DirectoryIndex,在後面增加:
      index.php
    • 新增一 index.php 檔 (測試用),放D:\Web\Apache24\htdocs,内容如下:
    • <?php phpinfo(); ?>
    • 以瀏覽器開啟 index.php確認可看到 php 資訊

     


    【MariaDB】

    • 官方网站 下載 msi(x64),直接安裝
    • 設 root 密碼
    • 取消勾選【Enable access from remote machines for ‘rootuser】以降低風險
    • 勾【Use UTF8 as default server’s character set】

     


    【phpMyAdmin】

    • Download the compressed file,解压缩,複製到 Apache24\htdocs
    • 打開 PHP 的 php.ini
    • 拿掉 #extension_dir =ext # 註解,”ext” 改成 “D:\Web\php-7.1.5\ext”。
    • 移除 #extension=php_mbstring.dll # 註解
    • 移除 #extension=php_mysqli.dll # 註解

    –2019/01/05 更新

    • 将 config.sample.inc.php 重命名为 config.inc.php。
    • 打开 config.inc.php,找到 $cfg[‘blowfish_secret’],在后面的单引号内填写 32 位数的密码,可以直接使用密码生成器生成。
    • 加入一行 $cfg[‘PmaNoRelation_DisableWarning’] = ‘true’;,以避免 phpMyAdmin 弹出错误信息,要求创建数据表。

     
    【参考链接】

    1 条留言

    留下回复

    您的电子邮件地址不会被公开. 必填项已标注 *

    本网站使用 Akismet 来减少垃圾评论. 了解您的评论数据如何被处理.