LNMP(Linux、Nginx、Mysql、PHP)源碼安裝部署發佈discuz論壇;

企業級LNMP(Nginx+PHP(FastCGI)+MySQL)主流架構配置php

Apache web服務器,發佈web靜態頁面,Nginx web服務器,發佈靜態頁面;
靜態頁面:與數據庫沒有交互代碼,不更新,html、css、js、xml、png、jpg、
jpeg、txt;
動態頁面:與數據庫有交互,隨着數據庫變化而更新,php、jsp、do、cgi、
asp、aspx;
PHP,一門語言,解釋型語言,PHP模塊直接解析.php結尾的文件;
MySQL數據庫,關係型數據庫,由各類表格組成,每張表由不一樣的列,不一樣的行組
成;(Redis內存數據庫,nosql,高鍵值對Key-Values);
LNMP用於企業發佈PHP動態網站+靜態網站,而且鏈接數據庫服務器,必要的數據
(員工姓名、密碼、工資條、訂單)存入數據庫;
公共網關接口」(Common Gateway Interface,CGI),是HTTP服務器與本機或者
其它機器上的程序進行通訊的一種工具,其程序須運行在網絡服務器上。
CGI能夠用任何一種語言編寫,只要這種語言具備標準輸入、輸出和環境變量,如
php、perl、tcl等。
FAST-CGI:WEB服務器與處理程序之間通訊的一種協議(App server 和Web server 
之間的通訊協議),是CGI的改進方案。CGI程序反覆加載是CGI性能低下的主要原
因,若是CGI程序保持在內存中並接受FastCGI進程管理器調度,則能夠提供良好的
性能、伸縮性、Fail-Over特性等。FastCGI是常駐型的CGI,它能夠一直運行,在請
求到達時,不會花費時間去fork一個進程來處理。
FastCGI是語言無關的、可伸縮架構的CGI開放擴展,將CGI解釋器進程保持在內存
中,以此得到較高的性能。FastCGI是一個協議,php-fpm實現了這個協議,php-fpm
的FastCGI協議須要有進程池,php-fpm實現的FastCGI進程叫php-cgi,因此php-fpm
實際上是他自身的FastCGI或php-cgi進程管理器,php-cgi是CGI協議的實現,由於以前
沒有更新Fastcgi,而是使用原有的通用網關接口,而衍生出的進程。
CGI 就是一個接口,它定義好了本身的輸入和輸出, php-cgi 則是對這個接口的一種
實現, Fastcgi 則是對 cgi 實現的一個性能優化版本。
PHP-CGI是PHP自帶的CGI管理器。
如圖14-5所示:
對於CGI來講,每個Web請求PHP都必須從新解析php.ini、從新載入所有擴展,
並重初始化所有數據結構。而使用FastCGI,全部這些都只在進程啓動時發生一
次。一個額外的好處是,持續數據庫鏈接(Persistent database connection)能夠工做。
因爲FastCGI是多進程,因此比CGI多線程消耗更多的服務器內存,php-cgi解釋器每
進程消耗7至25兆內存,將這個數字乘以50或100就是很大的內存數。

LNMP(Linux、Nginx、Mysql、PHP)源碼安裝部署發佈discuz論壇;
LNMP(Linux、Nginx、Mysql、PHP)源碼安裝部署發佈discuz論壇;

一、Nginx安裝配置css

安裝PCRE庫和基礎庫支持:

    yum install pcre-devel pcre   gcc-c++  openssl openssl-devel  -y
    cd  /usr/src

    下載Nginx源碼包:
    http://nginx.org/download/nginx-1.19.2.tar.gz
    tar -xzf nginx-1.19.2.tar.gz
    cd nginx-1.19.2

    預編譯Nginx:
    useradd www 
    ./configure --user=www --group=www --prefix=/usr/local/nginx 
    --with-http_stub_status_module --with-http_ssl_module
    編譯成功後,執行make命令進行編譯
    make
    make 執行成功後,執行make install正式安裝
    make install

    檢查nginx配置文件是否正確,返回OK即正確。
    /usr/local/nginx/sbin/nginx  -t
    回車便可。查看進程是否已啓動:
    而後啓動nginx,/usr/local/nginx/sbin/nginx

MySQL安裝(搭着玩就用MySQL5了、有須要能夠下載新版本)
其餘版本下載地址:https://downloads.mysql.com/archives/community/html

