1. 程式人生 > >lnmp環境搭建完全手冊(四)——lnmp搭建(原始碼安裝)

lnmp環境搭建完全手冊(四)——lnmp搭建(原始碼安裝)

首先來介紹一下Nginx.Nginx是一個高效能的 HTTP 和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。Nginx不僅可以作為web伺服器,也可以作為負載均衡器,之前也有文章介紹,大家可以看一下.

MySQL是一款開源免費的資料軟體,MySQL是一個小型關係型資料庫管理系統,其體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站資料庫.

PHP,是英文超級文字預處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內嵌式的語言,是一種在伺服器端執行的嵌入HTML文件的指令碼語言,語言的風格有類似於C語言,被廣泛的運用。


nginx當前最新穩定版是nginx-1.0.13
首先我們下載nginx,在Linux下執行下面命令:

cd /usr/src                                           # 一般軟體原始碼放在這個目錄下
wget http://nginx.org/download/nginx-1.0.13.tar.gz    # 下載

nginx會有幾個依賴包,我們首先安裝依賴,不要安裝過程中會報錯:

yum  -y install zlib-devel pcre-devel openssl-devel

一般原始碼安裝分4個步驟(有人也會省去第一個步驟),解壓(tar命令)預編譯(執行原始碼包下的configure),編譯(make),編譯安裝(make install)
首先我們解壓原始碼包:

tar -zxvf nginx-1.0.13.tar.gz

這裡解釋下加壓引數,z代表gzip(也就是後面的.gz檔案)x代表加壓,v表示顯示詳細資訊,-f使用檔案檔案或裝置(必選引數)

然後我們進行預編譯,一般預編譯會帶上一些引數,已達到我們想要安裝的效果,比如啟用某個功能,禁用某個功能:
進入原始碼包目錄進行預編譯:

cd nginx-1.0.13
 ./configure --prefix=/usr/local/nginx\   # 指定安裝目錄為/usr/local/nginx
--with-openssl=/usr/include/openssl\  # 啟用ssl
--with-pcre\                          # 啟用正規表示式
--with-http_stub_status_module        # 安裝可以檢視nginx狀態的程式

其中./configure指執行當前目錄下的configure檔案

預編譯完成後我們就可以進行編譯和安裝:

make           #編譯

執行後make後會有大量輸出,等待輸出完成後如果沒有報錯就可以進行安裝執行:

make install   #安裝

安裝完成後我們可以到相應的目錄檢視安裝的檔案:

ls /usr/local/nginx/
conf  html  logs  sbin

好了,下面我們啟動nginx:

/usr/local/nginx/sbin/nginx

通過檢視埠看nginx是否啟動成功,nginx佔用TCP的80埠,執行下面命令:

 netstat -antlp ¦ grep 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      5946/nginx

我們檢視80埠是開放的

然後開啟瀏覽器訪問http://192.168.3.120,我們會看到Welcome to nginx(之前的版本是 It’s Work):

nginx安裝完畢後我們來安裝MySQL ,我們使用MySQl-5.0.95版首先下載:

wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.95.tar.gz
<span style="font-family: Arial;">安裝之前我們先做一些準備工作,</span>

安裝依賴:

yum -y install ncurses-devel

建立MySQL使用者:

useradd -M -s /sbin/nologin mysql  # -M不建立home目錄,-s指定shell為不登入

然後進行安裝:

tar -zxvf mysql-5.0.95.tar.gz
cd mysql-5.0.95
./configure --prefix=/usr/local/mysql \
--without-debug \                                 # 取消除錯模式提高效能
--with-extra-charsets=utf8,gbk \                  # 僅僅指定需要的預設字符集提高效能
--enable-assembler \                              # 使用匯編模式提高效能
--with-mysqld-ldflags=-all-static \               # 以靜態方式編譯提高效能
--with-client-ldflags=-all-static \
--with-unix-socket-path=/tmp/mysql.sock \         # 使用unix socket提高效能
--with-ssl
make
make install

安裝完成後複製配置檔案和啟動指令碼:

cp support-files/my-medium.cnf /etc/my.cnf         # 複製配置檔案
cp support-files/mysql.server /etc/init.d/mysqld   # 複製啟動指令碼
chmod +x /etc/init.d/mysqld         # 給啟動指令碼執行許可權

為了以後方便我們為所有的二進位制可執行檔案和動態連結庫檔案做一個軟連線:

