常常都會想要練習 Linux 的東西,雖然以前就有 VM 的軟體,可是佈署起來也不算太方便,自從有 Vagrant 這種快速佈署的軟體之後,大大增進玩 Linux 的方便性,今天就來嘗試紀錄一下在一個乾淨的 Ubuntu 不透過懶人包將 LEMP 架起來的過程,今天的目標是安裝 PHP、Nginx、MySQL,還有一些常用的 PHP 套件,像是 XDEBUG、curl 之類的。
Vagrant
# 初始化 Vagrant vagrant init ubuntu/trusty32 # 打開 Vagrantfile 修改下面內容 # IP 可以隨自己喜歡定義,因為只是要測試成功與否,所以記憶體我只開到 512 config.vm.network "private_network", ip: "10.10.10.6" config.vm.provider "virtualbox" do |vb| vb.memory = "512" end # 利用你的 ssh 軟體登入 10.10.10.6,順利登入的話我們就可以開始進行安裝步驟 # 先進行一個更新既有軟體的動作 sudo aptitude update sudo aptitude upgrade
Nginx
sudo aptitude install nginx # 假如安裝成功,可以在瀏覽器輸入 10.10.10.6,如果看到 Nginx 歡迎畫面表示你安裝順利
MySQL
sudo aptitude install mysql-server # 安裝無誤後,來測試一下 mysql -V # 看到以下訊息 mysql Ver 14.14 Distrib 5.5.41, for debian-linux-gnu (i686) using readline 6.3 # 連結看一下 mysql -u root -p mysql> show database; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 3 rows in set (0.00 sec)
PHP
sudo aptitude intall php5-cli sudo aptitude intall php5-fpm # 安裝好 check 一下 php -v PHP 5.5.9-1ubuntu4.5 (cli) (built: Oct 29 2014 11:59:42) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies # 修改 ngnix 預設網站 config sudo vim /etc/nginx/sites-available/default root /var/www/html; index.php index index.html index.htm; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } # 安裝 mysql 套件 sudo aptitude install php5-mysql # 開個資料表查看 PHP 到 MySQL 的存取 mysql -u root -p create database `test`; use `test`; CREATE TABLE `test` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(10) NOT NULL ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_unicode_ci; INSERT INTO `test` (`name`) VALUES ('測試中文');
// 編輯 vim /var/www/html/index.php <?php $dsn = 'mysql:host=localhost;dbname=test;charset=utf8'; try { $dbh = new PDO($dsn, 'root', 123456); $sql = "SELECT * FROM `test`"; $stmt = $dbh->prepare($sql); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); echo '<pre>'; var_dump($rows); echo '</pre>'; die(); } catch (PDOException $e) { var_dump($e->getMessage()); }
順利看到內容
array(1) { [0]=> array(2) { ["id"]=> string(1) "1" ["name"]=> string(12) "測試中文" } }
安裝 xdebug
sudo aptitude -y install php5-dev php5-pear sudo pecl install xdebug # 有的 linux 版本會遇到問題,可以改成 sudo pecl install -Z xdebug find / -name 'xdebug.so' 2> /dev/null # 出現 /usr/lib/php5/20121212+lfs/xdebug.so # 編輯你的 php.ini 位置,因為我們使用了 php5-fpm,所以位置會在 /etc/php5/fpm/php.ini # 加入 extension 位置 zend_extension="/usr/lib/php5/20121212+lfs/xdebug.so" # 重啟 nginx 跟 fpm service service nginx restart service php5-fpm nginx restart
參考網站
Install LEMP (Linux, Nginx, MySQL and PHP) Stack on Ubuntu Linux 14.04 LTS