LNMP架構
LNMP架構介紹
1)使前端web服務和後端存儲服務進行串聯
2)主要實現處理PHP程序動態請求
LNMP的工做原理
LNMP:
L:表示linux
N:表示Nginx
M:表示mysql
P:表示PHP
工做原理:
前端接收用戶的請求,到達nginx後,nginx服務會先判斷用戶的請求是否能夠處理,若是能夠處理的先本身處理,若是處理不了的,nginx服務先經過fastcgi_pass指令與經過fastcgi接口將處理不了的請求拋送給PHP服務,php會經過php-fpm進程來接收到nginx拋送過來的請求,同時php服務會經過wrapper進程來識別這個請求,而後會交給php的解析器來進行識別,php解析器識別後會調取數據庫資源,讓數據庫識別用戶的請求,最終將要調取的數據識別出來,返還給php進程wrapper,再返還給php進程php-fpm,再返回給fastgci接口交給nginx客戶端,nginx客戶端接收到這個請求的結果響應給用戶
LNMP架構部署
第一步:安裝LNMP架構相關軟件
1.部署linux系統
部署完成後,須要進行基礎優化(防火牆關閉,selinux關閉,/tmp目錄權限爲1777)
2.部署nginx服務
安裝過程詳解:http://1a7f2dd7.wiz03.com/share/s/0qvOTn10-AEH29_zxM18oPGG1QICGl14RkIx2GujYl2NuYca
3.部署mysql服務
第一個里程:下載mysql軟件
mysql官方下載連接地址:ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/
wget ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
[root@web01 tools]# tar xf mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
[root@web01 tools]# mv mysql-5.6.41-linux-glibc2.12-x86_64 /application/mysql-5.6
第二個里程:建立軟連接
[root@web01 mysql-5.6]# ln -s /application/mysql-5.6/ /application/mysql
第三個里程:建立數據庫管理用戶,並進行受權數據目錄
[root@web01 mysql]# useradd -M -s /sbin/nologin mysql
[root@web01 mysql]# chown -R mysql. /application/mysql/data/
第四個里程:對數據庫進行初始化
[root@web01 mysql]# scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data/ --user=mysql
第五個里程:啓動mysql服務
[root@web01 mysql]# cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
#將默認位的mysql位置改爲如今安裝的位置
[root@web01 mysql]# sed -ri "s#/usr/local#/application#g" /etc/init.d/mysqld /application/mysql/bin/mysqld_safe
#因版本不一樣,須要如今的配置文件覆蓋系統原來的配置文件
[root@web01 mysql]# cp /application/mysql/support-files/my-default.cnf /etc/my.cnf
cp: overwrite `/etc/my.cnf'? y
[root@web01 mysql]# /etc/init.d/mysqld start
第六個里程:設置mysql密碼
[root@web01 ~]# /application/mysql/bin/mysqladmin -uroot password "oldboy"
[root@web01 ~]# /application/mysql/bin/mysql -uroot -poldboy
第二步:部署PHP環境
第一個里程:安裝PHP軟件依賴關係
[root@web01 tools]# yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-t urbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel
libiconv軟件安裝---字符集轉換庫(默承認以不進行安裝了)
cd /server/tools
#wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make && make install
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install libmcrypt-devel mhash mcrypt
rpm -qa libmcrypt-devel mhash mcrypt
第二個里程:安裝PHP軟件
php官方網站下載:php.net
本地不安裝mysql, 將--with-mysqli=mysqlnd設爲mysqlnd便可
[root@web01 sbin]#
./configure \
--prefix=/application/php-5.5.32 \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--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-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--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-soap \
--enable-short-tags \
--enable-static \
--with-xsl \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-ftp \
--enable-opcache=no
##防錯(如下信息能夠不進行配置了)
ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/
touch ext/phar/phar.phar
make && make install
ln -s /application/php-5.5.32/ /application/php
第三個里程:設置PHP程序配置文件
cp php.ini-production /application/php-5.5.32/lib/
cd /application/php/etc/
cp php-fpm.conf.default php-fpm.conf
第四個里程:啓動PHP服務
/application/php/sbin/php-fpm
netstat -lntup|grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 6251/php-fpm
第三部:進行軟件直接的結合,nginx與php結合
1.編寫nginx配置文件
[root@web01 blog]# cat ../../conf/extra/blog.conf
server {
listen 80;
server_name blog.etiantian.org;
root html/blog;
index index.php index.html index.htm;
location ~* .*\.(php|php5)?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
[root@web01 blog]#
2.編輯php頁面
[root@web01 blog]# cat test_info.php
<?php
//$link_id=mysql_connect('主機名','用戶','密碼');
//mysql -u用戶 -p密碼 -h 主機
$link_id=mysql_connect('localhost','root','oldboy') or mysql_error();
if($link_id){
echo "mysql successful by oldboy !\n";
}else{
echo mysql_error();
}
?>
3.測試訪問
部署一個真實的網站
第一個里程:上傳和下載網站代碼
第二個里程:解壓代碼程序,將代碼和序保存到站點目錄並進行受權
cd /server/tools
tar xf wordpress-4.7.3-zh_CN.tar.gz
mv wordpress/* /application/nginx/html/blog/
chown -R www.www /application/nginx/html/blog/
第三個里程:直接訪問blog網站,進行初始化操做
建立數據庫:
create database wordpress;
show databases;
建立鏈接數據用戶信息
grant all on wordpress.* to 'wordpress'@'localhost' identified by 'oldboy123';
select user,host from mysql.user;