lnmp架構搭建—源碼編譯(nginx、mysql、php)

含義及理解:

LNMP = Linux+Nginx+Mysql+PHP:LNMP是指一組通常一起使用來運行動態網站或者服務器的自由軟件名稱首字母縮寫。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。LNMP代表的就是linux系統下Nginx+MySQL+PHP這種網站服務器架構。Nginx中的PHP是以fastcgi的方式結合Nginx的,可以理解為Nginx代理了PHP的fastcgi。

Nginx 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器。
Mysql是一個小型關系型數據庫管理系統。
PHP 是一種在服務器端執行的嵌入HTML文檔的腳本語言。

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的形式傳送給瀏覽器。瀏覽器再進行解析與渲染然后進行呈現。

LNMP特點:Nginx性能穩定、功能豐富、運維簡單、處理靜態文件速度快且消耗系統資源極少。

nginx的編譯與安裝:

Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供IMAP/POP3/SMTP服務
開啟一臺虛擬機作為lnmp服務器主機
準備好lnmp相關的源碼包并解壓

tar zxf nginx-1.15.9.tar.gz
cd nginx-1.15.9/
ls

在這里插入圖片描述
修改配置文件使不顯示nginx版本

cd nginx-1.15.9/src/core
vim nginx.h
刪除第14行 nginx后面的內容

加快安裝,是nginx占用空間更小一點

cd nginx-1.15.9/auto/cc/
vim gcc
將第172行注釋掉

解決編譯過程中一些軟件的依賴性
在實際操作過程中,要根據具體的報錯情況來安裝軟件或插件解決依賴性

yum install gcc pcre-devel openssl-devel -y

編譯并安裝

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module
make && make install

編譯安裝成功查看

cd /usr/local/lnmp/nginx
ls

在這里插入圖片描述

創建nginx用戶并在配置文件更改

id nginx
useradd nginx
cd /usr/local/lnmp/nginx/conf
vim nginx.conf

在這里插入圖片描述
添加軟連接并測試

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
nginx 
nginx
netstat -antlp

在這里插入圖片描述
測試
在這里插入圖片描述

本地發布網頁目錄

vim /usr/local/lnmp/nginx/html/index.html

設置后端網頁虛擬主機
在lnmp服務器端修改配置文件

cd /usr/local/lnmp/nginx/conf
vim nginx.conf      在末尾行加入
  server {listen       80;server_name  www.cc.com;location / {root html/www;index index.html;
}
}  server {listen       80;server_name  bbs.cc.com;location / {root html/bbs;index index.html;
}
}server {listen       80;server_name  blog.cc.com;location / {root html/blog;index index.html;
}
}  
}

在默認發布目錄下創建目錄并寫入對應網頁

cd /usr/local/lnmp/nginx/html
mkdir www
cd www
vim index.html

檢測配置文件語法并重啟服務

nginx -t
nginx -s reload

測試:
在真機注意更改本地解析

curl www.cc.com
curl bbs.cc.com
curl blog.cc.com

在這里插入圖片描述
設置均衡負載
在開啟兩臺虛擬機,安裝httpd,寫入網頁并開啟服務

在lnmp服務器虛擬機修改配置文件

cd /usr/local/lnmp/nginx/conf
vim nginx.conf
http {include       mime.types;default_type  application/octet-stream;upstream cc {server 172.25.11.1:80;server 172.25.11.2:80;
}將之前設定的網頁虛擬主機注釋
server {listen 80;server_name www.cc.com;location / {proxy_pass http://cc;
}  
}
}

檢測語法并重啟nginx

nginx -t
nginx -s reload

測試:
在這里插入圖片描述

mysql的編譯安裝及設置

在編譯安裝mysql之前關閉nginx

nginx -s stop

準備好源碼包并解壓

tar zxf mysql-boost-5.7.17.tar.gz
cd mysql-5.7.17/
ls

安裝編譯過程中有依賴性的軟件(實際操作中,請根據自身情況來安裝)

