【一些前言廢話】一名web開發尤其是後端不懂LAMP環境的搭建,那就攤上事了,有些人說他一直用win下的wampServer這種傻瓜式環境搭建,用的挺好的,也有人說他用雲伺服器,搭配“一鍵搭建LAMP環境”大法也挺好用的,是的,這些在初學的時候都是可以先用上的,但是“不知其所以然”的習慣一旦養成,很
【一些前言廢話】一名web開發尤其是後端不懂LAMP環境的搭建,那就攤上事了,有些人說他一直用win下的wampServer這種傻瓜式環境搭建,用的挺好的,也有人說他用雲伺服器,搭配“一鍵搭建LAMP環境”大法也挺好用的,是的,這些在初學的時候都是可以先用上的,但是“不知其所以然”的習慣一旦養成,很多事情就不再好奇,不再想去一探究竟,到某天也就失去了前行的動力,所以我還是會一步一步來搭建下LAMP環境,說不定會遇到一些迷之bug...
目的
如何從零開始在本地虛擬機搭建一個LAMP環境以便我們進行本地測試,遠程伺服器上搭建是一樣一樣的
系統和軟體
WIN8.1 64位
VMware Workstation
Xshell
一、在虛擬機上下載安裝 Ubuntu Server LTS
VM虛擬機如何建立不在這裡贅述,Ubuntu Server鏡像可以在Ubuntu官網上找到,Server表示伺服器版本,而LTS表示 Long Term Support,長時間支持版本,至少支持4年。本文用的是14.04.4。
如何安裝Ubuntu系統也不贅述,安裝過程相對簡單,有問題可以另行參考其他資料。
如果是遠程伺服器,像國內的阿裡雲等雲伺服器,一般在你選擇購買產品時會讓你選擇安裝的系統,所以就不用自己下載安裝了。
註意:在虛擬機安裝系統後,虛擬機網路連接方式一般我們選NAT方式,以便於我們接下去的SSH遠程連接。
二、SSH終端工具遠程連接伺服器
SSH是一種協議,也可以理解為一種服務,以一種安全的方式允許用戶遠程登錄主機進行操作,SSH終端軟體也有很多,大同小異,這裡我們推薦使用Xshell,可以從官網下載免費版,夠用了。為什麼推薦使用遠程連接,而不是虛擬機裡面直接操作呢?因為我們儘量模擬真實的工作環境,虛擬機里直接操作好比我們在伺服器機房直接操作,這在現實中幾乎不會這麼做,所以就算我們本地使用,還是推薦使用SSH終端。
打開Xshell,文件 -- 新建,只需要填寫這幾個地方就可以設置好一個連接。
這裡的ip,如果你是遠程伺服器,這個ip你購買產品的時候就會告訴你,如果是本地虛擬機,你不知道,那怎麼辦?可以進入虛擬機,利用ifconfig
命令查看當前的ip
這裡我們的登錄名,不用root登錄,這是一個好習慣,root用戶許可權太大,很不安全,普通用戶可以依靠su
和sudo
命令執行root用戶許可權命令。
設置好後可以連接,填寫密碼,第一次連接會彈出提示框,選“接受保存”。
連接成功後
三、利用apt-get安裝Apache MySQL PHP
apt-get是ubuntu安裝軟體包的一個工具,原理是首先準備一個源列表,這個列表包括了許許多多ubuntu可以下載安裝的軟體,然後安裝的時候就是在這上面選擇相應的安裝包下載安裝。
首先執行sudo apt-get update
命令進行源列表的更新,而後準備安裝 A M P
安裝Apache,執行sudo apt-get install apache2
,中間有確認環節,需要鍵入Y,註意有時小寫的y是不行的。
安裝好後在瀏覽器鍵入伺服器的ip地址,看到apache預設頁面就說明apache安裝完成。
安裝MySQL,執行sudo apt-get install mysql-server
。
安裝MySQL過程中會要求輸入MySQL的root密碼(註意這個root是資料庫的root而不是伺服器的root)。安裝完成後執行mysql --version
,如果看到版本信息,說明mysql已經被安裝。
安裝PHP,執行sudo apt-get install php5
。
執行php5 -v
,如果出現php的版本信息,就說明PHP已被安裝。
註意,如果先安裝PHP再安裝MySQL,那麼可能需要的MySQL擴展沒有被安裝到PHP中,需要手動安裝,當我們執行cat /etc/php5/mods-available/mysql.ini
命令時,我們發現提示找不到這樣的文件或目錄就說明在PHP中我們的MySQL擴展沒有被載入,因為PHP安裝是預設不載入的,於是我們需要手動載入MySQL擴展。
執行sudo apt-get install php5-mysql
命令,為PHP安裝MySQL擴展。然後重啟MySQL和Apache服務,執行sudo service mysql restart
和sudo service apache2 restart
重啟服務。
而如果是執行cat /etc/php5/mods-available/mysql.ini
命令可以看到extension=mysql.so
,那就是mysql擴展被正確載入。
四、創建phpinfo伺服器探針查看是否LAMP環境正常工作
預設的伺服器目錄為/var/www/html目錄,所以我們通過cd /var/www/html
進入此目錄創建一個info.php文件(記得使用sudo以超級用戶創建,否則保存不了的),文件內容如下:
<?php
echo mysql_connect('localhost','root','這裡填寫資料庫root的密碼,每個人不一樣')?'連接資料庫成功':'居然失敗了';
phpinfo();
?>
此時回到瀏覽器,當我們訪問這個PHP文件時,比如"http://192.168.17.129/info.php"時會出現“伺服器錯誤”,原因是PHP文件需要有許可權被執行,這樣才能被解析,所以可以用chmod
命令賦755的許可權給info.php文件,註意以上的操作都是需要超級用戶許可權的,重啟下apache服務,再去訪問,發現就會出現正確的顯示:
此時,說明資料庫連接已經沒有問題,同時也可以看到phpinfo給出的相關信息。
至此,證明我們的LAMP環境已經初步搭建成功。
五、LAMP環境配置文件簡單瞭解
通過apt-get安裝的軟體,配置文件都在/etc目錄下,apache配置文件在/etc/apache2目錄下,php在/etc/php5下,mysql在/etc/mysql下。
apache配置文件,進入/etc/apache2目錄,其中apache2.conf是總配置文件,將其餘的配置文件都包含進來形成的,使apache的配置成模塊化,不至於使配置文件太大同時又使配置項的條理清晰。核心的配置項是mods-*和sites-*文件夾,帶尾碼關鍵詞available的是可使用的配置,而帶enabled的是當前使用的,通過在enabled建立軟連接來指向available中的配置文件以達到激活某種配置的目的。
php和mysql配置文件,mysql配置核心文件是其目錄下的my.cnf文件,php是其自身配置目錄下的php.ini文件。
六、虛擬主機的配置
讓多個功能變數名稱解析到一臺伺服器,伺服器根據不同來源的功能變數名稱進入不同的目錄進行操作。
這裡如果不是具有真實功能變數名稱進行,僅僅本地實驗的話,可以通過修改本地的host文件將某個功能變數名稱解析到指定的ip(也就是你自己伺服器的ip)。
假設我們有兩個二級功能變數名稱,blog.test.com和info.test.com,我們有兩個目錄/www/blog/和/www/info/分別對應兩個功能變數名稱處理的目錄,在兩個目錄下我們可以創建不同的index.html測試頁面,然後我們來進行apache多站點虛擬主機的配置。
進入/etc/apache2/sites-available目錄,找到預設配置文件000-default.conf,複製該文件內容到當下目錄的一個新建的配置文件,我們可以取名blog.conf,我們再編輯此配置文件:
<Directory /www/blog> //這裡改成你的虛擬主機目錄
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<VirtualHost *:80>
ServerName blog.test.com //這裡改成你的功能變數名稱
ServerAdmin webmaster@localhost
DocumentRoot /www/blog //這裡改成你的虛擬主機目錄
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
同樣,我們類似的編輯info.conf配置文件,註意修改相應地方。
然後執行sudo a2ensite blog.conf
和sudo a2ensite info.conf
將該配置文件在sites-enabled文件夾下創建軟鏈接,當然你也可以自己手工創建軟鏈接,然後重啟apache服務。
訪問下不同的兩個子功能變數名稱,看看是否成功,如果是Forbidden,那就註意文件的許可權問題哦。
七、phpMyAdmin的安裝
執行sudo apt-get install phpmyadmin
和sudo ln -s /usr/share/phpmyadmin/ /var/www/pma
即可完成phpmyadmin的安裝,至於其相關的配置等可自行參考其餘資料。
至此,基本上完成了LAMP環境的搭建,而至於其詳細配置,路漫漫其修遠兮...