# LAMP 安裝 ###### tags: `學校` `學習管理系統` 2022.05.19(Thu.) ## Step1 > 參考資料:[安裝LAMP(一):Apache、MySQL](https://ithelp.ithome.com.tw/articles/10216445) **1. 安裝Apache:** ``` $sudo apt update $sudo apt install apache2 ``` **2. 用瀏覽器打上:** ``` http://127.0.0.1 ``` (基本上都是127.0.0.1) ![](https://i.imgur.com/LP6XwyU.png) (有看到以上畫面代表Apache安裝成功) **3. 安裝MySQL:** * **先下載MySQL** ``` $sudo apt install mysql-server ``` * **一、接著是MySQL的安全設定** ``` $sudo mysql_secure_installation ``` * **二、會詢問你是否要設定驗證密碼插件** 不過不是必須,所以這裡就先跳過,沒做設定 ``` VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: ``` * **三、接著會要求你輸入一組密碼** 我用了平常使用的密碼,結果出現以下訊息 ``` Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters. ``` * **四、解決問題** 首先找到了這篇[MySQL installation on Ubuntu 20.04 error when using mysql_secure_installation [closed]](https://stackoverflow.com/questions/72103302/mysql-installation-on-ubuntu-20-04-error-when-using-mysql-secure-installation),裡面有個解答如下圖: ![](https://i.imgur.com/1Nhzzgc.png) * 第一步驟: 進到mysql服務 ``` sudo mysql ``` * 第二步驟: 輸入以下指令,將mynewpassword改成自己設定的密碼即可: (記得一定要加分號) ``` ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword'; ``` * 第三步驟: 離開mysql服務: ``` quit; ``` * 第四步驟: 再次對mysql進行安全設定: ``` $sudo mysql_secure_installation ``` * 第五步驟: 它會請你輸入剛才設定的密碼(在第二步驟時設定的密碼),接著會問你一連串的問題,你只要回答y或n即可,至於要怎麼設定比較好,可以參考以下兩篇文章: 1. [MYSQL設定Root帳號密碼與初始權限(Ubuntu 20.04)](https://www.albert-yu.com/blog/mysql%E8%A8%AD%E5%AE%9Aroot%E5%B8%B3%E8%99%9F%E5%AF%86%E7%A2%BC%E8%88%87%E5%88%9D%E5%A7%8B%E6%AC%8A%E9%99%90ubuntu-20-04/) 2. [安裝LAMP(一):Apache、MySQL](https://ithelp.ithome.com.tw/articles/10216445) 設定完成! **4. 安裝PHP:** * **下載** ``` $sudo apt update $sudo apt install php libapache2-mod-php php-mysql ``` * **建立文件** * **先下載vim指令:** (已下載可跳過) > 參考資料:[[Ubuntu] Ubuntu 18.04 安裝 vim](https://medium.com/@racktar7743/ubuntu-ubuntu-18-04-%E5%AE%89%E8%A3%9D-vim-e9eded2b27b9) ``` $sudo apt install vim ``` * **再建立文件:** ``` $sudo vim /var/www/html/info.php ``` * **在info.php中加入程式碼:** ```php= <?php phpinfo(); ?> ``` 打好後,按下shift+zz保存退出vim * **進入php頁面** ``` http://127.0.0.1/info.php ``` 有看到頁面就設定完成! 最後要記得刪除: ``` $sudo rm /var/www/html/info.php ``` **** **<font color="red">紅框處忽略</font>** 以下方法嘗試過後仍然失敗,下面的方法可能是舊版本的。 :::warning * **四、找問題來解決** 首先看到這篇[解决linux下mysql密码错误的问题](https://www.php.cn/linux-450824.html),裡面提到說mysql在5.7版本之後會自動創立一個初始密碼,所以第一步要先去修改密碼。 * 先檢查mysql是否有啟動,如果有,則先將mysql服務關閉 參考資料:[linux怎么查看mysql是否运行](https://www.php.cn/linux-485237.html) 1. **先查看mysql是否啟動:** (如圖中的綠字 active(running) 代表 mysql服務是啟動中的) ![](https://i.imgur.com/GDE0NJF.png) ``` service mysql status ``` 2. **所以要關閉它:** ``` service mysql stop ``` 3. **接著要修改mysql的配置文件my.cnf:** 基本上配置文件my.cnf的位置一般在/etc/my.cnf,有些版本在/etc/mysql/my.cnf * **先找出配置文件my.cnf的位置:** 1. **先下載`locate`** ``` sudo apt install locate ``` 2. **利用locate指令搜尋檔案** 發現沒有作用 (如果有作用,可以直接跳到第5點) ``` locate my.cnf ``` 3. **找到另外的下載方式** 在[How to install the locate command?](https://askubuntu.com/questions/215503/how-to-install-the-locate-command)文中看見解決辦法 ``` sudo apt-get install mlocate ``` 4. **再次執行locate指令** ``` locate my.cnf ``` 5. **成功找到!** 出現以下指令 ![](https://i.imgur.com/70ySORm.png) 6. **找到後先利用terminal進到根目錄** ``` cd / ``` 7. **接著進入到存在有my.cnf的檔案中** ``` cd ./etc/mysql ``` 8. **進去後可先確認目前位置** ``` ls ``` 9. **確認沒進錯檔案** ![](https://i.imgur.com/6wUHDQk.png) 10 **開啟該檔案資料夾** 打開後就正式進入到下個步驟了 ``` xdg-open ``` 4. **在配置文件中,增加2行程式碼** * **遇到的問題:** 不過這裡應該會再遇到另一個問題,my.cnf這個檔案是唯讀,沒有權限是不能修改的,所以先回到terminal,一樣先進入`cd ./etc/mysql`這個目錄,然後輸入以下內容: (你就會得到一個具有 sudo 權限的 gedit編輯器,然後再用這個編輯器開啟你要修改的檔案就好) ``` sudo gedit my.cnf ``` * **打開後,在配置文件中,增加2行程式碼** 作用是登錄mysql時跳過密碼驗證 ``` [mysqld] skip-grant-tables ``` 5. **再次啟動mysql服務** ``` service mysql start ``` 6. **進入mysql** ![](https://i.imgur.com/RFw0MFQ.png) ``` mysql -u root ``` 7. **連接mysql資料庫** ``` use mysql ``` :::