ln -s /usr/local/mysql/bin/* /usr/local/bin/              # 為可執行的二進位制檔案做軟連線
ln -s /usr/local/mysql/lib/mysql/lib* /usr/lib/  # 為動態連結庫做一個軟連線

然後我們初始化資料庫:

mysql_install_db --user=mysql  # 用MySQL使用者安裝資料庫

為了MySQL能正常使用我們需要更改一下MySQL安裝目錄和MySQL的資料庫目錄的屬主和屬組:

chown -R root.mysql /usr/local/mysql/           # 更改安裝目錄屬主為root,屬組為mysql
chown -R mysql.mysql /usr/local/mysql/var/      # 更改資料庫目錄屬主和屬組都為mysql

這裡的-R引數用來應用到所有子目錄和檔案

配置完畢後我們啟動mysql:

service mysqld start

現在我們檢視MySQL是否啟動成功,MySQL佔用TCP的3306埠,我們檢視埠是否被佔用:

netstat -antlp ¦ grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      32143/mysqld

然後我們通過mysql命令來連線mysql:

mysql

會顯示如下內容表示已經成功啟動MySQL並已經連線上

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.95-log Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

MySQL安裝完畢下面我們就來安裝PHP,安裝PHP前首先要安裝幾個原始碼包依賴:
libmcrypt mhash mcrypt
首先來安裝幾個原始碼包依賴:

wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2
tar -jxvf libmcrypt-2.5.8.tar.bz2   # 這個包是bz2的  使用-j引數解壓
cd libmcrypt-2.5.8
./configure
make
make install

####################################################
wget http://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/mhash-0.9.9.9.tar.bz2
tar -jxvf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9
./configure
make
make install
# 這兩個包安裝完成後要把動態連結庫做一個軟連線到/usr/lib,以為接下來的mcrypt依賴於這兩個包
ln -s /usr/local/lib/libmcrypt* /usr/lib
ln -s /usr/local/lib/libmhash.* /usr/lib/
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
###########################################################

wget http://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
tar -zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
./configure
make
make install
然後下載php: wget http://am1.php.net/distributions/php-5.5.38.tar.bz2

安裝依賴:

yum  install <span style="font-family: Arial, Helvetica, sans-serif;">–y</span> libxml2-devel curl-devel libpng-devel openldap-devel libxslt-devel freetype-devel
</pre><pre code_snippet_id="1910093" snippet_file_name="blog_20161001_24_4125831" class="other" name="code" style="white-space: pre-wrap; word-wrap: break-word; font-size: 14px; line-height: 26px; background-color: rgb(255, 255, 255);">wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar -zxvf libconv-1.1.14.tar.gz
.configure --prefix=/usr/local/libiconv
安裝libmcrypt庫
</pre><pre>
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install libmcrypt-devel -y
yum install mhash -y

我們使用nginx呼叫php的時候使用fpm的方式,在php 5.4中加入了對php-fpm的支援,所以就不需要打補丁了.安裝PHP:

tar -jxvf php-5.3.28.tar.bz2
cd php-5.3.28
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-iconv-dir=/usr/local/libiconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-short-tags --enable-zend-multibyte --enable-static --with-xsl --with-fpm-user=nginx --with-fpm-group=nginx --enable-ftp --enable-opcache=no
make
make install
</pre><pre code_snippet_id="1910093" snippet_file_name="blog_20161001_25_3427720" class="other" name="code" style="white-space: pre-wrap; word-wrap: break-word; font-size: 14px; line-height: 26px; background-color: rgb(255, 255, 255);">注意加上--enable-fastcgi引數和--enable-force-cgi-redirect引數

不加上的話配置完之後解析不了php

到這裡整個LNMP已經安裝完成.下面我們就配置php和nginx能執行php網站:
首先為php建立配置檔案:

cp php.ini-production /usr/local/php/php.ini # 如果是開發就複製php.ini-development
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
ln -s /usr/local/php/bin/php /usr/bin/

配置php-fpm,編輯php-fpm.conf

vi /usr/local/php/etc/php-fpm.conf

找到listen那一行,修改成如下內容:

listen = /var/run/php-fpm/php-fpm.sock   # 使用unix socket

啟動php-fpm

mkdir /var/run/php-fpm
/usr/local/php/sbin/php-fpm

然後配置nginx,編輯nginx配置檔案

vi /usr/local/nginx/conf/nginx.conf

修改nginx配置檔案支援php:

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.php index.html index.htm;         # 新增index.php的首頁檔案
        }

        # 新增下面內容
        location ~ \.php$ {
            fastcgi_pass        unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index       index.php;
            fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
            include fastcgi_params;
            include fastcgi.conf;
        }

修改完畢後儲存退出重啟nginx:

pkill -9 nignx
/usr/local/nginx/sbin/nginx

然後在/usr/local/nginx/html下建立index.php,

vi /usr/local/nginx/html/index.php

新增下面內容:

  1. <?php  
  2. phpinfo();  
  3. ?>