• CentOS7搭建LNMP环境


    以前写的过时了,重新发一篇新的。

    安装PHP

    下载官网:https://www.php.net/downloads.php

    为了方便,我存了现成的

    百度网盘:https://pan.baidu.com/s/1LlLDsoL6d9Yej0lA5Osqzg  提取码:sxif

    还有更省事的:file.fengyumeng.com/php-7.2.20.tar.gz

    直接下载

    wget file.fengyumeng.com/php-7.2.20.tar.gz

    解压

    tar -zxvf php-7.2.20.tar.gz

    移走

    mv php-7.2.20 /usr/local/

    安装一些必要依赖

    yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel

    别急,还有一批

    yum -y install gcc
    yum -y install gcc-c++
    yum -y install libxslt-devel*
    yum -y install mod_ssl
    yum -y install libtool-ltdl*
    yum -y install perl* 
    yum -y install autoconf

    切目录

    cd /usr/local/php-7.2.20/

    配置

    ./configure --prefix=/usr/local/php7 --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-jpeg-dir --with-freetype-dir --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath -enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-pcntl --with-curl --with-fpm-user=nginx --enable-ftp --enable-session --enable-xml --without-pear --disable-phar

    编译

    make

    编译出错请查看这篇博客,一般都找得到答案

    http://www.cnblogs.com/sweetXiaoma/p/5855732.html

    安装

    make install

    添加环境变量

    vim /etc/profile

    在最后一行下面加入

    PATH=$PATH:/usr/local/php7/bin
    export PATH

    立即生效

    source /etc/profile

    查看PHP版本

    php -v 

    生成必要文件

    cp php.ini-production /usr/local/php7/etc/php.ini
    cp sapi/fpm/php-fpm /usr/local/php7/etc/php-fpm
    cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
    cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

    编辑php.ini

    vim /usr/local/php7/etc/php.ini 

    以下参数仅供参考

    date.timezone = PRC    //设置时区
    file_uploads = On    //是否允许上传
    upload_tmp_dir = /tmp    //上传临时目录
    max_file_uploads = 20    //单个请求最多上传数量
    upload_max_filesize = 10M    //允许上传文件大小
    post_max_size = 20M    //允许post传输最大值(这个必须比upload_max_filezise大)
    memory_limit = 128M    //设置脚本最大使用内存
    error_reporting=E_ALL    //输出错误信息
    error_log = /var/log/php.log    //错误日志路径

    创建日志文件

    touch /var/log/php.log
    chmod 755 /var/log/php.log

    接下来是nginx。

    安装Nginx

    下载地址

    http://nginx.org/en/download.html

    Mainline version 开发版
    Stable version 稳定版
    Legacy versions 历史版

    鼠标移动到你要选择的版本超链接上点右键 复制链接地址

    切目录

    cd /usr/local/

    下载

    wget https://nginx.org/download/nginx-1.16.0.tar.gz

    解压

    tar -zxvf nginx-1.16.0.tar.gz

    进去

    cd nginx-1.16.0

    配置

    ./configure --with-http_stub_status_module --with-http_ssl_module

    安装

    make && make install

    打开配置文件

    vim /usr/local/nginx/conf/nginx.conf

    这一段都是包在server{}之中  如要配置多个域名 则复制粘贴多个server{}代码块

    #重写url隐藏index.php
    #把下面这一段打开注释 并将其中的/scripts 修改为 $document_root

    server {
        listen       80;
        server_name  www.abc.com abc.com;
        root /var/www/abc;
        location / {
                if (!-e $request_filename) {
                     rewrite ^/index.php(.*)$ /index.php?s=$1 last;
                     rewrite ^(.*)$ /index.php?s=$1 last;
                 }
            index  index.html index.htm index.php;
        }
        location ~ .php$ {
            root           /var/www/abc;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

    保存退出

    配置php-fpm

    vim /usr/local/php7/etc/php-fpm.d/www.conf

    把里面的user group 两行 改为nobody 或者是系统中存在的用户

    user = nobody
    group = nobody

    启动php-fpm,载入php.ini

    /usr/local/php7/sbin/php-fpm -c /usr/local/php7/etc/php.ini

    注意  如果修改了php.ini则每次需要杀掉php-fpm进程再重新启动php-fpm,PHP的解析执行靠的是这家伙,不靠nginx。

    ps -ef | grep php-fpm
    kill -9 上一条命令查到的PID

    编写服务脚本

    vim /etc/init.d/nginx

    粘贴以下代码

    #!/bin/bash
    # nginx Startup script for the Nginx HTTP Server
    # it is v.0.0.2 version.
    # chkconfig: - 85 15
    # description: Nginx is a high-performance web and proxy server.
    #              It has a lot of features, but it's not for everyone.
    # processname: nginx
    # pidfile: /usr/local/nginx/logs/nginx.pid
    # config: /usr/local/nginx/conf/nginx.conf
    nginxd=/usr/local/nginx/sbin/nginx
    nginx_config=/usr/local/nginx/conf/nginx.conf
    nginx_pid=/usr/local/nginx/logs/nginx.pid
    RETVAL=0
    prog="nginx"
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Source networking configuration.
    . /etc/sysconfig/network
    # Check that networking is up.
    [ "${NETWORKING}" = "no" ] && exit 0
    [ -x $nginxd ] || exit 0
    # Start nginx daemons functions.
    start() {
    if [ -e $nginx_pid ];then
       echo "nginx already running...."
       exit 1
    fi
       echo -n $"Starting $prog: "
       daemon $nginxd -c ${nginx_config}
       RETVAL=$?
       echo
       [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
       return $RETVAL
    }
    # Stop nginx daemons functions.
    stop() {
            echo -n $"Stopping $prog: "
            killproc $nginxd
            RETVAL=$?
            echo
            [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
    }
    # reload nginx service functions.
    reload() {
        echo -n $"Reloading $prog: "
        #kill -HUP `cat ${nginx_pid}`
        killproc $nginxd -HUP
        RETVAL=$?
        echo
    }
    # See how we were called.
    case "$1" in
    start)
            start
            ;;
    stop)
            stop
            ;;
    reload)
            reload
            ;;
    restart)
            stop
            start
            ;;
    status)
            status $prog
            RETVAL=$?
            ;;
    *)
            echo $"Usage: $prog {start|stop|restart|reload|status|help}"
            exit 1
    esac
    exit $RETVAL

    设置权限

    chmod 755 /etc/init.d/nginx  

    加入开启自启

    vi /etc/rc.local

    在末尾新增一行

    /usr/local/nginx/sbin/nginx

    服务命令启动

    /etc/init.d/nginx start

    加入开机启动

    chkconfig nginx on

    然后你就可以使用以下服务命令了

    systemctl status nginx
    systemctl start nginx
    systemctl stop nginx
    systemctl reload nginx
    systemctl restart nginx

    安装MySQL

    安装mysql源

    yum localinstall -y http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

    安装mysql

    yum install mysql-community-server

    启动mysql

    systemctl start mysqld

    获取初始密码

    grep 'temporary password' /var/log/mysqld.log

    得到这行A temporary password is generated for root@localhost: Jqqskhz1Wr (root@localhost:后面就是默认密码 只需复制 下一步输入密码的时候粘贴即可)

    进入mysql

    mysql -uroot -p

    第一时间修改密码

    SET PASSWORD = PASSWORD('123456//ZZZjjj');

    密码必须复杂 需包含大小写特殊符号,否则无法修改成功

    开放远程连接

    use mysql;
    update user set host = '%' where user = 'root';

    百分号相当于*号,意思是全部放行,也可改为IP地址则只允许此IP连接,也可以设置为192.168.%.%或者192.168.0.1/9代表允许一个ip段进行连接,也可以多加几条数据设置不同ip允许连接。

    MySQL权限分配

    create user 'myqiutian'@'%' IDENTIFIED BY '*********';

    创建一个用户为myqiutian,因为用的%所以任何IP都可以登录,但登录后却无法看到数据库,新增用户所有权限默认关闭。

    懒人专用语句

    grant all on *.* to myqiutian;

    设置该用户所有数据库所有表拥有所有权限

    如果你真的是懒人,下面的就不用看了,直接跳到最后一个命令 刷新权限 ,执行完就可以下班了。

    grant select on A数据库.* to myqiutian;

    授权myqiutian这个用户可以查看A数据库里的所有表,但是仅限于A数据库,也仅限于查看。

    grant insert on A数据库.user to myqiutian;

    授权myqiutian这个用户可以对A数据库里的user表进行insert操作,但仅限于user表,也仅限于select和insert操作。

    撤销权限

    revoke insert on A数据库.user from myqiutian;

    注意:撤销权限之前最好用show grants for myqiutian;这条sql查一下该用户有哪些权限,增加的什么权限就撤什么权限,你增加的insert就不能撤销all。

    MySQL权限工作流程:
    --------->用户连接MySQL
    --------->查询user表 核对账号密码 检查host字段 是否允许你的ip进行连接
    --------->查询user表 其他权限字段 值若为Y 代表用户对所有数据库所有表所有字段都拥有该权限 若有值为N 则往下走
    --------->查询db表 库权限控制表 获取该用户对哪些库拥有哪些权限 这张表里一条记录代表一个库
    --------->查询tables_priv表 获取该用户的表控制权限 同样 如果db表中该用户对A数据库拥有insert权限 那么不管tables_priv表中如何设置 都不会影响该用户的isnert权限,如果tables_priv表中的单表权限不为all,则继续往下走
    --------->查询columns_priv表 字段控制 可以设置对表字段的控制权限

    四张表依次为 user db tables_priv columns_priv

    注意:
    如果user表中全为Y,那么不会查询下面的表。
    user表中的select为N时,可以在db表中指定哪些库可以被用户看到。
    但是无论是表控制还是字段控制,上级权限表(user表除外)的select字段必须为Y。
    而其他权限如果上级表给出了设置,那么不会采用下级表的设置。

    刷新权限,使权限立即生效

    flush privileges;

    别忘了这里有一个配置文件cat /etc/my.cnf 可以查看存储的数据与log的位置。

    好了,我们一起下班吧。

  • 相关阅读:
    声明了变量并赋了初始值,但在VS中报当前上下文中不存在名称“ XXX”的错误 Kevin
    delphi中的nil值 Kevin
    MVC3 + Ajax 图片上传总结 Kevin
    EntityFramework 更新数据库的问题 Kevin
    MVC3 EntityFramework 插入Mysql数据库 乱码问题 Kevin
    MVC Html 编码问题 Kevin
    周鸿祎:共享软件无合理商业模式才变流氓
    C++界面库 Xtreme Toolkit Pro[转载]
    《创业10个小诀窍》
    软件商业模式分析之-迅雷
  • 原文地址:https://www.cnblogs.com/fengyumeng/p/11149035.html
Copyright © 2020-2023  润新知