yum install -y cmake-2.8.12.2-4.el7.x86_64.rpm
yum install -y gcc gcc-c++ ncurses-devel
yum install -y bison

安裝依賴性軟件后進行mysql的編譯安裝
編譯安裝時間較長

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/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/

編譯好之后安裝

make && make install

安裝成功,查看

cd /usr/local/lnmp/mysql
ls

在這里插入圖片描述
復制啟動腳本到/etc/init.d/

cd /lnmp安裝包/mysql-5.7.17/support-files
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld

將原來的/etc/my.cnf備份,重新拷貝安裝包里的過去

cd /etc
cp my.cnf my.cnf.bak
cd /lnmp安裝包/mysql-5.7.17/support-files/
cp my-default.cnf /etc/my.cnf
vim /etc/my.cnf
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock

在這里插入圖片描述
添加用戶和組

groupadd -g 27 mysql
useradd -u 27 -g 27 mysql (id=27是因為rpm默認安裝時mysql用戶的id為27,并非強制)
chown mysql.mysql /usr/local/lnmp/mysql -R (修改mysql目錄的權限,使其對mysql用戶可寫)

將mysql命令添加到環境變量

vim ~/.bash_profile
添加:PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
source ~/.bash_profile      使文件生效

初始化和安全初始化mysql

mysqld --user=mysql --initialize(以mysql用戶身份初始化)
初始化會生成一個臨時密碼,用于登錄mysql(要記住此密碼)

在這里插入圖片描述
為了安全,再將mysql目錄的所有者改為root

chown root /usr/local/lnmp/mysql -R
chown mysql /usr/local/lnmp/mysql/data -R  ##數據目錄所有者必須是mysql,不然mysql用戶不能寫

啟動mysql 并安全初始化

/etc/init.d/mysqld start
mysql_secure_installation  然后會提示是否啟用密碼檢測插件,直接回車不啟用

測試登陸mysql并查看

在這里插入圖片描述

php的編譯安裝及設置

準備好源碼包并解壓

yum -y install bzip2
tar jxf php-5.6.35.tar.bz2

解決編譯過程中軟件的依賴性(實際操作中,請根據自身情況來安裝)

yum install -y libxml2-devel libcurl-devel
yum install -y libjpeg-turbo-devel-1.2.1-1.el6.x86_64 libjpeg-turbo-devel-1.2.90-5.el7.x86_64
yum install -y libpng-devel-1.2.49-1.el6_2.x86_64 libpng-devel-1.5.13-7.el7_2.x86_64
yum install -y freetype freetype-devel
yum install -y net-snmp net-snmp-develcd /lnmp安裝包
yum install -y re2c-0.13.5-1.el6.x86_64.rpm libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm

開始編譯并安裝

./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhashmake && make install

拷貝更改配置文件

cd /usr/local/lnmp/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
查看配置文件中以下幾項是否開啟:
user = nginx
group = nginx
pid = run/php-fpm.pid

拷貝更改php主配置文件

cd /lnmp安裝包/php-5.6.35
cp php.ini-production /usr/local/lnmp/php/etc/php.ini 
cd /usr/local/lnmp/php/etc
vim php.ini
修改時區:
date.timezone = Asia/Shanghai

在這里插入圖片描述
拷貝php啟動腳本至/etc/init.d/

cd /lnmp/php-5.6.35/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

啟動php

/etc/init.d/php-fpm start

查看網絡端口

netstat -antlp

在這里插入圖片描述

LNMP架構部署

先確保nginx、mysql、php都是開啟狀態
查看端口:

netstat -antlp

在這里插入圖片描述
安裝論壇前測試php網頁

并修改nginx配置文件

cd /usr/local/lnmp/nginx/conf
vim nginx.conf注釋掉之前設定的負載均衡集群
并且開啟php界面設定、增加index.php文件

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
檢測語語法并重啟nginx

nginx -t
nginx -s reload

編寫php測試網頁

