2015/02/02

LEMP On Ubuntu

常常都會想要練習 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