LNAMP源碼安裝整合加論壇及動靜分離


LNAMP(Linux+Nginx+Apache+Mysql+PHP)架構受到很多IT企業的青睞,取代了原來認爲很好的LNMP(Linux+Nginx+Mysql+PHP)架構,那我們說LNAMP到底有什麼優點呢,還得從Nginx和apache的優缺點說起。

Nginx處理靜態文件能力很強,Apache處理動態文件很強而且很穩定,把二者綜合在一塊,性能提升很多倍。可能很多Linux SA在從事LNMP運維中,會發現PHP(FastCGI)模式會出現一些502錯誤的現象,這是因爲Nginx+PHP(FastCGI)組合不穩定的原因造成的。

  實驗機:

[root@192_168_77_189 ~]# uname -a
Linux 192_168_77_189 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@192_168_77_189 ~]# cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m
  • 源碼安裝LNAMP之Nginx

[root@192_168_77_189 ~]# yum install pcre pcre-devel -y      #依賴包

[root@192_168_77_189 autolamp]# tar -xzvf nginx-1.8.0.tar.gz 

[root@192_168_77_189 nginx-1.8.0]# ./configure  --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

[root@192_168_77_189 nginx-1.8.0]# make && make install

[root@192_168_77_189 nginx-1.8.0]# /usr/local/nginx/sbin/nginx

[root@192_168_77_189 nginx-1.8.0]# ps -ef | grep nginx    
root      9982     1  0 19:38 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody    9983  9982  0 19:38 ?        00:00:00 nginx: worker process      
root      9987  7577  0 19:38 pts/1    00:00:00 grep nginx
  • 源碼安裝LNAMP之Apache

[root@192_168_77_189 autolamp]# yum -y install epel-release 

[root@192_168_77_189 apr-1.5.2]# ./configure --prefix=/usr/local/apr

[root@192_168_77_189 apr-1.5.2]# make && make install

[root@192_168_77_189 apr-util-1.5.2]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

[root@192_168_77_189 apr-util-1.5.2]# make && make install



[root@192_168_77_189 httpd-2.4.16]# ./configure --prefix=/usr/local/apache  --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=event

[root@192_168_77_189 httpd-2.4.16]# make && make install
  • 源碼安裝LNAMP之MySQL

 yum install gcc gcc-c++ make cmake  ncurses-devel bison perl
 
 [root@192_168_77_189 mysql-5.5.44]# cmake -DCMAKE_INSTALL_PREFIX=/data/app/mysql3306 -DMYSQL_DATADIR=/data/mysql3306  -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0 -DMYSQL_USER=mysql -DMYSQL_UNIX_ADDR=/data/mysql3306/mysql3306.sock
 
 [root@192_168_77_189 mysql-5.5.44]#  make && make install
 
 
 [root@192_168_77_189 mysql-5.5.44]# cp -a support-files/my-large.cnf /data/mysql3306/my.cnf
 
 [root@192_168_77_189 data]# chown mysql.mysql app/ -R
[root@192_168_77_189 data]# chown mysql.mysql mysql3306/ -R 

[root@192_168_77_189 mysql3306]# cp -a support-files/mysql.server /etc/init.d/mysqld


[root@192_168_77_189 mysql3306]# cd /data/app/mysql3306/ 


[root@192_168_77_189 mysql3306]# ./scripts/mysql_install_db --basedir=/data/app/mysql3306/ --datadir=/data/mysql3306/ --user=mysql

[root@192_168_77_189 mysql3306]#  echo "export PATH="\$PATH":/data/app/mysql3306/bin/" >>/root/.bash_profile && source /root/.bash_profile 

[root@192_168_77_189 mysql3306]# /etc/init.d/mysqld restart
Shutting down MySQL. SUCCESS! 
Starting MySQL.. SUCCESS!
  • 源碼安裝LNAMP之PHP

yum install libxml2-devel  libmcrypt-devel bzip2-devel 
libxml2-devel openssl-devel  bzip2 bzip2-devel

[root@192_168_77_189 php-5.4.42]# ./configure --prefix=/usr/local/php --with-mysql=/data/app/mysql3306 --with-openssl --with-mysqli=/data/app/mysql3306/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-bz2 --with-config-file-path=/etc/php/php.ini --with-config-file-scan-dir=/etc/php/php.d/ --with-apxs2=/usr/local/apache/bin/apxs


