zoukankan      html  css  js  c++  java
  • LNMP平台搭建

    部署Nginx软件

    1)安装支持软件:

    Nginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保Nginx的安装顺利完成。

    [root@nginx~]#systemctl stop firewalld

    [root@nginx~]#iptables -F

    [root@nginx~]#setenforce 0

    [root@nginx~]# yum -y install pcre-devel zlib-devel  openssl-devel

    2)创建运行用户、组:

    Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。如:创建一个名为nginx的用户,不建立宿主目录,也禁止登录到shell环境。

    [root@nginx~]#useradd -M -s /sbin/nologin nginx

    指定shell  /sbin/noligin  是不允许用户登录的意思

    3)编译安装nginx:

    释放nginx源码包

    [root@nginx~]# tar xf nginx-1.16.0.tar.gz  -C /usr/src/

    4)配置编译:

    [root@nginx~]# cd /usr/src/nginx-1.16.1/

    [root@nginxnginx-1.14.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module  --with-http_ssl_module  --with-http_flv_module    --with-http_gzip_static_module && make && make install

    注:配置前可以参考:./configure --help给出说明

    l  --prefix               设定Nginx的安装目录

    l  --user和--group       指定Nginx运行用户和组

    l  --with-http_stub_status_module     启用http_stub_status_module模块以支持状态统计

    l  --with-http_ssl_module    启用SSL模块

    l  --with-http_flv_module    启用FLV模块,提供寻求内存使用基于时间的偏移量文件

    为了使Nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行nginx命令就可以调用Nginx的主程序。

    [root@nginxnginx-1.14.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/

    [root@nginxnginx-1.14.2]#ll /usr/local/sbin

    lrwxrwxrwx 1 root root 27 12-29 07:24 /usr/local/sbin-> /usr/local/nginx/sbin/nginx

    5)Nginx的运行控制:

    与Apache的主程序httpd类似,Nginx的主程序也提供了"-t"选项用来对配置文件进行检查,以便找出不当或错误的配置。配置文件nginx.conf默认位于安装目录/usr/local/nginx/conf/目录中。若要检查位于其他位置的配置文件,可使用"-c"选项来指定路径。

    [root@nginxconf]#nginx -t

    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

    6)启动、停止Nginx:

    直接运行nginx即可启动Nginx服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加"-c 配置文件路径"选项来指定路径。需要注意的是,若服务器中已安装有httpd等其他WEB服务软件,应采取措施(修改端口,停用或卸载其他软件)避免部突。

    [root@nginxconf]# netstat -anpt |grep :80

    [root@nginxconf]#nginx

    [root@nginxconf]# netstat -anpt |grep :80

    tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      6810/nginx: master 

    为了使Nginx服务的启动、停止、重载等操作更加方便,可以编写Nginx服务脚本,并使用chkconfig和systemctl工具来进行管理,也更加符合RHEL系统的管理习惯。

    [root@nginx~]# vim /etc/init.d/nginx

    #!/bin/bash

    # chkconfig: 2345 99 20

    # description: Nginx Server Control Script

    PROG="/usr/local/nginx/sbin/nginx"

    PIDF="/usr/local/nginx/logs/nginx.pid"

     

    case "$1" in

    start)

             $PROG

    ;;

    stop)

             kill -s QUIT $(cat $PIDF)

    ;;

    restart)

             $0 stop

             $0 start

    ;;

    reload)

             kill -s HUP $(cat $PIDF)

    ;;

    *)

             echo "Usage: $0 {start|stop|restart|reload}"

             exit 1

    esac

    exit 0

     

    [root@nginx~]#chmod +x /etc/init.d/nginx

    [root@nginx~]#chkconfig --add nginx

    [root@nginx~]#chkconfignginx on

    [root@nginx~]#chkconfig --list nginx

    nginx        0:关闭     1:关闭     2:启用     3:启用     4:启用     5:启用     6:关闭

    状态统计模块

    Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的WEB访问情况。配置

    编译参数时可添加--with-http_stub_stastus_module来启用此模块。要使用Nginx的状态统计功能,除了启用内建模块以外,还需要修改nginx.conf文件,指定访问位置并打开stub_status配置。在http{}配置的server{}子配置内添加如下配置项

    [root@nginx~]# vim /usr/local/nginx/conf/nginx.conf

    location /status {

    stub_status on;                //打开状态统计功能

    access_log off;                  //关闭此位置的日志记录

            }

    [root@nginxconf]#systemctl restart nginx

    浏览器访问 http://192.168.200.111/status

     

    1、安装Mysql数据库

    1)基于源码包安装MySQL

    [root@nginx~]# rpm -q mysql mysql-server mariadb mairadb-server

     

    ncurses-devel是cmake的依赖包

    [root@nginx~]# yum -y install ncurses-devel

    [root@nginx~]# rpm -q ncurses-devel

    ncurses-devel-5.9-14.20130511.el7_4.x86_64

     

    建议采用yum安装方式

    [root@nginx~]# yum -y install cmake

    [root@nginx~]# rpm -q cmake

    cmake-2.8.12.2-2.el7.x86_64

     

    创建运行用户

    [root@nginx~]#useradd -M -s /sbin/nologin mysql

     

    解包,配置,编译,安装

    [root@nginx~]# tar xf mysql-5.7.24.tar.gz -C /usr/src/

    [root@nginx~]#mkdir /usr/local/boost

    [root@nginx~]#tar xf boost_1_59_0.tar.gz -C /usr/local/boost

    [root@nginx~]# cd /usr/src/mysql-5.7.24/

    [root@nginx mysql-5.7.24]#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc  -DWITH_BOOST=/usr/local/boost && make && make install

    2)安装后的调整

    对数据库目录进行权限设置

    [root@nginxmysql]#chown -R mysql:mysql  /usr/local/mysql/

     

    建立配置文件(CentOS7系统默认支持MariaDB数据库,系统默认的/etc/my.cnf配置文件是MariaDB的配置文件 )

    [root@nginxmysql]# vim /etc/my.cnf

    [mysqld]

    datadir=/usr/local/mysql/data

    socket=/tmp/mysql.sock

     

    [mysqld_safe]

    log-error=/usr/local/mysql/data/mysql.log

    pid-file=/usr/local/mysql/data/mysql.pid

     

    3)初始化数据库

    [root@nginxmysql]# /usr/local/mysql/bin/mysqld  --user=mysql  --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize

    2018-12-08T01:51:39.798903Z 1 [Note] A temporary password is generated for root@nginx: TvC:Rm1ZlxtG

    l  --basedir=/usr/local/mysql/ //指定安装目录(产品目录)

    l  --datadir=/usr/local/mysql/data //指定数据目录

    l  --user=mysql //指定用户身份

     

    4)设置环境变量

    [root@nginx mysql-5.7.24]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

    [root@nginx mysql-5.7.24]# source /etc/profile

     

    5)添加系统服务

    添加MySQL为系统服务,以便通过systemctl命令进行管理

     [root@localhost~]#cp /usr/src/mysql-5.7.24/support-files/mysql.server  /etc/init.d/mysqld

    [root@localhost~]#chmod +x /etc/init.d/mysqld

    [root@localhost~]#/etc/init.d/mysqld start

    [root@localhost~]#netstat -lnpt |grep mysqld

    后期修改数据库用户的密码:

     

    [root@nginx~]#mysqladmin -u root -p'TvC:Rm1ZlxtG' password '123456'

    ----------------------------------------

    mysql 等不上的解决方法

    rm -rf /usr/local/mysql/data

    /usr/local/mysql/bin/mysqld  --user=mysql  --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize

    source /etc/profile

    netstat -anpt |grep 3306 查看PID号

    kill -9 PID

    /etc/init.d/mysqld start 即可登上mysql

    --------------------------------------------

    2、安装PHP解析环境

    较新版本(如5.6)的PHP已经自带FPM(fastCGI process manager,FastCGI进程管理器)模块,用来对PHP解析实例进行管理,优化解析效率,因此在配置PHP编译选项时应添加"--enable-fpm"以启用此模块。

    为了提高PHP解析效率,建议将相应版本的ZendGuardLander也装上。

    1)编译安装php

    [root@nginx~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel

    [root@nginx~]# tar xf php-5.6.39.tar.gz -C /usr/src/

    [root@nginx~]# cd /usr/src/php-5.6.39/

    [root@nginxphp-5.6.39]# ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install

    2)安装后的调整

    [root@nginxphp-5.6.39]#cp php.ini-production /usr/local/php5/php.ini

    [root@nginxphp-5.6.39]# ln -s /usr/local/php5/bin/* /usr/local/bin/

    [root@nginxphp-5.6.39]#ln -s /usr/local/php5/sbin/* /usr/local/sbin/

    3)安装ZendGuardLander(注意:若是64位系统,该软件得到其官网下载64位的相应软件包,若用32位的就会报错。下载地址:http://www.zend.com/en/products/guard/downloads

    [root@nginx~]# tar xf zend-loader-php5.6-linux-x86_64_update1.tar.gz  -C /usr/src/

    [root@nginx~]# cd /usr/src/zend-loader-php5.6-linux-x86_64/

    [root@nginx zend-loader-php5.6-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/

     

    [root@nginx zend-loader-php5.6-linux-x86_64]#vim /usr/local/php5/php.ini

    zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so

    zend_loader.enable=1

    3、配置Nginx支持PHP环境

    若要让Nginx能够解析PHP网页,有两种方法可以选择;其一:Nginx充当中介,将访问PHP页面的WEB请求转交给其他服务器(LAMP)去处理;其二:通过使用PHP的FPM模块来调用本机的PHP环境。

    如果选用FPM方式,则需要先启动php-fpm进程,以便监听PHP解析请求。参考范例建立php-fpm.conf配置文件,并修改其中的PID文件、运行用户、服务数(进程数量)等相关设置,然后启动php-fpm程序即可(默认监听本机的9000端口)

    [root@nginx~]# cd /usr/local/php5/etc/

    [root@nginxetc]# cp php-fpm.conf.default php-fpm.conf

    [root@nginxetc]#useradd -M -s /sbin/nologin php

    [root@nginxetc]# vim php-fpm.conf

     25 pid = run/php-fpm.pid             //确认pid文件位置

     149 user = php                                  //运行用户

     150 group = php                               //运行组

    246pm.start_servers = 20                //启动时开启的进程数

    251pm.min_spare_servers = 5       //最少空闲进程数

    256pm.max_spare_servers = 35    //最大空闲进程数

    241pm.max_children = 50               //最多空闲进程数

     

    [root@nginxetc]# /usr/local/sbin/php-fpm

    [root@nginxetc]# netstat -anpt |grep php-fpm

    tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      23027/php-fpm.conf)

    2、安装PHP解析环境

    较新版本(如5.6)的PHP已经自带FPM(fastCGI process manager,FastCGI进程管理器)模块,用来对PHP解析实例进行管理,优化解析效率,因此在配置PHP编译选项时应添加"--enable-fpm"以启用此模块。

    为了提高PHP解析效率,建议将相应版本的ZendGuardLander也装上。

    1)编译安装php

    [root@nginx~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel

    [root@nginx~]# tar xf php-5.6.39.tar.gz -C /usr/src/

    [root@nginx~]# cd /usr/src/php-5.6.39/

    [root@nginxphp-5.6.39]# ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install

    2)安装后的调整

    [root@nginxphp-5.6.39]#cp php.ini-production /usr/local/php5/php.ini

    [root@nginxphp-5.6.39]# ln -s /usr/local/php5/bin/* /usr/local/bin/

    [root@nginxphp-5.6.39]#ln -s /usr/local/php5/sbin/* /usr/local/sbin/

    3)安装ZendGuardLander(注意:若是64位系统,该软件得到其官网下载64位的相应软件包,若用32位的就会报错。下载地址:http://www.zend.com/en/products/guard/downloads

    [root@nginx~]# tar xf zend-loader-php5.6-linux-x86_64_update1.tar.gz  -C /usr/src/

    [root@nginx~]# cd /usr/src/zend-loader-php5.6-linux-x86_64/

    [root@nginx zend-loader-php5.6-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/

     

    [root@nginx zend-loader-php5.6-linux-x86_64]#vim /usr/local/php5/php.ini

    zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so

    zend_loader.enable=1

    3、配置Nginx支持PHP环境

    若要让Nginx能够解析PHP网页,有两种方法可以选择;其一:Nginx充当中介,将访问PHP页面的WEB请求转交给其他服务器(LAMP)去处理;其二:通过使用PHP的FPM模块来调用本机的PHP环境。

    如果选用FPM方式,则需要先启动php-fpm进程,以便监听PHP解析请求。参考范例建立php-fpm.conf配置文件,并修改其中的PID文件、运行用户、服务数(进程数量)等相关设置,然后启动php-fpm程序即可(默认监听本机的9000端口)

    [root@nginx~]# cd /usr/local/php5/etc/

    [root@nginxetc]# cp php-fpm.conf.default php-fpm.conf

    [root@nginxetc]#useradd -M -s /sbin/nologin php

    [root@nginxetc]# vim php-fpm.conf

     25 pid = run/php-fpm.pid             //确认pid文件位置

     149 user = php                                  //运行用户

     150 group = php                               //运行组

    246pm.start_servers = 20                //启动时开启的进程数

    251pm.min_spare_servers = 5       //最少空闲进程数

    256pm.max_spare_servers = 35    //最大空闲进程数

    241pm.max_children = 50               //最多空闲进程数

     

    [root@nginxetc]# /usr/local/sbin/php-fpm

    [root@nginxetc]# netstat -anpt |grep php-fpm

    tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      23027/php-fpm.conf)

    [root@nginxetc]# vim /usr/local/nginx/conf/nginx.conf

    server {

    …… //省略部分信息

    location / {

                root   html;

    index  index.php index.html index.htm;

            }

    location ~ .php$ {                                     //访问php页面的配置段

    root html;                                            //PHP网页文档根目录

    fastcgi_pass 127.0.0.1:9000;          //php-fpm的监听地址

    fastcgi_index index.php;                  //PHP首页文件

    include fastcgi.conf;                         //包括fastcgi.conf样本配置

    }

    }

     

    [root@nginx~]# cat /usr/local/nginx/html/php.php

    <?php

    phpinfo();

    ?>

    [root@nginxetc]# vim /usr/local/nginx/html/mysql.php

    <?php

    $link=mysqli_connect('localhost','root','123456');       //连接mysql数据库

    if($link) echo "<h1>恭喜你,大功告成!!</h1>";    //连接成功则返回信息

    mysqli_close();                                                                          //关闭数据库连接

    ?>

    4、LNMP平台中部署WEB应用

    LNMP平台与LAMP平台是非常相似的,区别主要在于所用WEB服务软件的不同,而这与使用PHP开发的WEB应用程序并无太大关系,因此PHP应用的部署方法也是类似的。

    部署ComsenzDiscuz BBS论坛系统

    Discuz!社区论坛是一个采用PHP与MySQL等多种数据库构建的性能优异,功能全面的且安全稳定的社区论坛(BBS)软件,其官方网站为http://www.discuz.net

    [root@nginx~]# unzip ComsenzDiscuz-DiscuzX-master.zip

    [root@nginx~]# cd DiscuzX/

    [root@nginxDiscuzX]# ls upload/

    admin.phpapi.php config crossdomain.xml favicon.ico group.phpindex.php m misc.phpportal.phpsearch.php static uc_client

    api archiver connect.php data forum.phphome.php install member.phpplugin.php robots.txt source template uc_server

     

    上传bbs代码:

    [root@nginxDiscuzX]# mv upload/ /usr/local/nginx/html/bbs

    浏览器访问http://192.168.200.111/bbs/install/index.php

     

    设置权限及模板文件

    [root@nginx~]# cd /usr/local/nginx/html/bbs/config/

    [root@nginxconfig]# cp config_global_default.php config_global.php

    [root@nginxconfig]# cp config_ucenter_default.php config_ucenter.php

     

    [root@nginx~]# cd /usr/local/nginx/html/bbs

    [root@nginxbbs]#chmod -R 777 config/ data/ uc_client/ uc_server/

    准备数据库并配置相关授权

    [root@nginx~]#mysql -uroot -p123456

    mysql> create database bbs;

    Query OK, 1 row affected (0.00 sec)

     

    mysql> grant all on bbs.* to 'bbs'@'localhost' identified by 'bbs123456';

    Query OK, 0 rows affected, 1 warning (0.07 sec)

     

    mysql> flush privileges;

    Query OK, 0 rows affected (0.00 sec)

  • 相关阅读:
    记事本开发者日记~二
    《梦断代码》读后感①
    记事本开发日记~一
    仓库管理msi系统
    java web + mysql 的增删改查
    第九周动手动脑
    四则运算答题版
    JAVA常用的异常处理情况
    继承和多态中动手动脑
    laravel1
  • 原文地址:https://www.cnblogs.com/maoyanqing/p/11517249.html
Copyright © 2011-2022 走看看