以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
网友评论