百度内部php框架odp有单独的nginx+php/php-fpm环境,但为了更好的实践,自己搭建一套单独的。

1.首先安装nginx

两种方式:

1)yum源安装(使用root权限)
yum install nginx 2)使用源码编译安装(可以root或者普通用户安装,普通用户安装的时候要注意指定安装路径)
tar xzvf nginx.tar.gz
./configure --prefix=xxxx
make && make install

2.配置nginx

yum安装的默认nginx配置文件位置/etc/nginx/conf.d/,(具体配置文件修改说明后面补充)

nginx根目录配置问题:

使用root安装完软件后,默认的网站根目录是/usr/share/nginx/html,我想改成某一用户下的目录比如/home/users/A/www,但是简单修改完访问报错403forbidden。

经调查尝试后发现,在安装nginx时,系统会默认创建新的用户和用户组nginx,在访问网站时,系统是以nginx用户访问相应的网站目录,如果简单把网站根目录修改为/home/users/A/www是没有权限的。

你可以修改文件夹权限:

chown -R nginx:nginx www
chomd -R www

但是以nginx用户是无权限访问上层目录进来的。

最后尝试的办法是:

/etc/nginx/nginx.conf文件夹中设定了访问的用户是user: nginx,尝试把这个用户修改为A,nginx -s reload后网站成功访问,搞定!

另外还有一个问题:

在阿里云服务器上搭建环境时,要记住在服务器操作后台设置安全组规则,允许访问80、8080等常用的端口号。另外,CentOS7系统的防火墙也是组织访问的因素,所以要配置好iptables文件。

3.安装PHP

安装PHP前要明白nginx和PHP之间的通信方式是fastcgi,而php-fpm提供了对fastcgi进程管理的工具,安装php时要编译安装php-fpm

参考:

http://blog.csdn.net/zhaoliang831214/article/details/51333831

http://blog.csdn.net/hwh4729/article/details/5938764

http://www.thinkphp.cn/topic/42338.html

更新yum源
CentOs 5.x
rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm
CentOs 6.x
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
CentOs 7.X
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
安装php
yum install php55w.x86_64 php55w-cli.x86_64 php55w-common.x86_64 php55w-gd.x86_64 php55w-ldap.x86_64 php55w-mbstring.x86_64 php55w-mcrypt.x86_64 php55w-mysql.x86_64 php55w-pdo.x86_64
安装php-fpm
yum install php55w-fpm 
以上如果想安装php5.6/7,修改php55w为php56w/php70w

启动php-fpm和nginx实现通信,完成整个系统的搭建。

更换完网站根目录后,相应的php-fpm的权限也需要变化,我就遇到一个问题,在访问根目录的html文件是可以的,但是php文件就不能解析,查过一些帖子,说fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;有问题,可是修改后还是不行。

于是,我找到php-fpm.conf文件,将里面的user、group都改成当前根目录所属的用户,重启php-fpm,搞定!

4.安装mysql

yum list installed | grep mysql
yum remove xxx
yum install mysql-server mysql mysql-devel

修改配置文件:

vi /etc/my.cnf  修改端口号等

启动mysql:

service mysqld start

修改用户和用户组:

chown -R root:root /var/lib/mysql

修改root密码:

mysql -u root
mysql > use mysql;
mysql > update user set password=password(‘‘) where user=‘root‘;

添加用户:

mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,'shawn’,password(‘shawn’));
//刷新系统权限表
mysql>flush privileges;

授权外部访问:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY ''  WITH GRANT OPTION;
flush privileges;

安装mysql时遇到的问题:

1).Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘

解决办法是:把/var/lib/mysql和/var/lib/mysqli的文件用户和用户组都改为当前用户即可。在安装mysql时,系统默认创建mysql用户和用户组,造成权限问题

2).Mysql Incorrect integer value(1366)错误解决方法

这种问题一般MySQL 5.x上出现。我用的mysql5.1,后面查询得知新版本mysql对空值插入有"bug",要在安装mysql的时候去除默认勾选的enable strict SQL mode。如果已经安装好了的,就在my.ini中查找sql-mode,默认为sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",将其修改为sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重启mysql后即可。

5.安装redis

redis安装还是挺简单的:

yum install redis
redis-server & 启动redis并保持后台运行
redis-cli 连接redis服务器

php与redis通信要编译安装并加载redis.so,具体方法如下:

下载php-redis文件:https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz
解压进入文件夹执行:
/usr/local/php/bin/phpize #用phpize生成configure配置文件,目录可能不同。phpize是php中bin目录下的一个可执行文件,所有要先找到对应的目录。 ./configure --with-php-config=/usr/local/php/bin/php-config #配置,注意要先确保/usr/local/php/bin/php-config存在。对应php的bin目录下的php-config make #编译 make install #安装 安装完成之后,出现下面的安装路径
/usr/lib64/php/modules/ 配置php支持
vi /usr/local/php/etc/php.ini #编辑配置文件,在最后一行添加以下内容 添加
extension="redis.so" 重启php-fpm

网站搭建过程中遇到的问题:

1)前端ajax请求后端返回数据,由于返回值太长被nginx截断,无法正常显示

