美文网首页
LNMP搭建过程及其配置

LNMP搭建过程及其配置

作者: 哈哈新开张 | 来源:发表于2018-10-30 21:10 被阅读0次

    以centos7为例

    如果使用yum命令时出现 Error: cannot find a valid baseurl or repo:base,则需要

    方法一
    1、打开 vi /etc/sysconfig/network-scripts/ifcfg-eth0(每个机子都可能不一样,但格式会是“ifcfg-eth数字”),把ONBOOT=no,改为ONBOOT=yes
    2、重启网络:service network restart

    方法二
    1、打开 vi /etc/resolv.conf,增加 nameserver 8.8.8.8  
    2、重启网络: service network restart

    先把所需库一次性安装完毕


    php7.0.27以上 curl需要安装; yum -y install curl-devel 否则总是报错找不到curl命令(如安装php的curl扩展)


    yum -y install gcc-c++ zlib zlib-devel autoconf openssl openssl--devel pcre pcre-devel gd gd-devle libxml2 libxml2-devel libpng libpng-devel freetype-devel libpng libpng-devel tcl libevent libevent-devel openssl openssl-devel libjpeg-devel curl-devel 

    一 Nginx 安装

    1 安装

    官网下载地址 http://nginx.org/

    ./configure \--prefix=/usr/local/nginx \--conf-path=/usr/local/nginx/conf/nginx.conf \  --add-module=/path/to/mod_wsgi/  

    配置文件目录知道conf下,如果指到etc下有时会报错,etc不是个目录,还是一次性指到conf为好

    --add-module 设置负载均衡时使用的模块

    --conf-path= 配置文件的路径,不指定或指定到conf下有的时候会报错

    不指定配置文件:会报错,但是不理会启动nginx时会提示无法打开日志文件目录,此时在安装目录里新建个空文件夹logs即可启动nginx

    指定配置文件  :指定到conf下会报错,不过好像依旧能用.只有指定到非conf下,如'etc'目录下,虽然安装过程不会报错,但是会在conf和etc下同时生成两套配置文件,真正使用的是你自己指定的那个路径的配置文件.

    负载均衡时使用hash需要的模块,

    wget https://codeload.github.com/replay/ngx_http_consistent_hash/zip/master

    0.7.4版本后,在access_log指令中可以使用变量(把日志写到以server_name命名的log文件)

    access_log /usr/local/lnmp/logs/$server_name.log combined

    nginx错误排查

    directory index of "/var/www/wy/public/" is forbidden

    一般造成的原因有两个,访问的地址没有默认的index文件或location配置中没有指定root路径

    2 配置

    二 Php 安装

    1 安装

    官网下载地址: http://www.php.net/downloads.php

    如果需要安装Lavarel 需要安装三个库 php-mcrypt libmcrypt libmcrypt-devel (编译安装时要有顺序,否则总报错 libmcrypt mhash mcrypt)

    如果没有这三个源码文件可留言或电邮至wy04313@126.com 我发给你

    ./configure --prefix=/usr/local/php/ --enable-mbstring --with-curl --with-gd  --enable-fpm --with-pdo-mysql=mysqlnd --with-mysqli --with-config-file-path=/usr/local/php/etc --with-freetype-dir=DIR --with-openssl --with-openssl

    Php7.2 要去到 --enable-gd-native-ttf, 7.2版本不支持了

    如果不需要上传图片生成缩略图,上面的参数就可以.如果需要则参考下面方法

    在Ubuntu下安装php7会提示libxml2没有安装,需要到官网 http://xmlsoft.org/sources/ 下载编译安装

    我以7.2.12为例,安装完如果使用上传图片需要生成缩略图,默认gd库里不支持jpg,如果编译安装的时候已经带上--with-gd  则需要去掉此参数重新编译,否则以下操作无法使之生效

    php7.0.27以上 curl需要单独安装  yum -y install curl-devel

    php
    ./configure --prefix=/usr/local/php/ --enable-mbstring --with-curl --enable-gd-jis-conv --enable-fpm --with-pdo-mysql=mysqlnd --with-mysqli --with-config-file-path=/usr/local/php/etc --with-openssl

    安装gd库
     /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config --with-png-dir --with-freetype-dir --with-jpeg-dir --with-zlib-dir --with-gd
    make && make install

    从7.4以后,--with-freetype-dir 改成 --with-freetype,这点一定要注意,否则即使安装完了gd库,验证码也无法显示.
    如果执行过 yum update或相当于此的命令,启动php可能会报错: libonig.so.2: cannot open shared object file: No such file or directory

    如果需要图片生成缩略图 需支持jpeg 看看https://blog.csdn.net/iefreer/article/details/18876707

    php 7.4 需增加

    yum install sqlite-develoniguruma oniguruma-devel 

    网上很多说需要单独下载 oniguruma github官方网站:https://github.com/kkos/oniguruma/ yum 源里没有, 其实不用的,详细点可查看https://www.daehub.com/archives/9687.html

    2 配置

    三 Mysql 安装

    1 安装

    centos7 安装mysql5.6 https://blog.csdn.net/huyangg/article/details/71308147

    2 配置

    mysql 安装完后默认是不允许外网访问的,需要登录后执行

    update user set host = '%' where user = 'root'; (执行此句时会报错 ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 不予理会即可)

    update user set password=password("你的新密码") where user="root"; (5.7以下版本)
    flush privileges;

    报如下错,则需执行下面的语句
    You must reset your password using ALTER USER statement before executing this statement.

    step 1: SET PASSWORD = PASSWORD('your new password');
    step 2: ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
    step 3: flush privileges;

    只允许某个IP访问

    GRANT ALL PRIVILEGES ON *.* TO 'username'@'172.29.8.72' IDENTIFIED BY 'password' WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.3.39' IDENTIFIED BY 'password' WITH GRANT OPTION;
    flush privileges;

    3 开放3306端口

    firewall-cmd --add-port=3306/tcp --permanent   打开3306
    firewall-cmd --reload

    4 注意事项

    1 事务的隔离级别,默认是可重复读repeatable-read

    2 mysql 默认使用group by 会报错

    Syntax error or access violation: 1055 Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ycf.c.created' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

    在my.cnf中[mysqld]下添加如下代码

    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    相关文章

      网友评论

          本文标题:LNMP搭建过程及其配置

          本文链接:https://www.haomeiwen.com/subject/gxcjtqtx.html