yum  install  cmake  ncurses-devel ncurses  libaio bison git  -y
    cd /usr/src

    wget  https://downloads.mysql.com/archives/get/p/23/file/mysql-5.5.20.tar.gz
    tar  -xzf  mysql-5.5.20.tar.gz
    cd  mysql-5-5.20

    cmake  . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
    -DMYSQL_DATADIR=/data/mysql \
    -DSYSCONFDIR=/etc \
    -DMYSQL_USER=mysql \
    -DMYSQL_TCP_PORT=3306 \
    -DWITH_XTRADB_STORAGE_ENGINE=1 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_READLINE=1 \
    -DENABLED_LOCAL_INFILE=1 \
    -DWITH_EXTRA_CHARSETS=1 \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DEXTRA_CHARSETS=all \
    -DWITH_BIG_TABLES=1 \
    -DWITH_DEBUG=0

    make && make install

    cd /usr/local/mysql/ 

    \cp  -f  support-files/my-large.cnf /etc/my.cnf
    \cp  -f  support-files/mysql.server /etc/init.d/mysqld 
    chkconfig --add mysqld 
    chkconfig --level 35 mysqld on
    mkdir -p  /data/mysql
    useradd  mysql
    /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql/
    ln  -s  /usr/local/mysql/bin/* /usr/bin/

    service  mysqld  restart

(3) PHP安裝配置mysql

wget  http://museum.php.net/php5/php-5.6.9.tar.gz
    yum -y install gd curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel 

    tar -xzf php-5.6.9.tar.gz

    cd php-5.6.9

    ./configure --prefix=/usr/local/php5  --enable-fpm --enable-debug --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --with-curl --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config --disable-fileinfo
    make
    make install

    cp  php.ini-development   /usr/local/php5/lib/php.ini
    cp  /usr/local/php5/etc/php-fpm.conf.default  /usr/local/php5/etc/php-fpm.conf
    cp /usr/src/php-5.6.9/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    chmod 755 /etc/init.d/php-fpm
    chkconfig  --add   php-fpm
    chkconfig php-fpm on

    php-fpm.conf是php服務程序重要的配置文件之一,咱們須要啓用該配置文件中第
    25行左右的pid文件保存目錄,而後分別將第148和149行的user與group參數分別
    修改成www帳戶和用戶組名稱:
    # vim /usr/local/php5/etc/php-fpm.conf
    1 ;;;;;;;;;;;;;;;;;;;;;
    2 ; FPM Configuration ;
    3 ;;;;;;;;;;;;;;;;;;;;;
    23 ; Note: the default prefix is /usr/local/php/var
    24 ; Default Value: none
    25 pid = run/php-fpm.pid
    ………………省略部分輸出信息………………
    145 ; Unix user/group of processes
    146 ; Note: The user is mandatory. If the group is not set, the default user's g roup
    147 ; will be used.
    148 user = www
    149 group = www
    ………………省略部分輸出信息………………

(4) Nginx配置文件配置nginx

cat >/usr/local/nginx/conf/nginx.conf
    events {
worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        server {
    listen       80;
    server_name  localhost;
                location / {
                root   /usr/local/nginx/html;
                index  index.html index.php;
    }
    location ~ \.php$ {
             root           html;
              }
    location ~ \.php$ {
   root           html;
   fastcgi_pass   127.0.0.1:9000;# 指定了fastcgi進程偵聽的端口,nginx就是經過這裏與php交互的
   fastcgi_index  index.php;#腳本請求的前綴名
    fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name; #腳本文件請求的路徑
    include        fastcgi_params;
               }
    }
}

 cat >/usr/local/nginx/html/index.php<<EOF
    <?php
    phpinfo();
    ?>
    EOF
    重啓php服務
    service php-fpm restart 

    檢測Nginx服務參數
    /usr/local/nginx/sbin/nginx –t 

    啓動nginx服務參數
    /usr/local/nginx/sbin/nginx

測試LNMP架構測試,建立index.php測試頁面,如圖
LNMP(Linux、Nginx、Mysql、PHP)源碼安裝部署發佈discuz論壇;c++

(1)Discuz PHP論壇安裝
LAMP源碼整合完畢以後,Dicuz官網下載Discuz開源PHP軟件包,將軟件包解壓併發布在Nginx Htdocs發佈目錄,代碼以下:git

cd     /usr/src ;
    wget  http://download.comsenz.com/DiscuzX/3.1/Discuz_X3.1_SC_UTF8.zip
    unzip  Discuz_X3.1_SC_UTF8.zip -d   /usr/local/nginx/html
    cd   /usr/local/nginx/html
    mv upload/* /usr/local/nginx/html
    chmod 757  -R  data/  uc_server/  config/  uc_client/
    從新啓動nginx

    MYSQL數據庫命令行中建立PHP鏈接MYSQL的用戶及密碼,命令以下:
    create database discuz charset=utf8;
    grant all on discuz.* to root@'localhost' identified by "123456";
    flush privileges;

    訪問IP地址 進行論壇的訪問,配置discuz論壇設置數據庫。
    數據庫服務器地址填寫本機的地址
    數據庫名字填寫在主數據庫建立的discuz
    用戶名填寫數據庫用戶名root
    數據庫密碼123456

LNMP(Linux、Nginx、Mysql、PHP)源碼安裝部署發佈discuz論壇;

配置成功後能夠看到以下
LNMP(Linux、Nginx、Mysql、PHP)源碼安裝部署發佈discuz論壇;web

PHP安裝模塊
如下爲php擴展openssl模塊案例sql

一、個人源碼在 /home/topsec/Documents/php-7.0.11 安裝位置在 /usr/local/php7
    php.ini 在/ usr/local/php7/lib 下。若是沒有php.ini須要把源碼中的配置文件
    php.ini-development 或php.ini-production更名成php.ini並放在lib下。
    二、進入openssl的擴展目錄 :/home/topsec/Documents/php-7.0.11/ext/openssl
    三、運行phpize

    /usr/local/php7/bin/phpize
    使用phpize生產configure文件

    四、執行安裝
    ./configure --with-openssl --with-php-config=/usr/local/php7/bin/php-config 
    make&&make install

    五、過程當中可能出現libssl找不到,執行下面的命令再從新執行四、執行安裝
    yum install openssl 
    yum install openssl-devel

    六、執行安裝後,會提示在某個目錄生成.so文件,我生成的位置在
    /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/ 下
    七、打開php.ini
    vim /usr/local/php7/lib/php.ini
    extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/" 
    extension=openssl.so

    八、重啓php
相關文章
相關標籤/搜索