1. 程式人生 > >Redhat6.5系統下搭建LNMP環境(原始碼編譯)

Redhat6.5系統下搭建LNMP環境(原始碼編譯)

LNMP

LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站伺服器架構。

Linux是一類Unix計算機作業系統的統稱,是目前最流行的免費作業系統。。
Nginx是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP代理伺服器。
Mysql是一個小型關係型資料庫管理系統。
PHP是一種在伺服器端執行的嵌入HTML文件的指令碼語言。
這四種軟體均為免費開源軟體,組合到一起,成為一個免費、高效、擴充套件性強的網站服務系統。

LNMP架構介紹

在這裡插入圖片描述
LNMP架構和LAMP架構挺像的,只不過一個用的Apache一個用的Nginx。LNMP就是Linux+Nginx+MySQL+PHP,Nginx和Apache一樣都是web伺服器。
  還有一點不同的是在LNMP結構裡php會啟動一個服務:php-fpm,而LAMP中php只是作為Apache的一個模組存在。Nginx會把使用者的動態請求交給php服務去處理,這個php服務就會去和資料庫進行互動。使用者的靜態請求Nginx會直接處理,Nginx處理靜態請求的速度要比apache快很多效能上要好,所以apache和Nginx在動態請求處理上區別不大,但如果是靜態請求處理的話就會明顯發現Nginx要快於apache,而且Nginx能承受的併發量要比apache大,可以承受好幾萬的併發量,所以大一些的網站都會使用Nginx作為web伺服器。

LNMP環境搭建

原始碼編譯安裝Mysql

一、原始碼編譯
1:下載cmake-2.8.12.2-4.el6.x86_64.rpm 和mysql-boost-5.7.17.tar.gz
cmake:
CMake是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project檔案,能測試編譯器所支援的C++特性,類似UNIX下的automake。只是 CMake 的組態檔取名為 CMakeLists.txt。Cmake 並不直接建構出最終的軟體,而是產生標準的建構檔(如 Unix 的 Makefile 或 Windows Visual C++ projects/workspaces),然後再依一般的建構方式使用。這使得熟悉某個整合開發環境(IDE)的開發者可以用標準的方式建構他的軟體,這種可以使用各平臺的原生建構系統的能力是 CMake 和 SCons 等其他類似系統的區別之處。

2:yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y ##用yum安裝可以解決軟體依賴性(映象中有的依賴性)
在這裡插入圖片描述
3:tar zxf mysql-boost-5.7.17.tar.gz
4:cd mysql-5.7.17/
5:執行:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#安裝目錄
-DMYSQL_DATADIR=/usr/local/mysql/data \
#資料庫存放目錄
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \
 #Unix socket 檔案路徑
-DWITH_MYISAM_STORAGE_ENGINE=1 \
#安裝 myisam 儲存引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
#安裝 innodb 儲存引擎
-DDEFAULT_CHARSET=utf8 \
#使用 utf8 字元
-DDEFAULT_COLLATION=utf8_general_ci \
#校驗字元
-DEXTRA_CHARSETS=all \
#安裝所有擴充套件字符集
-DWITH_BOOST=boost/boost_1_59_0/
#安裝boost庫

在這裡插入圖片描述
直接執行完上面命令後,會報錯,要解決一系列依賴性
在這裡插入圖片描述
用yum安裝以下依賴性:
yum install gcc gcc-c++ ncurses-devel -y
在這裡插入圖片描述
安裝完這些依賴性後,也會執行成功,但是會有warning,要想消除warning,在下載一個依賴性,就可以解決
yum install bison -y
在這裡插入圖片描述
6:安裝完依賴性後,先不要執行上一步的cmake命令,要先刪除cmake快取檔案,因為編譯時會優先讀取cmake快取檔案,要將快取檔案刪了,重新編譯
在這裡插入圖片描述
7:現在可以再次執行第五步的cmake命令來重新編譯了
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
在這裡插入圖片描述
8:cmake完成後,執行make ####make過程非常慢
在這裡插入圖片描述
9:接下來執行make install
在這裡插入圖片描述
二、相關配置
1:cd /usr/local/mysql/support-files/
2:cp my-default.cnf /etc/my.cnf
在這裡插入圖片描述
3:vim /etc/my.cnf
編輯:

18 basedir = /usr/local/mysql
19 datadir = /usr/local/mysql/data
20 port = 3306
22 socket = /usr/local/mysql/data/mysql.sock

在這裡插入圖片描述
4:cp mysql.server /etc/init.d/mysqld
5:groupadd -g 27 mysql
6:useradd -u 27 -g 27 -M -d /usr/local/mysql/data -s /sbin/nologin mysql
在這裡插入圖片描述
7:cd /usr/local/mysql/
8:chown mysql.mysql . -R
在這裡插入圖片描述
9:cd
10:設定環境變數
vim .bash_profile
編輯:

10 PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

在這裡插入圖片描述
11:source .bash_profile ##載入環境變數
在這裡插入圖片描述
12:cd /usr/local/mysql/
13:mysqld --initialize --user=mysql ###初始化
執行完這條命林後,會彈出很多行資料,複製最後一條冒號後生成的密碼,冒號後面的全部內容
在這裡插入圖片描述
14:此時,mysqld服務已經可以開啟關閉了
cd /usr/local/mysql/
chown root.root . -R
chown mysql data/ -R
在這裡插入圖片描述
15:開啟mysqld /etc/init.d/mysqld start
在這裡插入圖片描述
16:進行安全初始化
mysql_secure_installation
(1)在第一次互動請求後面輸入剛剛初始化時複製的密碼
(2)然後輸入兩次新密碼
(3)接下來的互動式請求可以直接回車,這條互動式請求是詢問你是否要檢查密碼強度,如果輸入y,就要重新修改密碼,密碼長度必須超過8位,必須有大小寫字母,所以我們直接回車
(4)接下來會詢問是否要修改root密碼,直接回車,因為上面已經設定過了
(5)接下來全部輸入y回車就行
在這裡插入圖片描述
17:現在就可以直接進入mysql了
mysql -p
輸入設定的密碼進入就行
在這裡插入圖片描述

