轉載: https://blog.csdn.net/YOYOYOHUI/article/details/81433894
之前開發一直都是用的php集成環境(phpstudy,xampp等),沒有嘗試過使用php+mysql+apache在本地獨立搭建PHP運行環境,所以今天突然想試着搭建一下。首先我們需要的搭建工具有:
- windows操作系統(我的電腦是win10)
- apache
- MySQL
- php
1.Apache的安裝:
apache的下載地址http://www.apachelounge.com/download/,根據你的電腦配置下載
根據你的電腦配置來下載是32位的還是64位的。這里我在D盤創建了一個wamp的文件夾,將下載好的apache解壓在該目錄下。接下來以管理員的身份運行cmd,然后一步步進入到d:\wamp\Apache\bin目錄,在該目錄下執行httpd -k install 命令,
我第一次執行httpd -k install 安裝命令是遇到了上圖的問題,那是應為在httpd.conf配置文件中的默認路徑是錯誤的,你手動改寫成你實際路徑即可。
過程中我也遇到了apache不能安裝的情況,后來查了一下是之前安裝的apache已經被設置為系統服務,刪除即可。
刪除操作如下(注意也是以管理員身份操作):
操作:在開始啟動欄輸入services.msc,打開系統服務列表:如圖
當然期間我也遇到其他的問題:
右鍵上圖中的Apache2.4-》屬性
發現可執行文件的路徑是錯誤的,還是之前集成環境的路徑(當然這里已經是我修改過后的)。
這里是可修改的,方式如下:
開始啟動搜索欄中輸入"regedit"打開注冊表 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 下找到所需的服務Apache2.4,將其 "ImagePath"鍵值更改為實際路徑即可。當然這里的介紹只是針對你的apache啟動不了的情況,如果你執行了
sc delete apache2.4
這條命令,你是不用執行以上操作的。當你執行完httpd -k install,出現以下內容時,說明你本地的apache已經安裝成功了
紅框中的錯誤根據我的判斷是可以忽略的,
當然你也可以解決出現這種錯誤:
localhost.localdomain. Set the 'ServerName' directive globally to suppress this message apache 啟動出現這種錯誤的解決方法: 將 apache 的配置文件httpd.conf中的 ServerName 改成可用域名或如下配置 ServerName localhost:80
你在瀏覽器中輸入http://localhost,如果出現以下頁面,說明你的apache已經安裝成功了。
安裝參考鏈接參考鏈接
2.php的安裝
下載地址:https://windows.php.net/downloads/releases/
然后將下載的文件解壓到wamp目錄下的php文件夾(不要下載非線程安全的版本,里面沒有phpX(5,7)apache2_4.dll的拓展文件),配置apache的時候要用到。
3.下載MySQL
接下來就是下載MySQL鏈接地址https://dev.mysql.com/downloads/mysql/,
我是下載的MySQL5.7版本的,根據你的操作系統下載32bit或者64bit
將下載的文件解壓到wamp目錄下的mysql文件夾。
4.修改配置文件
打開D:/wamp/apache/conf文件夾下的httpd.conf文件
找到#LoadModule xml2enc_module modules/mod_xml2enc.so這一行,在這一行下面添加一下內容
PHPIniDir "C:/wamp/php5.6/"
LoadModule php5_module "C:/wamp/php5.6/php5apache2_4.dll" (注意點: 如果是安裝的php7以上版本,則這里需要修改php7_module)
然后再找到 AddType application/x-gzip .gz .tg 這一行再下面添加
AddType application/x-httpd-php .php
apache的配置算是完成了。
然后再打開D:/wamp/php 文件夾下的php.ini-developement文件的文件名改為php.ini,然后對文件進行編輯,
; extension_dir = "./"
; On windows:
extension_dir = "d:/wamp/php5.6/ext"
date.timezone = Asia/Shanghai
取消此行的注釋,並且填寫ext文件夾的實際路徑.
然后就是開啟一些php的擴展文件
接下來就是配置MySQL了,打開進入到D:/wamp/mysql目錄下新建my.ini配置文件,貼入一下內容
[mysql] # 設置mysql客戶端默認字符集 default-character-set=utf8 [mysqld] #設置3306端口 port = 3306 # 設置mysql的安裝目錄 basedir=D:\wamp\mysql # 設置mysql數據庫的數據的存放目錄 datadir=D:\wamp\mysql\data # 允許最大連接數 max_connections=200 # 服務端使用的字符集默認為8比特編碼的latin1字符集 character-set-server=utf8 # 創建新表時將使用的默認存儲引擎 default-storage-engine=INNODB
以管理員的身份運行cmd,進入到D:/wamp/mysql/bin目錄下安裝MySQL服務,輸入mysqld install(注意:是mysqld不是mysql)
命令行顯示該行,表示安裝成功
接下來輸入mysqld --initialize創建data文件夾,否則后面無法啟動MySQL服務;
然后輸入net start mysql就可以啟動MySQL服務了
輸入mysql -u root -p,然后輸入密碼即可連接MySQL服務
可能會出現以下錯誤
這里現在下載的MySQL版本默認都不支持無密碼驗證,需要我們手動設置修改,打開my.ini文件,在文件末尾加上一句:
skip-grant-tables
然后重啟MySQL(net stop mysql/net start mysql),此時可以不用密碼進行連接,但許多功能受到了限制。先連接MySQL,然后選擇user數據庫修改root用戶的密碼。
update user set authentication_string=password("你設置的密碼") where user = "root";
斷開MySQL連接,將設置文件my.ini文件里剛剛加入的skip-grant-tables刪除,重啟MySQL服務,使用你設置的密碼登陸。
涉及點:
1. 創建一個MySQL用戶
create user exuser@'%' identified by 'exPass@352';
mysql> show create user xing@'%'; +-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | CREATE USER for xing@% | +-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | CREATE USER 'xing'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK | +-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
create user tt@'%' identified by '123456' password expire interval 30 day; //創建一個有過期時間的賬號
select user,host,password_expired,password_last_changed,password_lifetime from user; //確定最后一次密碼修改時間 show global variables like 'default_password_lifetime'; //查看密碼過期時間 show create user tstuser@'localhost'; //確定用戶是不是用的mysql全局的密碼過期策略 最終確定是否密碼過期
修改密碼以能夠在客戶端登陸:set password for root@localhost = password('123'); 修改root密碼永不過期:ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
2. PHP文件解析問題
剛開始安裝成功之后,訪問的時候Apache並不能解析PHP文件
#LoadModule vhost_alias_module modules/mod_vhost_alias.so //去除注釋 LoadModule php5_module "D:/Develop/PHP/php5apache2_2.dll" //解析PHP文件 PHPIniDir "D:/Develop/PHP" // php根目錄 AddType application/x-httpd-php .php .html .htm // 支持的文件類型 DirectoryIndex index.php index.html // 設置目錄默認文件
注意點:
1. 如果配置出現問題(MySQL,PHP)則修改之后進行重新啟動Apache
httpd -k restart httpd --help 查看常用命令
2. 數據庫無法遠程連接
grant all privileges on *.* to 'root'@'%' identified by '123456'; 重新加載權限 flush privileges;
問題總結:
1.
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
這種情況是因為密碼有一個過期時間,可以通過命令查看 default_password_lifetime
show variables like 'default_password_lifetime';
解決:
alter user user() identified by "123456";
2. 有時候啟動Apache的時候會報錯,可能是io錯誤,或者是日志等錯誤,最終都是因為不是超級管理員導致的錯誤,所以運行Apache的時候要使用超級管理員的權限運行可以解決許多問題