Nginx 的 buffer 机制,对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。
比如如下配置:
fastcgi_buffers 4K;
fastcgi_buffer_size 4K;
fastcgi_buffers 控制 nginx 最多创建 个大小为 4K 的缓冲区,而 fastcgi_buffer_size 则是处理 Response 时第一个缓冲区的大小,不包含在前者中。所以总计能创建的最大内存缓冲区大小是 84K+4K = 36k。而这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的。比如一个 8K 的页面,Nginx 会创建 24K 共 个 buffers。
当 Response 小于等于 36k 时,所有数据当然全部在内存中处理。如果 Response 大于 36k 呢?fastcgi_temp 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面。
内存中缓冲了 36Kb,剩下的会写入的文件中。而实际的情况是,运行 Nginx Process 的用户并没有 fastcgi_temp 目录的写权限,于是剩下的数据就丢失掉了。

因此,修改/var/lib/nginx/tmp/fastcgi这个路径的权限即可。

Linux搭建nginx+php/php-fpm+mysql环境的更多相关文章

  1. 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建

    作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...

  2. win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

    win7环境基础在上一篇win7下docker环境搭建nginx+php-fpm+easyswoole开发环境中已经详细叙述搭建完成 本篇文章将叙述如何在上述基础上搭建laravel开发环境,这个其实 ...

  3. 自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版

    Nginx比apache要好,优点很多,随便去搜寻引擎找一下就能找到一大把资料,这不是我们讨论的重点,我们的重点是自己做一个运行组合!     為何我不從網上下載一個別人已經封裝好的現成的版本呢?因為 ...

  4. 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!

    写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...

  5. Nginx系列篇二:linux搭建Nginx负载均衡

    建议先搭建好Nginx环境 可阅读--->Linux中搭建Nginx 1.准备好三台服务器[标配] 一.nginx负载均衡服务器:192.168.102.110,配置好Nginx 二.tomca ...

  6. centos(Linux)系统阿里云ECS搭建 jdk,tomcat和MySQL环境,并部署web程序

    之前我对这个东西一无所知,攻击力为0,谢谢各个论坛上面的兄弟们的帮助. 过程: 首先ssh远程登陆: ssh root@你的公网ip ,输入密码 1,jdk我用的版本是jdk-7u80-linux-x ...

  7. Linux 搭建Nginx+uWSGI+Django环境

    安装环境 sudo apt-get install nginx sudo apt install python3 sudo apt install python3-pip 使用 sudo pip3 i ...

  8. Linux 搭建 Nginx+PHP-FPM环境

    安装PHP.Nginx和PHP-FPM sudo apt-get install php sudo apt-get install nginx sudo apt-get install php7-fp ...

  9. linux 搭建nginx环境(centos6.5)

    1.rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rp ...

随机推荐

  1. thinkCMF图片上传选择已上传图片

    1.找到上传图片的模板页面 webuploader.html 在上传文件标签后面 添加 <li class=""><a href="#explorer& ...

  2. XssFilter EscapeUtil

    package com.ruoyi.framework.config; import java.util.HashMap; import java.util.Map; import javax.ser ...

  3. 1.where子句的优化

    不需要在牺牲可读性的情况下重写sql,因为mysql会自动进行类似的优化. 1.去掉无用的括号 ((a AND b) AND c OR (((a AND b) AND (c AND d)))) -&g ...

  4. pandas(二)

    1.Series序列 一维的数组数据,构建是传二维数据会报错,数据具有索引,构建时如果不传索引,默认为数字rang索引. series存在列名和索引,sr.at[0]是通过列名来定位数据(iat定位行 ...

  5. D - Daydreaming Stockbroker Gym - 101550D

    题目链接:http://codeforces.com/gym/101550/attachments 总的来说就是要: 极大值卖出,极小值买入, 再加上端点时的特判. 还有就是会有连续几天股票价格相同的 ...

  6. 01 语言基础+高级:1-4 接口与多态_day10【接口、多态】&&day11【final、匿名内部类】

    day10[接口.多态] 接口三大特征——多态引用类型转换 教学目标写出定义接口的格式写出实现接口的格式说出接口中成员的特点能够说出使用多态的前提条件理解多态的向上转型理解多态的向下转型 day10_ ...

  7. Kubernetes系列:Kubernetes Dashboard

    15.1.Dashboard 作为Kube认得Web用户界面,用户可以通过Dashboard在Kubernetes集群中部署容器化的应用,对应用进行问题处理和管理,并对集群本身进行管理.通过Dashb ...

  8. LGOJ1861 星之器

    前置扯淡 我对这个题目的评价和网上各位大佬的一样:人类智慧题 (显然我不具有人类智慧--) Description link 现在有一个 \(n \times m\) 的矩阵\(A\),里面的每个元素 ...

  9. Opencv笔记(十五)——图像金字塔

    参考文献 目标 学习图像金字塔 学习函数cv2.pyrUp()和cv2.pyrDown() 原理 当我们需要将图像转换到另一个尺寸的时候, 有两种可能,一种是放大图像,另一种是缩小图像.尽管在Open ...

  10. 基于Wiki的知识共享平台模型架构

    一.引言 当今的全球化知识经济社会中呈现出信息泛滥和知识更新周期短的现象,知识管理逐渐成为现代企业管理中不容忽视的一环.虚拟企业是基于共识目标而组成的动态协作组织,成员参与的流动性与各成员之间地域分布 ...