LNMP搭建过程及其配置

以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)

如果没有这三个源码文件可留言或电邮至[email protected] 我发给你

./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

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搭建过程及其配置)