阿帕奇、MariaDB、PHP 独立安装于 Windows

  早年使用 AppServ 架的网站遭入侵,一直查不出原因,想要更新 Apache、PHP、MySQL 的版本却又受限于 Joomla 套件的相容性问题而无法进行,之後又要遇到需要另外新增一個網站的需求,本打算改使用 XAMPP,但在阅读 XAMPP 官方文件时,赫然看到官方並不建議將此軟體用於正式環境,若非得使用,官方雖有建議調整部份設定值,以提高安全性,但又提醒你,這只能稍微增加一點點安全性而已 (好直白的官方啊~哈),因此便动手研究独立安装 Apache、MariaDB、PHP 及 phpMyAdmin。

各套件安装流程如下:

【阿帕奇】

  • 阿帕奇之家 下载压缩档 (x64)。
  • 解压缩,先看 readme_first.html 说明。
  • 复制 Apache24 目录到想要的位置。
  • 打开 httpd.conf,设定 Define SRVROOT 路径,如 D:\Web Apache24。
  • 在 httpd.conf 找到 Options Indexes FollowSymLinks,删掉 Indexes,避免被浏览目录。
  • 直接执行 httpd.exe,看启动过程有没有跳出错误,之后以浏览器浏览 localhost,看是否正确。
  • CMD 输入”httpd.exe -k安装”,将 Apache 设成服务 (移除指令为 “httpd.exe -k卸载”)。

 


【PHP】

  PHP 有分成 Non Thread Safe 跟 Thread Safe 两种版本,这边引用两篇文章来说明两者的选择方式:

 

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

None Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查。

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

…略

FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率。

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

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

聚苯乙烯. 建议前往该篇文章查看完整说明。

 

Windows的PHP线程安全和非线程安全 – 堆栈溢出” 的 Crack 提到:

因此,这实际上取决于您要使用PHP的方式:

阿帕奇 + 加载模块: 线程安全
阿帕奇 + 快速CGI: 非线程安全
IIS: 线程安全
IIS + 快速CGI: 非线程安全

PHP手册具有不错的安装说明.

AFAIR与FastCGI一起运行PHP是首选方法, 它执行速度更快,并允许进行更细粒度的安全配置.

 

  从上面两篇可以得知,使用 FastCGI + Non-Thread Safe 的 PHP 会是比较好的选择。而实际使用的感受,我从原本的 Thread Safe 改成 Non Thread Safe 后,在浏览 Joomla 网站时,竟可以感受到页面开启速度的提升,让我有些惊讶。

  下面将列出 Non Thread Safe 跟 Thread Safe 的两种设定方式。

 

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

  • 官方页面 下载 Non Thread Safe 压缩档。
  • 解压缩,复制目录到想要的位置,把 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"
    # 建議要設,避免部份網站程式的時間有時差。
  • 阿帕奇之家 下载「Mod FCGID for Apache 2.4.x x64」。
  • 解压缩后,将 mod_fcgid.so,复制到 阿帕奇 的 Modules 底下。
  • 開啟 阿帕奇 的 httpd.conf,加入下面内容:
  • LoadModule fcgid_module modules/mod_fcgid.so
    # 載入 FastCGI 的模組。
    
    # 搜尋 DirectoryIndex,在後面增加:
    index.php
    

接下来有两个做法,一为标准做法,一为简易做法。

[FastCGI 设置 – 标准做法】

  • 将 FastCGI 目录里 conf/extra 底下的 httpd-fcgid.conf,复制到 阿帕奇 的 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 設定。
    
  • 開啟 阿帕奇 的 httpd.conf,修改下面内容:
  • # 搜尋 Include conf/extra/httpd-fcgid.conf,
    # 將前面的註解井字號拿掉。
    

[FastCGI 设置 – 简易做法】

  • 開啟 阿帕奇 的 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:\网络 Apache24 htdocs目录,内容如下:
  • <?php
    phpinfo();
    ?>
  • 以浏览器开启 index.php ,确认可看到 php 资讯。
  • 提醒:如果在执行 httpd.exe 时,有跳出路径错误,可检查 httpd.conf 的绝对路径的斜线方向,请以斜线(/)取代反斜线(\)。我原本使用 D:\Webphp-7.4.6 会跳错,改成 D:/Web/php-7.4.6 才 OK。

     

    【PHP – 线程安全】

    • 官方页面 下载 Thread Safe 压缩档。
    • 解压缩,复制目录到想要的位置,把 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"
      # 建議要設,避免部份網站程式的時間有時差。
    • 開啟 阿帕奇 的 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:\网络 Apache24 htdocs目录,内容如下:
    • <?php phpinfo(); ?>
    • 以浏览器开启 index.php ,确认可看到 php 资讯。

     


    【MariaDB】

    • 官方页面 下载 msi(x64),直接安裝。
    • 设 root 密码。
    • 取消勾选【Enable access from remote machines for ‘root’ 用户】,以降低风险。
    • 勾【使用UTF8作为默认服务器的字符集】。

     


    【phpMyAdmin】

    • 下载压缩档,解压缩,复制到 Apache24htdocs。
    • 打开 PHP 的 php.ini。
    • 拿掉 #extension_dir = “分机” 的 # 註解,”分机” 改成 “ð:\网络 PHP-7.1.5 分机”。
    • 拿掉 #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”] =“真”;,以避免 phpMyAdmin 跳出错误讯息,要求建立资料表。

     
    【參考連結】

    一个响应

    1. 更新 Apache、MariaDB、PHP | 老森常譚 说: |

      […] appserv 这类快速建置但仅适用于开发环境的套件,改以手动建置Apache、MariaDB 以及 PHP,之后并以每半年更新一次的频率做维护,本篇即为记录更新Apache、MariaDB […]

    发表评论

    请注意:: 评论审核已启用,可能会耽误您的评论. 有没有必要重新提交您的评论.