原始碼編譯安裝PHP

一、原始碼編譯
1:下載 php-5.6.35.tar.bz2 gd-devel-2.0.35-11.el6.x86_64.rpm libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
在這裡插入圖片描述
2:安裝所需依賴性
yum install libxml2-devel openssl-devel curl-devel gd-devel-2.0.35-11.el6.x86_64.rpm gmp-devel libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm net-snmp-devel -y
在這裡插入圖片描述
3:下載re2c-0.13.5-1.el6.x86_64.rpm並且安裝rpm -ivh re2c-0.13.5-1.el6.x86_64.rpm
re2c:
re2c是一個掃描器製作工具,可以建立非常快速靈活的掃描器。它可以產生高效程式碼,基於C語言,可以支援C/C++程式碼。 與其它類似的掃描器不同,它偏重於為正則表示式產生高效程式碼(和他的名字一樣)。因此,這比傳統的詞法分析器有更廣泛的應用範圍。 你可以在sourceforge.net獲取原始碼。
PHP在最開始的詞法解析器是使用的是flex,後來PHP的改為使用re2c。
在這裡插入圖片描述
4:tar jxf php-5.6.35.tar.bz2
cd php-5.6.35/
在這裡插入圖片描述
5:./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=mysqlnd --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-pear --with-gettext --with-gmp --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-mcrypt --with-mhash
在這裡插入圖片描述
在這裡插入圖片描述
6:make && make install
在這裡插入圖片描述
二、相關配置
7:cd /usr/local/php/etc/
8:cp php-fpm.conf.default php-fpm.conf
9:cd /root/php-5.6.35
10:cp php.ini-production /usr/local/php/etc/php.ini
11:cd /usr/local/php/etc/
在這裡插入圖片描述
12:vim php.ini
將時區改成 Asia/Shanghai
935 ; http://php.net/date.timezone
936 date.timezone = Asia/Shanghai
在這裡插入圖片描述
13:vim php-fpm.conf
24 ; Default Value: none
25 pid = run/php-fpm.pid ###去掉註釋
149 user = nginx
150 group = nginx ###因為等會要結合nginx與php
在這裡插入圖片描述
在這裡插入圖片描述
14:useradd -M -d /usr/local/nginx -s /sbin/nologin nginx
15:cd /root/php-5.6.35/sapi/fpm/
16:cp init.d.php-fpm /etc/init.d/php-fpm
17:chmod +x /etc/init.d/php-fpm
18:/etc/init.d/php-fpm start
在這裡插入圖片描述

原始碼編譯nginx並結合php

這部分原始碼編譯nginx在之前的部落格有專門說過,這裡在操作一遍
一、原始碼編譯
1:下載nginx-1.10.1.tar.gz nginx-sticky-module-ng.tar.gz
2:.tar zxf nginx-1.10.1.tar.gz
tar zxf nginx-sticky-module-ng.tar.gz
3:cd nginx-1.10.1
在這裡插入圖片描述
4:vim src/core/nginx.h
#去掉版本號
14 #define NGINX_VER “nginx”
在這裡插入圖片描述
5:vim auto/cc/gcc
註釋掉debug
178 # debug
179 #CFLAGS="$CFLAGS -g"
在這裡插入圖片描述
6:./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx --with-threads --with-file-aio --add-module=/root/nginx-sticky-module-ng
上條命令執行時會報錯,根據報錯我們需要下載pcre-devel
在這裡插入圖片描述
yum install pcre-devel -y
在這裡插入圖片描述
7:再次執行./configure命令
在這裡插入圖片描述
8:make && make install
在這裡插入圖片描述
二、相關配置
9:cd /usr/local/nginx/conf/
10:vim nginx.conf

	12 events {
	13     worker_connections  65535;
	14 }
	65         location ~ \.php$ {
  	66             root           html;
  	67             fastcgi_pass   127.0.0.1:9000;
  	68             fastcgi_index  index.php;
 	69         #    fastcgi_param  SCRIPT_FILENAME  /scripts  $fastcgi_script_name;
  	70             include        fastcgi.conf;
  	71         }

在這裡插入圖片描述
在這裡插入圖片描述
11:vim /etc/security/limits.conf
最後一行寫入:
nginx - nofile 65536
在這裡插入圖片描述
12:vim ~/.bash_profile
第十行新增:
PATH=$ PATH:$HOME/bin:/usr/local/mysql/bin:/usr/ local/nginx/sbin
在這裡插入圖片描述
13:source ~/.bash_profile
14:nginx -t
15:nginx
在這裡插入圖片描述
16:nginx預設釋出目錄在 : /usr/local/nginx/html/
cd /usr/local/nginx/html/
vim index.php
寫入:

<?php phpinfo() ?>

在這裡插入圖片描述
17:在瀏覽器中訪問172.25.66.1訪問的是nginx預設釋出檔案介面
在這裡插入圖片描述
18:輸入172.25.66.1/index.php訪問的是php介面
在這裡插入圖片描述
19:修改php為預設訪問介面(將php字尾檔案作為預設釋出檔案)
vim /usr/local/nginx/conf/nginx.conf

 43         location / {
 44             root   html;
 45             index  index.php index.html index.htm;
 46         }

在這裡插入圖片描述
20:修改完成後過載nginx
nginx -s reload
21:在瀏覽器中直接輸入172.25.66.1,可以看到訪問到的時php介面
在這裡插入圖片描述