九.LNMP網站架構實踐部署

期中集羣架構-第九章-期中架構LNMP章節
======================================================================php

01. LNMP架構說明
   1)使前端web服務和後端存儲服務進行串聯
   2)主要實現處理PHP程序動態請求

02. LNMP架構工做原理
    L--Linux  N--nginx  M--mysql  P--php
 html

03. LNMP架構部署前端


1)安裝LNMP相關軟件
   ①. 部署Linux系統
      基礎優化操做要完成(防火牆關閉 關閉selinux /tmp權限爲1777)mysql

   . 部署nginx服務
      暫時忽略 
  ③. 部署mysql服務
yum部署軟件 linux

編譯安裝軟件 nginx

二進制包方式部署mysql服務
第一個里程:下載並解壓mysql軟件程序
   mysql官方下載連接地址:ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/
   上傳mysql軟件程序,進行利用xftp軟件進行上傳
   tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
   mv mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34

第二個里程:建立軟件程序軟連接
   ln -sf /application/mysql-5.6.34/ /application/mysql
   若是軟連接已經存在  -f 強制建立
第三個里程:建立數據庫管理用戶,並受權數據目錄
   useradd mysql -M -s /sbin/nologin
   chown -R mysql.mysql /application/mysql/data/

第四個里程:對數據庫服務進行初始化
   /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data/ --user=mysql
   basedir對哪個數據庫進行初始化,後期學習一個系統中部署幾個數據庫因此須要指定web

   datadir指定數據目錄  user指定數據庫目錄管理帳戶sql

第五個里程:啓動mysql服務
   cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld數據庫

    mysql.server 啓動腳本文件  把文件複製到 開機啓動文件夾中vim

sed -ri 's#/usr/local#/application#g' /etc/init.d/mysqld /application/mysql/bin/mysqld_safe

  vim mysql.server看到默認的basedir不在咱們建立的application中,須要修改

vim mysqld_safe控制mysql服務是否可以正常啓動的命令看到默認識別的程序目錄

也不是/applicastion 須要修改

   cp /application/mysql/support-files/my-default.cnf /etc/my.cnf

  /etc/my.cnf系統自帶的mysql 配置文件 跟咱們的版本可能不匹配

  cp  mysql裏的配置文件過去

最後啓動 mysql
   /etc/init.d/mysqld start

 

第六個里程:設置數據庫root用戶登陸密碼
   設置密碼/application/mysql/bin/mysqladmin -uroot password "oldboy123"
   登錄/application/mysql/bin/mysql -uroot -poldboy123
   進入數據庫全部的操做都是用的sql語句

   show databases;   顯示全部的數據庫內容

④. PHP軟件安裝部署過程
第一里程:解決PHP軟件的依賴關係
   yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-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
   cd ../

   #wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

   部署repo源以前已經操做過了
   yum -y install libmcrypt-devel mhash mcrypt  加密相關軟件
   rpm -qa libmcrypt-devel mhash mcrypt

第二個里程:下載解壓PHP軟件
   php官方網站下載:php.net
   cd /server/tools/
   tar xf php-5.5.32.tar.gz
   cd php-5.5.32 進入目錄配置php 不須要區瞭解每一個配置的類容

如下配置方法是彙總實際工做的一個配置
   ./configure \
   --prefix=/application/php-5.5.32 \
   --with-mysql=/application/mysql-5.6.34 \
   --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

   /server/tools/php-5.5.32/ext/phar/phar.phar
   make
   make install
   ln -s /application/php-5.5.32/ /application/php

 

第三個里程:設置PHP程序配置文件
   php.ini   php-fpm.ini兩個配置文件

   php.ini 放在安裝包裏面
   cp php.ini-production /application/php-5.5.32/lib/

一下命令是由於建立了軟連接

   cd /application/php/etc/

裏面有個php-fpm.conf.default 備份文件程序不能加載

因此備份重命名
   cp php-fpm.conf.default php-fpm.conf

第四個里程:啓動php程序服務
   /application/php/sbin/php-fpm
   netstat -lntup|grep php

   添加到、vim /etc/rc.local 開機自動開啓
   tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 6251/php-fpm


2)進行軟件直接的結合
   nginx與php結合:編寫nginx配置文件
   location ~* .*\.(php|php5)?$ {
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      include fastcgi.conf;
   }
以上匹配到php或php5的都給9000端口,默認使用這個配置便可不用過多關注

而後重啓

測試

cd /application/nginx/html/blog/ 進入blog站點目錄

\rm ./* -fr清空裏面的類容

vim test_info.php編寫php的測試網頁

http://blog.etiantian.org/test_info.php  瀏覽器打開

動態解析成功!

php與mysql結合:編寫php程序代碼

編寫生成到相應站點目錄下如 /application/nginx/html/blog

# vim test_mysql.php
   <?php
      //$link_id=mysql_connect('主機名','用戶','密碼');
      //mysql -u用戶 -p密碼 -h 主機
      $link_id=mysql_connect('localhost','root','oldboy123') or mysql_error();
      if($link_id){
                    echo "mysql successful by oldboy !\n";
         }else{
                    echo mysql_error();
      }
   ?>

解釋:

$link_id=mysql_connect 設置變量=調用了一個php調用mysql的函數

localhost---mysql服務器在哪 哪兒登錄過去的 這裏設置的本地

root---登錄數據庫的用戶 後面爲密碼

if判斷若是成功 則顯示 echo " "

若是失敗echo  就調用or後面的mysql_error()函數

==========================================
測試瀏覽器打開http://blog.etiantian.org/test_mysql.php

顯示 

結合成功!


3)部署一個真的網站
第一個里程:下載與上傳網站代碼

wordpress-4.7.3-zh_CN.tar.gz 一個開源的博客網站代碼

第二個里程:解壓程序代碼,將程序代碼保存到站點目錄並進行受權
   tar xf wordpress-4.7.3-zh_CN.tar.gz
   mv wordpress/* /application/nginx/html/blog/

   移動過去的文件不少都是nobody的權限,須要修改

   修改爲nginx: worker進程的用戶

   chown -R www.www /application/nginx/html/blog/
無論客戶端是什麼身份訪問網站都會作一個映射,轉換成www用戶


第三個里程:直接訪問blog網站,進行初始化操做

http://blog.etiantian.org/ 出錯

配置文件裏默認沒有請求指定文件時返回的是index.html

但此時在/application/nginx/html/blog裏並無index.html首頁存在

因此報錯403 

 咱們如今不是默認訪問靜態資源 ,如今是動態資源因此加上index.php

重啓reload 再次進入網站

 

建立數據庫:

進入mysql

# /application/mysql/bin/mysql -uroot -poldboy123
   create database wordpress; 建立一個數據庫
   show databases; 檢查 WordPress數據庫是否建立好了



grant all on wordpress.* to 'wordpress'@'localhost' identified by 'oldboy123';

建立連接數據庫用戶 和密碼
select user,host from mysql.user;
檢查mysql自帶的用戶表看有沒有建立的信息

接着安裝

 

提示"要執行請求的操做,WordPress須要訪問您網頁服務器的權限。 請輸入您的FTP登陸憑據以繼續。 若是您忘記了您的登陸憑據(如用戶名、密碼),請聯繫您的網站託管商。"

添加好網站目錄權限與nginx進程權限一致
下一個章節:
01. LNMP架構數據庫服務的遷移
02. LNMP架構數據資源遷移到NFS服務器存儲
03. nginx反向代理與負載均衡功能

相關文章
相關標籤/搜索