LNMP架構簡介及搭建(源碼編譯Nginx,MYSQL,PHP)
LNMP架構簡介及搭建(源碼編譯Nginx,MYSQL,PHP)
1. 什么是LNMP
LNMP是指一組通常一起使用來運行動態網站或者服務器的自由軟件名稱首字母縮寫。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
一般來講,LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構。
LNMP = Linux+Nginx+Mysql+PHP
- Linux是一類Unix計算機操作系統的統稱,是目前最流行的免費操作系統。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
- Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器。
- Mysql是一個小型關系型數據庫管理系統。
- PHP是一種在服務器端執行的嵌入HTML文檔的腳本語言。
- 這四種軟件均為免費開源軟件,組合到一起,成為一個免費、高效、擴展性強的網站服務系統。
Nginx中的PHP是以fastcgi的方式結合Nginx的,可以理解為Nginx代理了PHP的fastcgi。
LNMP和LAMP唯一不同是指提供web服務的是Nginx而不是Apache:在Apache中,PHP是作為一個模塊存在的。而在Nginx中,PHP是作為一個獨立服務存在的,這個服務叫做php-fpm. ;Nginx直接處理靜態請求,動態請求會轉發給php-fpm.
2. LNMP的工作原理
- 瀏覽器發送http request請求到服務器(Nginx)
- 服務器響應并處理web請求,將一些靜態資源(CSS,圖片,視頻等)保存服務器上,然后將php腳本通過接口傳輸協議(網關協議)PHP-FCGI(fast-cgi)傳輸給PHP-FPM(進程管理程序)
- PHP-FPM不做處理,然后PHP-FPM調用PHP解析器進程,PHP解析器解析php腳本信息。
- PHP解析器進程可以啟動多個,進行并發執行。然后將解析后的腳本返回到PHP-FPM
- PHP-FPM再通過fast-cgi的形式將腳本信息傳送給Nginx
- 服務器再通過Http response的形式傳送給瀏覽器。
- 瀏覽器再進行解析與渲染然后進行呈現。
3. MYSQL數據庫的源碼編譯
step1 解壓安裝 mysql:
tar zxf mysql-boost-5.7.28.tar.gz
step2 創建 mysql 用戶:
useradd -s /sbin/nologin -M mysql
step3 編譯MYSQL:
cmake跨平臺工具是用來預編譯mysql源碼的,用于設置mysql的編譯參數。如:安裝目錄、數據存放目錄、字符編碼、排序規則等
yum install -y cmake #編譯mysql需要用的包
cd mysql-5.7.28 #進入mysql解壓后的目錄
#以下命令為編譯:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ #安裝位置
> -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ #指定套接字文件位置
> -DEXTRA_CHARSETS=all \ #擴展字符集
> -DDEFAULT_CHARSET=utf8 \ #默認字符集
> -DDEFAULT_COLLATION=utf8_general_ci \ #默認字符校對
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安裝myisam 存儲引擎
> -DWITH_MYISAM_STORAGE_ENGINE=1 \ #安裝innodb存儲引擎
> -DWITH_MEMORY_STORAGE_ENGINE=1 \ #安裝memory存儲引擎
> -DWITH_READLINE=1 \ #支持readline庫
> -DENABLED_LOCAL_INFILE=1 \ #啟用加載本地數據
> -DMYSQL_USER=mysql \ #指定mysql運行用戶
> -DMYSQL_TCP_PORT=3306 #指定mysql端口
step4 根據提示解決依賴性問題:
yum install -y gcc gcc-c++ ncurses-devel openssl-devel -y
step5 可能會看到這樣的報錯:
CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>
This CMake script will look for boost in <directory>. If it is not there,
it will download and unpack it (in that directory) for you.
If you are inside a firewall, you may need to use an http proxy:
export http_proxy=http://example.com:80
解決:
缺少 -DWITH_BOOST=<directory>參數
重新編譯時加上下面的參數:
-DWITH_BOOST=boost/boost_1_59_0/
重新編譯時,需要清除原來的對象文件和緩存信息:
make clean
rm -fr CmakeCache.txt
后面編譯過程中可能會有一個 warnin:
CMake Warning at cmake/bison.cmake:20 (MESSAGE):
Bison executable not found in PATH
Call Stack (most recent call first):
sql/CMakeLists.txt:514 (INCLUDE)
解決:
yum install -y bison
step6 安裝:
make && make install ##如果 make 還有問題,刪除原來的目錄,重新解壓編譯(安裝過程較長)
step7 修改權限:
cd /usr/local/lnmp/mysql
mkdir data
chown -R root .
chown -R mysql data
ln -s /usr/local/lnmp/mysql/bin/* /usr/local/bin/
step8 復制配置文件:
cd /usr/local/lnmp/mysql/mysql-test/include
cp default_my.cnf /etc/my.cnf
cd /usr/local/lnmp/mysql/support-files
cp -a mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig mysqld on
systemctl status mysqld
step9 初始化:
mysqld --user=mysql --initialize #以mysql 用戶身份初始化
注意:初始化會生成一個臨時密碼,用于登錄 mysql(要記住此密碼)
比如:2019-01-03T09:06:09.448851Z 1 [Note] A temporary password is generated
for root@localhost: r#9VqAoA/au
r#9VqAoA/au就是臨時密碼
step10 啟動mysql:
systemctl start mysqld
step11 進入 mysql:
mysql -uroot -pr#9VqAoA/au: #使用剛才的臨時密碼(會有報錯,所以需要安全初始化)
step12 安全初始化:
mysql_secure_installation #然后會提示是否啟用密碼檢測插件,直接回車不啟用,否則會要求密碼有大小寫和特殊字符等要求;剩余全部選 y
mysql安裝配置完成
4. PHP源碼編譯
step1 解壓安裝包:
tar zxf php-7.4.1.tar.gz
step2 解決依賴性:
yum -y install bzip2
step3 進入解壓后的目錄,開始編譯:
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc \
--with-mysqli=/usr/local/lnmp/mysql/bin/mysql_config \
--enable-soap \
--enable-mbstring=all \
--enable-sockets \
--with-pdo-mysql=/usr/local/lnmp/mysql \
--enable-gd \
--without-pear \
--enable-fpm
step4 根據編譯過程中的報錯逐步解決依賴性:
可能會需要安裝的包:
yum install -y libxml2-devel
yum install -y libpng-devel
yum install -y oniguruma-*
step5 安裝:
make && make install
step6 拷貝更改配置文件:
cd /usr/local/lnmp/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf #開啟17行:pid = run/php-fpm.pid
step7 拷貝子配置文件:
cd /usr/local/lnmp/php/etc/php-fpm.d
cp www.conf.default www.conf
vim www.conf #更改23和24行內容如下
user = nginx
group = nginx
step8 拷貝更改php主配置文件:
cd php-7.4.1
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
vim /usr/local/lnmp/php/etc/php.ini #961行修改時區如下
date.timezone = Asia/Shanghai
step9 拷貝php啟動腳本至/etc/init.d/:
cd /root/lnmp/php-7.4.1/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm #添加執行權限
step10 啟動php:
/etc/init.d/php-fpm start
注意:
啟動報錯可能因為沒有 nginx 用戶,需要手動創建
useradd -u 900 nginx
php安裝配置完成
5. nginx的源碼編譯
step1 解壓安裝包
tar zxf nginx-1.16.0.tar.gz
step2 去掉nginx的版本號:
cd /root/lnmp/nginx-1.16.0
vim src/core/nginx.h
step3 關閉debug日至:
因為debug的日志非常多,企業中一般不需要開啟
vim auto/cc/gcc
做如下修改:
# debug
#CFLAGS="$CFLAGS -g" (將這2行注釋調,關閉debug)
step4 編譯安裝 nginx:
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx
step5 根據提示解決依賴性:
此處應該還需要安裝pcre-devel:
yum install pcre-devel -y
step6 安裝:
make && make install
step7 修改nginx配置文件,開啟php模塊:
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
step8 將nginx啟動腳本鏈接到/usr/local/sbin/:
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
step9 開啟nginx:
nginx -t ##檢測語法
nginx
step10 測試:
嘗試訪問http://172.25.254.1 ##是nginx默認頁面
在nginx默認發布目錄添加index.php:
vim /usr/local/lnmp/nginx/html/index.php
寫入:
<?php
phpinfo()
?>
刷新http://172.25.254.1可以看到php的默認頁面
nginx 安裝配置完成
智能推薦
搭建LNMP架構的辛酸歷程-----源碼編譯MYSQL,PHP,NGINX
搭建LNMP架構的辛酸歷程-----源碼編譯MYSQL,PHP,nginx 1.LNMP是什么? LNMP = Linux+Nginx+Mysql+PHP LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構。 Nginx中的PHP是以fastcgi的方式結合Nginx的,可以理解為Nginx代理了PHP的fastcgi。 LNMP和LAMP唯一不同是指提供web服...
企業級 ##LNMP架構的搭建(Linux+Nginx+MySQL+PHP源碼安裝)及搭建##
LNMP的工作原理: 首先,瀏覽器發送http request請求到服務器(Nginx),服務器響應并處理web請求,將一些靜態資源(CSS,圖片,視頻等)保存服務器上,然后將php腳本通過接口傳輸協議(網關協議)PHP-FCGI(fast-cgi)傳輸給PHP-FPM(進程管理程序),PHP-FPM不做處理,然后PHP-FPM調用PHP解析器進程,PHP解析器解析php腳本信息。PHP解析器進程...
CentOS 7.6 源碼安裝搭建LNMP架構(Nginx、MYSQL、PHP)
LNMP架構 LNMP是什么 搭建環境 搭建準備 LNMP軟件包 搭建nginx 搭建mysql數據庫 搭建php 搭建Discuz!論壇 LNMP是什么 LNMP:Linux系統下Nginx+MySQL+PHP這種網站服務器架構。Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器。Mysql是一個小型關系型數據庫管理系統。PHP是一種在服務器端執行的...
LNMP架構搭建(MYSQL,NGINX,PHP)
一、搭建 Nginx 解壓壓縮包 安裝nginx所需要的環境包 創建用戶,且不允許登錄系統 進入nginx解壓包路徑,配置nginx服務 安裝nginx服務 為了方便管理,可以給nginx創建一個軟連接 編寫一個腳本,可以用 systemctl 工具控制其開啟、關閉、重載 添加權限 關閉防火墻,啟動服務,在客戶機訪問,驗證服務 二、搭建 Mysql 解壓壓縮包 安裝工具,...
搭建LNMP架構(Nginx、mysql、php)
目錄 一、安裝Nginx 1.1 Nginx介紹 1.2 準備工作 1.3 源碼編譯及安裝 1.4 優化執行路徑 1.5 制作管理腳本 二、部署Mysql數據庫 2.1 準備工作 2.2 Mysql源碼編譯及安裝 3.3 調整安裝路徑文件的權限 3.4 調整配置文件 3.5 設置環境變量 3.6 初始化數據庫 3.7 開啟數據庫 3.8 為數據庫設置管理員密碼 三、 安裝PHP 3.1 準備工作 ...
猜你喜歡
LNMP源碼編譯 ( Linux 、Nginx 、 MySQL 、PHP)
一 介紹LNMP 有兩種架構是目前網站的主流架構 LAMP = Linux + Apache + MySQL +PHP LNMP = Linux + Nginx + MySQL +PHP LAMP和LNMP是一組常用來搭建動態網站或者服務器的開源軟件,本身都是各自獨立的程序,但是因為常被放到一起使用,擁有了越來越高的兼容度,共同組成了一個強大的Web應用程序平臺。 Linux: 開源免費軟件,作為...
mysql + php + nginx (LNMP)源碼編譯安裝
mysql源碼編譯安裝 官網下載mysql安裝包 : mysql-boost-5.7.22.tar.gz mysql源碼安裝需要使用c++的boost庫,而mysql-boost壓縮包自帶boost庫,不需要在下載boost安裝包,mysql在3.8版本以后使用cmake跨平臺工具預編譯源碼,用于設置mysql的編譯參數;bison 一種linux下的c/c++語法分析器; php源碼編譯安裝 p...
lnmp(一)php、nginx、mysql源碼編譯的過程(lnmp的搭建)
簡介 LNMP是指一-組通常一起使用來運行動態網站或者服務器的自由軟件名稱首字母縮寫。L指Linux, N指Nginx, M-般指MySQL,也可以指MariaDB, P一般指PHP,也可以指Perl或Python 實驗環境 虛擬機server1(172.25.254.10) 用來搭建lnmp架構 真機(172.25.254.2) 用來測試 mysql源碼編譯時要求虛擬機的硬盤大小不能小于20G,...
LNMP架構環境搭建之PHP、Nginx源碼編譯安裝及其簡單配置應用
LNMP架構中的Mysql見上一篇博文“LNMP架構環境搭建之mysql源碼編譯安裝” 一、PHP簡介 PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利于學習,使用廣泛,主要適用于Web開發領域。PHP 獨特的語法混合了C、Jav...
mysql、php、nginx源碼編譯、LNMP架構、memcached緩存配置、openresty+memcached實現緩存
一、mysql源碼編譯安裝 server1: 安裝依賴性 可能出現的錯誤 開始編譯 編輯配置文件 建立用戶 添加權限 數據庫初始化 數據庫初始化出現這種錯誤時: 解決辦法: 更改目錄權限 mysql 安全設置 登陸查看 二、php源碼安裝 server1: 解決依賴性 開始編譯 建立用戶 進程查看 查看端口 三、nginx源碼編譯 解決依賴性 開始編譯 檢測 修改默認發布文件 檢測 四、搭建論壇 ...