LNMP(Linux、Nginx、Mysql、PHP)源码安装部署发布discuz论坛;

企业级LNMP(Nginx+PHP(FastCGI)+MySQL)主流架构配置

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论坛;

1、Nginx安装配置

    安装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/

    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安装配置

    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配置文件配置

    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论坛;

(1)Discuz PHP论坛安装
LAMP源码整合完毕之后,Dicuz官网下载Discuz开源PHP软件包,将软件包解压并发布在Nginx Htdocs发布目录,代码如下:

    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论坛;

PHP安装模块
以下为php扩展openssl模块案例

    1、我的源码在 /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下。
    2、进入openssl的扩展目录 :/home/topsec/Documents/php-7.0.11/ext/openssl
    3、运行phpize

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

    4、执行安装
    ./configure --with-openssl --with-php-config=/usr/local/php7/bin/php-config 
    make&&make install

    5、过程中可能出现libssl找不到,执行下面的命令再重新执行4、执行安装
    yum install openssl 
    yum install openssl-devel

    6、执行安装后,会提示在某个目录生成.so文件,我生成的位置在
    /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/ 下
    7、打开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

    8、重启php

猜你喜欢

转载自blog.51cto.com/11353391/2537112