建議
本篇的目的, 是在Windows之下架設Apache+MySQL+PHP。
但在開始之前,有一良心的建議 : WAMP其實爛爛的,尤其是當多人連線進來時,常造成Apache無法連線成功,且效能非常的差。再加上Windows版的MySQL,當儲存的資料很大時(超過500萬筆資料),也常會啟動失敗。所以並不適合用於公司的網站。
若真的沒有多餘的電腦安裝Linux時,建議在Windows裏加開VMWare,然後於VM中架設LAMP,效能佳且穩定。
Linux一直是初學者的痛,所以只好撰寫此篇教學一下,日後若有基礎,一定要改成LAMP。
架站的誤解
架設網站是許多人覺的遙不可及的事,需要一台電腦24小時開著,需要大量的頻寬,需要煩雜的設定。就以上的煩腦一一解說。
1. 北極熊不是你殺的 :
一台電腦24小時開著,平時都會進入 idle 的狀態, 耗電量不過超過50瓦。一度電是1000瓦/小時。一天24 小時共耗電 50*24/1000=1.2度。
一個月的電費 : 一度電以5元計算,一個月約1.2度*30天*5元=180元
電腦開開關關,開機時的突波,易造成電腦的損壞,放著不關,反而活的更久。
北極熊絕對不是因為你用電腦殺掉的,因為你也花不起那麼多錢啦。
2. 頻寬夠不夠
家裏一般都使用 100M/40M的頻寬,其實都夠好幾個人同時玩遊戲了。
現在電信公司一直在推手機 5G 上網,極速可以達到 1G bit。本人試用了一個月,其實最快只能達到500M,是有比較快啦,但我也想不出有什麼東西需要那麼快?
再請問一下,如果非要升級到 5G 的話,那麼為什麼家裏的網路線不用申級到1000M??
3. 複雜的設定
設定很複雜這倒是真的,這也是本篇出現的原因,教你一步一步完成。
Web Server種類
網站架設,初步分為二種,一種是IIS,一種是Apache。
IIS : 由微軟推出,使用多執行緒處理多人連線,所以非常不穩定且易當機, 安全性又差。不過台灣因資訊非常落後,大都用此方式架站,由其是政府部門。
Apache : 使用多行程處理多人連線,系統穩定,安全性極佳,但設定較為煩雜。國外大都使用這種方式架站。
架設網頁伺服器最終極的目標,就是在Linux下安裝Apache、MySQL、PHP,簡稱為LAMP。但Linux的門檻對初學者而言太高了,所以可以改成 WAMP(Windows/Apache/MySQL/PHP)。
本篇以 WampServer 套件作為說明,此套件比較穩定。而市面上亦有其他套件如 AppServer,XAMPP等,穩定度不是很好,不建議使用。
作業系統
請注意, WAMP自 3.2.3 開始, 僅能安裝在Win10, 不支援Win7作業系統.
安裝先期作業
Visual C++套件
Win10更新後,並不需安裝Visual C++套件,請跳過此段。
早期 WampServer 的版本可以在 Win7 安裝,但需先安裝 Visual C++套件。WampServer 使用 Visual c++ redistributable packs 編譯,並需要有這些套件才能執行。如果 Win7 沒有 VC 這些套件,就會出現如MSVCR120.dll,VCRUNTIME140.dll之類的錯誤。
假如系統有安裝Visual Studio 2017/2019的話,這些套件都已安裝完成,所以不會出現上面的錯誤。
但如果沒安裝Visual Studio的話, 請先到如下網站 http://wampserver.aviatechno.net/ 下載最下方的 All VC Redistribuable Packages (x86_x64) (32 & 64bits),下載完解開後,一個一個安裝即可。
底下的程式,可檢查系統欠缺什麼軟体
http://wampserver.aviatechno.net/files/tools/check_vcredist.exe
NotePad++編輯器安裝
安裝WampServer後,需作一些設定,建議先安裝 notepad++ 來取代記事本。而在製作網頁時,也需使用瀏覽器進行預覽測試,建議使用Chrome。
WampServer 安裝包安裝
請先到 http://www.wampserver.com/en/ 下載WampServer安裝程式,目前最新版本為 3.2.6
安裝時會詢問要安裝的軟体,一切按照預設,只有MySQL需變更版本,請改選 MySQL 8.0.27的版本。
然後一直按下一步,直到詢問是否使用其他瀏覽器,點選 yes,再選取
C:\Program Files\Google\Chrome\Application\chrome.exe。
然後會詢問是否使用其他的編輯器,也是選 yes,再選 C:\Program Fiels\Notepad++\notepad++.exe
啟動Wamp
安裝完後, 點選桌面的WampServer64二下, 即可開始運作, 並於工作列右下角就會出現WAMP的圖示,
Apache 網頁目錄設定
在右下角綠色圖示按左鍵/apache/httpd.conf,搜詢DocumentRoot,修改如下,
並將+Indexes刪除,然後加入 Require all granted。
DocumentRoot "d:/server/web" <Directory "d:/server/web/"> #Options+Indexes+FollowSymLinks +Multiviews Options +FollowSymLinks +Multiviews AllowOverride all #Require local Require all granted </Directory>
apache/httpd-vhosts.conf修改成如下
<VirtualHost *:80> ServerName localhost ServerAlias localhost DocumentRoot "d:/server/web" <Directory "d:/server/web/"> #Options+Indexes+Includes +FollowSymLinks +MultiViews Options +FollowSymLinks +MultiViews AllowOverride All #Require local Require all granted </Directory> </VirtualHost>
上述的路徑 “d:/server/web”,也可以寫成 “d:\server\web”,是我們撰寫網頁的根目錄,所以需使用檔案總管手動建立此路徑。
“\” 是 Windows 的路徑分隔符號,”/” 則是 Linux 的路徑分隔符號。因 Apache 是以 Linux 為設計基礎,所以習慣上都使用”/”。
改好儲存後。點選右下角綠色圖示,選擇 restart all services。
測試
致於 PHP 到底有沒有真的成功運作呢? 請於 d:\server\web 之下,編寫 info.php檔案,內容如下
<?php phpinfo(); ?>
儲存後,打開瀏覽器,網址輸入 http://localhost/info.php,如果有看到如下畫面,表示PHP成功執行了。
環境變數path
等會需使用到 mysql 指令,使用前需先設定系統環境變數 path, 請於 path 新增如下路徑
C:\wamp64\bin\mysql\mysql8.0.27\bin;.................
更新MySQL版本
Wampserver 所使用的MySQL版本,通常比官網發行的版本還要低。到2022年6月止,MySQL官網已發佈 8.0.29的版本,但WampServer還在使用8.0.27。MySQL 8.0.29 是歷史上的一大變革,與8.0.27有著很大的差異,所以建議安裝 8.0.29。
如果要安裝 8.0.29,首先要將WampServer的MySQL 3306 port給讓出來。請由右下角綠色圖示點選 MySQL/my.ini,將文件檔裏面三個 3306的數字,全改成 3308。儲存後,再執行 start all services。然後再請參照 MySQL8.0安裝及環境 此篇文章,安裝最新的8.0.29版本。當然如果要使用wamp預設的mysql,則不用變更。
[client] #port=3306 port=3308 socket=/tmp/mysql.sock ...... [wampmysqld64] ;skip-grant-tables ;shared-memory=on default_authentication_plugin=mysql_native_password #port=3306 port=3308 socket=/tmp/mysql.sock ...... [mysqld] default_authentication_plugin=mysql_native_password #port=3306 port=3308
Default DBMS None警告
上述將 MySQL 改成 3308 後,WAMP 會出現找不到預設 3306 的資料庫警告。此時需將 c:\wamp64下的 wampmanager.conf 打開,然後將 mysqlDefaultPort 及 mysqlPortUsed 全改為 3308
mysqlDefaultPort = "3308" mysqlPortUsed = "3308"
儲存後,將 wamp 退出(Exit) 再重新執行即可。請注意,Restart all Service 無效喔。
開機自動啟動Apache/MySQL 服務程式
重新開機後,WAMP 並不會自動啟動,需登入系統後按下桌面的 wampserver64 管理程式才會啟動Service。所以如果希望電腦開機完成後就自動啟動Apache/MySQL Service,請先使用系統管理者身分進入DOS,然後執行如下指令。
sc config wampapache64 start= auto sc config wampmysqld64 start= auto
開機自動啟動管理程式
若要於登入系統後就執行桌面的wampserver64管理程式,需複製其捷徑貼於 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
不過WAMP一經設定完成後,日後也不太需要此管理程式了,所以這步驟可以省略。
資料庫備份
假設MySQL裏面有一個 wordpress 資料庫,將其備份的方法如下
mysqldump -u 帳號 -p --routines wordpress > wordpress_20000610.sql
資料庫還原
備份的檔案 wordpress_20220610.sql, 可以使用下面指令還原到資料庫中。
mysql -u 帳號 -p --default-character-set=utf8 wordpress < wordpress_20220610.sql
但如果在Linux備份,然後在Windows下還原,有可能會報ERROR 1064(42000)的語法錯誤。這其中的一個原因是匯出的預設編碼跟匯入的預設編碼不一樣所致。此時就要加入 –default-character-set=utf8 (最好在mysqldump 時也一併加入)
如果要還原的資料庫相當大就會出現連線逾時的錯誤,必需更改如下設定
[wampmysqld64] max_allowed_packet = 5000000M
登入資料庫
如果使用 WampServer 所附加的 mysql 8.0.27版本,預設登入的帳號為 root,而且不用密碼。所以在開始撰寫網頁前,需手動新增帳號及權限,請在DOS命令模式下輸入
mysql -u root
root登入, 不用密碼, 但僅能在本機登入, 登入後再新增帳號及權限
mysql> use mysql; Database changed mysql> create user 'thomas'@'%' identified by '123456'; Query OK, 0 rows affected (0.03 sec) mysql> grant all privileges on *.* to 'thomas'@'%'; Query OK, 0 rows affected (0.03 sec) mysql>exit;
exit登出資料庫後, 再使用新帳號登入測試. 請依如下監色的指令測試看看
C:\Users\student>mysql -u thomas -p Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.21 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.08 sec) mysql>
加速啟動
將http.conf啟動如下二個設定
EnableMMAP on
EnableSendfile on
將php.ini啟動如下設定
realpath_cache_size= 4m
設定好重新啟動apache
phpMyAdmin
資料庫操作, 有些人喜愛用 phpmyadmin, 但這個網頁版的軟体實在難用到靠北. 建議使用Workbench來操作 https://dev.mysql.com/downloads/workbench/
若堅持使用phpmyadmin的話, 看如下說明. 若使用workbench的人請跳過
連線 http://localhost/phpmyadmin , 第一次登入帳號為root, 密碼為空白.
登出
phpmyadmin沒有登出的選項, 可以將 wamp64\apps\phpmyadmin4.6.4\config.inc.php裏面的
$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’; 改為如下
$cfg[‘Servers’][$i][‘auth_type’] = ‘http’;
修改密碼
進入 使用者帳號/選取root的編輯權限, 再選取修改密碼。注意 root 預設僅能使用localhost 登入