cd /usr/local/lnmp/nginxhtml
vim index.php

在這里插入圖片描述
在這里插入圖片描述
自行準備好論壇的壓縮包
安裝解壓命令并解壓文件到指定目錄

yum install -y unzip
unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/

切換到解壓目錄并查看文件
重命名 uoload 為bbs
并給目錄增加權限

cd /usr/local/lnmp/nginx/html
ls
mv upload bbs
chmod 777 config/ -R
chmod 777 data/ -R
chmod 777 uc_server/ uc_client/  -R

編輯php主配置文件

并重啟php

vim /usr/local/lnmp/php/etc/php.inipdo_mysql.default_socket= /usr/local/lnmp/mysql/data/mysql.sock
mysql.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
mysqli.default_socket = /usr/local/lnmp/mysql/data/mysql.sock/etc/init.d/php-fpm reload

由于 nginx用戶 對于 /usr/local/lnmp/mysql/data 目錄沒有權限

cd /usr/local/lnmp/mysql
chmod 755 data/

打開瀏覽器開始安裝部署
172.25.11.4/bbs
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
這里輸入mysql密碼并設定論壇管理者密碼

在這里插入圖片描述
點擊右上角管理中心進入管理
在這里插入圖片描述

在這里插入圖片描述
發現沒有界面

解決如下:

cd /usr/local/lnmp/nginx/html/bbs/install
rm -fr index.php

重新刷新管理界面

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542043.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542043.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542043.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java PipedInputStream available()方法與示例

PipedInputStream類的available()方法 (PipedInputStream Class available() method) available() method is available in java.io package. available()方法在java.io包中可用。 available() method is used to return the number of available bytes left that can be read …

解析xml_Mybatis中mapper的xml解析詳解

上一篇文章分析了mapper注解關鍵類MapperAnnotationBuilder,今天來看mapper的項目了解析關鍵類XMLMapperBuilder。基礎介紹回顧下之前是在分析configuration的初始化過程,已經進行到了最后一步mapperElement(root.evalNode("mappers"))&#x…

lnmp—MemCache的作用

含義及理解: 1 . memcache是一個高性能的分布式的內存對象緩存系統,用于動態web應用以減輕數據庫負擔。通過在內存里維護一個統一的巨大的hash表,來存儲經常被讀寫的一些數組與文件,從而極大的提高網站的運行效率。 memcache是一…

Java ListResourceBundle getKeys()方法與示例

ListResourceBundle類的getContents()方法 (ListResourceBundle Class getContents() method) getContents() method is available in java.util package. getContents()方法在java.util包中可用。 getContents() method is used to return an enumeration of all the keys tha…

orale用戶密碼過期處理

使用具有管理權限的用戶登錄1、查看用戶的proifle是哪個,一般是default:SELECT username,PROFILE FROM dba_users;2、查看指定概要文件(如default)的密碼有效期設置:sql>SELECT * FROM dba_profiles s WHERE s.prof…

python字典怎么設置_在python中設置字典中的屬性

在python中設置字典中的屬性是否可以在python中從字典創建一個對象,使每個鍵都是該對象的屬性?像這樣的東西:d { name: Oscar, lastName: Reyes, age:32 }e Employee(d)print e.name # Oscarprint e.age 10 # 42我認為這幾乎與這個問題相反…

Java ObjectInputStream readByte()方法與示例

ObjectInputStream類readByte()方法 (ObjectInputStream Class readByte() method) readByte() method is available in java.io package. readByte()方法在java.io包中可用。 readByte() method is used to read a byte (i.e. 8 bit) of data from this ObjectInputStream. re…

openresty—實現緩存前移

含義及理解: OpenResty(又稱:ngx_openresty) 是一個基于 NGINX 的可伸縮的 Web 平臺,由中國人章亦春發起,提供了很多高質量的第三方模塊。 其目標是讓Web服務直接跑在Nginx服務內部,充分利用Nginx的非阻塞I/O模型&am…