[root@192_168_77_189 php-5.4.42]# make && make install
  • 源碼安裝Apache+PHP整合

[root@192_168_77_189 php-5.4.42]# echo "Addtype application/x-httpd-php  .php" >> /usr/local/apache/conf/httpd.conf

[root@192_168_77_189 php-5.4.42]# sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php index.html/g' /usr/local/apache/conf/httpd.conf


[root@192_168_77_189 php-5.4.42]# /usr/local/apache/bin/apachectl -t
  00557: httpd: apr_sockaddr_info_get() failed for 192_168_77_189
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK


ServerName www.example.com:80改成ServerName localhost:80即可

[root@192_168_77_189 conf]# /usr/local/apache/bin/apachectl -t
Syntax OK

[root@192_168_77_189 conf]# ps -ef | grep http
root     23847     1  0 21:05 ?        00:00:00 /usr/local/apache/bin/httpd -k restart
daemon   23849 23847  0 21:05 ?        00:00:00 /usr/local/apache/bin/httpd -k restart
daemon   23850 23847  0 21:05 ?        00:00:00 /usr/local/apache/bin/httpd -k restart
daemon   23851 23847  0 21:05 ?        00:00:00 /usr/local/apache/bin/httpd -k restart
daemon   23937 23847  0 21:06 ?        00:00:00 /usr/local/apache/bin/httpd -k restart
root     23973 22611  0 21:10 pts/1    00:00:00 grep http

[root@192_168_77_189 ~]# cd /usr/local/apache/htdocs/

在index.php裏添加
<?php
phpinfo();
?>
~  在客戶端輸入http://192.168.77.189/ 測試得到以下頁面

wKiom1XMm_Lg5430AAMujtnCFLI513.jpg


  • 源碼安裝DISCUZ論壇

下載discuz源碼包文件

[root@192_168_77_189 ~]# wget 

[root@192_168_77_189 autolamp]# unzip Discuz_X3.1_SC_UTF8.zip -d /usr/local/apache/htdocs/

[root@192_168_77_189 autolamp]# cd /usr/local/apache/htdocs/;mv upload/* .

[root@192_168_77_189 htdocs]# chmod 777 -R data/ uc_server/ config/ uc_client/


然後訪問http://192.168.77.189/安裝discuz論壇,如下圖,選擇“我同意”

wKioL1XMn4yQ0ngfAAQc0AQNcxo275.jpg

wKiom1XMnfyywpiqAAH_gr_v1HU013.jpg

數據庫授權:

[root@192_168_77_189 ~]# /data/app/mysql3306/bin/mysql   登錄,這裏數據庫沒有設置密碼


mysql> create database discuz charset=utf8;


grant all on discuz.* to  identified by "123456";   授權

然後在論壇頁面輸入賬號信息一路下一步就安裝成功了。。。。。。。。。。

wKioL1XMoeziRHm9AAJw-arhG04871.jpg

自此LAMP環境整合並搭建成功,那如何使用Nginx來整合LAMP呢?


  • 源碼安裝Nginx+LAMP整合

先修改apache訪問端口爲8080,Nginx端口默認爲80

然後修改nginx配置文件: vi/usr/local/nginx/conf/nginx.conf,server配置段內容如下:

(定義upstream均衡模塊,配置動靜分離,動態轉發至apache,靜態文件直接本地響應),這裏配置的有動靜分離,,動態走app_lamp;模塊靜態走本地目錄,,由於一臺機器上實現,有點侷限性,理解:

upstreamapp_lamp {
    server  127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;
    }
    server {
        listen       80;
        server_name  localhost;
 
        location / {
            root   /usr/local/apache/htdocs;
            index index.php index.html index.htm;
        }
        location ~ .*\.(php|jsp|cgi)?$
    {
         proxy_set_header Host  $host;
         proxy_set_header X-Real-IP$remote_addr;
         proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
         proxy_pass http://app_lamp;
    }
        location ~.*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
       {
        root /usr/local/apache/htdocs;
        expires      3d;
      }
    }

在客戶端輸入http://192.168.77.189可以直接訪問,,動態圖片圖片程序走app_lamp模塊裏面的主機,當然可以是另外的機器,靜態網頁走的是本地





自此,LNAMP源碼全部整合完畢



軟件包太大無法上傳。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章