Nginx+Keepalived+Tomcat之動靜分離的web集群

NginxKeepalivedTomcat之動靜分離的web集群 博客分類: webserverNginxKeepalivedTomcat之動靜分離的web集群為小公司提供大概一天持續在100萬/日之間訪問的高性能、高可用、高并發訪問及動靜分離的web集群方案NginxKeepalived 高可用、反向代理NginxPHP …

安裝完成后的配置_cent os7 默認安裝后的一般配置

在安裝cent os7后,進入系統會出現一些命令無法執行。這是因為最小化沒有安裝包含的軟件包。這時候先要配置一下基本的IP參數,(包括動態,靜態,或者是雙網卡綁定)。我們在虛擬機中模擬操作一下,配置文件在/etc/sysconfig…

Java Integer類lowerOneBit()方法與示例

整數類lowerOneBit()方法 (Integer class lowestOneBit() method) lowestOneBit() method is available in java.lang package. minimumOneBit()方法在java.lang包中可用。 lowestOneBit() method is used to find at most only single 1’s bit from the rightmost side one b…

lnmp構架——對tomcat詳解

tomcat的安裝部署 安裝jdk和tomcat tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/ tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/做好軟連接便于訪問 cd /usr/local ln -s jdk1.7.0_79/ java ln -s apache-tomcat-7.0.37/ tomcat配置環境變量 vim /etc/profile…

Linux 查找文件

find 查找目錄 -name "文件名"find / -name "php.ini"locate 文件名locate php.ini 一:locate命令 locate命令用于查找文件,它比find命令的搜索速度快,它需要一個數據庫,這個數據庫由每天的例行工作&#xff…

Java GregorianCalendar hashCode()方法與示例

GregorianCalendar類的hashCode()方法 (GregorianCalendar Class hashCode() method) hashCode() method is available in java.util package. hashCode()方法在java.util包中可用。 hashCode() method is used to returns the hash code for this GregorianCalendar. hashCode…

python元組為什么不可變_為什么python字符串和元組是不可變的?

我不知道為什么字符串和元組是不可變的;使它們不可變的優點和缺點是什么?除了Python解釋器的內部實現,這種設計在編寫程序上是否有很好的意義?(例如,如果元組和字符串是可變的,會更容易嗎?)如果…

InnoDB事務結構體代碼變量列表

事務結構 struct trx_t 寫在前面 InnoDB是MySQL的一個存儲引擎,支持事務,支持非堵塞的一致性讀,物理存儲結構是Page,每個事務都有回滾日志,重做日志,事務還會有死鎖檢測,各種各樣不同的鎖等等等…

對cookie與session的理解

cookie: 在網站中,http請求是無狀態的。也就是說即使第一次和服務器連接后并且登錄成功后,第二次請求服務器依然不能知道當前請求是哪個用戶。 cookie的出現就是為了解決這個問題, 第一次登錄后服務器返回一些數據(…

ubutun 更換網絡源_Ubuntu 更換源

1.切換到root用戶# su root備份源文件 目錄:/etc/apt# cd /etc/apt/# cp sources.list sources.list.bk3.更換源 阿里源 清華源# >sources.list # 清空源# vim sources.list # 選擇一個源,復制進去# apt update # 更新源,需要等幾分鐘# ex…

php : 常用函數

常用函數&#xff1a; <?php /*** 獲取客戶端IP* return [string] [description]*/ function getClientIp() {$ip NULL;if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {$arr explode(,, $_SERVER[HTTP_X_FORWARDED_FOR]);$pos array_search(unknown,$arr);if(false ! $po…

java日歷類add方法_Java日歷setFirstDayOfWeek()方法與示例

java日歷類add方法日歷類setFirstDayOfWeek()方法 (Calendar Class setFirstDayOfWeek() method) setFirstDayOfWeek() method is available in java.util package. setFirstDayOfWeek()方法在java.util包中可用。 setFirstDayOfWeek() method is used to sets the first day o…