我们的开发环境一般现在时用Linux + Nginx + MySQL(mariaDB) + PHP的组合进行项目的搭建与开发,工欲善其事必先利其器。

搭建环境:

Centos7 + mysql5.6 + php7

废话少说,直接上干货

1. 安装mysql5.*

与centos6不同,centos7必须使用社区仓库来按章mysql

如果使用

yum install mysql

默认会安装MariaDB数据库

所以,安装:

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server

安装过程中。使用y确定安装

完成之后,mysql会默认安装在/var/lib/mysql目录下

启动mysql并设置开机启动

systemctl start mysqld      #启动 mysql
systemctl enable mysqld #开机启动mysql

mysql安装后会绑定到地址localhost(127.0.0.1),默认用户名:root。密码为空

使用下面的mysql_secure_installation进行密码修改

注意: mysql5.7.6+版本修改方式会不同

2. 安装nginx

如果系统中存在apache,可以先进行卸载

service httpd stop

systemctl disable httpd

yum remove httpd

nginx安装

yum install peel-release
yum -y install nginx

启动nginx服务并设置为开机启动

systemctl start nginx
systemctl enable nginx

好了,现在我们可以打开浏览器输入服务器的域名或IP地址:

nginx默认的html根目录是: /usr/share/nginx/html

为了让web应用能读写,设置拥有者为nginx用户:

chown -R nginx:nginx html/

注意点:

有时候会出现nginx正常启动,但是页面无法正常访问的问题,这个有可能是防火墙的问题

使用telnet测试端口

telnet 192.168.11.119 80

正常连接

查看端口是否开启

firewall-cmd --zone=public --query-port=80/tcp

如果没有开启,将其开启

firewall-cmd --zone=public --add-port=80/tcp --permanent
//设置完成之后,一定要记得重启防火墙
systemctl-cmd --reload

3. php-fpm 安装

PHP通过 php-fpm(FastCGI进程管理器)可以很好的与nginx协同工作

PHP5的安装:

yum install php php-mysql php-fpm

PHP7的安装:

rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm. # 安装epel源

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm #安装Webstatic源

yum install php72w php72w-common php72w-fpm php72w-opcache php72w-mysqlnd php72w-gd php72w-mbstring  # PHP 5.3.0以上推荐使用mysqlnd驱动,而不是msyql

这里使用webstatic源来安装PHP7.2

进行配置:

1)打开配置文件 /etc/php.ini 删除cgi.fix_pathinfo前面注释符并赋值为0

[...]
cgi.fix_pathinfo=0
[...]

再配置PHP-FPM.打开文件/etc/php-fpm.d/www.conf

  将127.0.0.1:9000 改为php-fpm.sock

  取消listen.owner 和 listen.group 前面的注释

  将user和group值都由apache改成nginx

如下:

[...]
listen = /var/run/php-fpm/php-fpm.sock
[...]
listen.owner = nobody
listen.group = nobody
[...]
user = nginx
group = nginx
[...]

启动php-fpm并设置开机启动

systemctl start php-fpm
systemctl enable php-fpm

php-fpm启动之后,会生成socket文件 /var/run/php-fpm/php-fpm.sock 作为守护进程运行FastCGI服务

nginx配置:

Nginx 的配置文件是:/etc/nginx/nginx.conf 进行配置

首先,根据情况调整worker_processeskeepalive_timeout(可选)

[...]
worker_processes 4;
[...]
keepalive_timeout 2;
[...]

虚拟主机定义在 server{} 容器中,修改为如下内容:

[...]
server {
listen 80;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html; # 设置默认主页
index index.php index.html index.htm; location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
} # PHP脚本转发至PHP-FPM解析
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
}
[...]

关于配置的一些说明:

  • 首先,我们打开两个listen,让 Nginx 同时侦听 IPv4 和 IPv6 的80端口。
  • server_name _; 绑定所有的域名(可以指定主机名,如 www.example.com)。
  • 脚本根目录 root 不变,依然是 /usr/share/nginx/html 。
  • 索引首页文件 index 添加上 index.php
  • 其中针对 PHP 很重要的部分在location ~\.php$ {} 中。为防止零日攻击(详见:http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP andhttp://forum.nginx.org/read.php?2,88845,page=3),该部分开头设置了try_files $uri =404;

保存配置文件后,检查配置文件的语法,再重新加载 Nginx:

nginx -t                       # 检查配置文件语法
systemctl reload nginx # 重新加载nginx

使用tcp进行连接:

默认情况下,PHP-FPM 通过 /var/run/php-fpm/php-fpm.sock 文件侦听 socket。

当然,也可以设置 PHP-FPM 使用 TCP 连接。

打开文件 /etc/php-fpm.d/www.conf,设置 listen 值如下:

[...]
;listen = /var/run/php-fpm/php-fpm.sock
listen = 127.0.0.1:9000
[...]

这样 PHP-FPM 会侦听地址 127.0.0.1(localhost)和端口9000,确保这个端口没有被其他程序占用。

然后重新加载 PHP-FPM:

systemctl reload php-fpm

接下来,编辑 /etc/nginx/nginx.conf 文件,修改如下一行:

[...]
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
[...]

然后,重载 nginx 就可以了:

systemctl reload nginx

参考文件:

  1.http://dl.fedoraproject.org

  2.https://webtatic.com/packages/php72/

  3.http://php.net/manual/zh/install.unix.nginx.php

4.Centos7 安装 PHP7最新版

5.CentOS 7 安裝 Nginx、PHP7、PHP-FPM

6.How To Install Linux, Nginx, MySQL, PHP (LEMP) stack On CentOS 7

7.Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support (LEMP) On Ubuntu 14.04 LTS

8.How to Install MySQL on CentOS 7

9.HOW TO INSTALL AND CONFIGURE NGINX ON CENTOS 7

开发环境搭建(lnmp)的更多相关文章

  1. PHP开发环境搭建工具有哪些?

    对于php开发小白来说搭建一个php运行环境就是一道坎! 因为要做php开发,搭建一个能够运行php网站的服务器环境是第一步,传统的php环境软件非常复杂,好在很多公司开发了一键搭建php安装环境,一 ...

  2. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  3. IntelliJ IDEA安装及jsp开发环境搭建

    一.前言 现在.net国内市场不怎么好,公司整个.net组技术转型,就个人来说还是更喜欢.net,毕竟不是什么公司都像微软一样财大气粗开发出VS这样的宇宙级IDE供开发者使用,双击sln即可打开项目, ...

  4. Qt for Android开发环境搭建及测试过程记录

    最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...

  5. node.js之开发环境搭建

    一.安装linux系统 (已安装linux可跳此步骤) 虚拟机推荐选择:VirtualBox 或者 Vmware (专业版永久激活码:5A02H-AU243-TZJ49-GTC7K-3C61N) 我这 ...

  6. TODO:小程序开发环境搭建

    TODO:小程序开发环境搭建 1.第一步当然是要先注册小程序了 2.登录到小程序 a)完善小程序信息,如名称,图标,描述 3.绑定开发者 4.获取AppID,并设置服务器信息 5.下载并安装开发者工具 ...

  7. Eclipse中Python开发环境搭建

    Eclipse中Python开发环境搭建  目 录  1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...

  8. Windows 10 IoT Serials 1 - 针对Minnow Board MAX的Windows 10 IoT开发环境搭建

    目前,微软针对Windows IoT计划支持的硬件包括树莓派2,Minnow Board MAX 和Galileo (Gen 1和Gen 2).其中,Galileo (Gen 1和Gen 2)运行的是 ...

  9. Eclipse swt开发环境搭建

    原料: eclipse swt.下载链接为: Eclipse 4.6.2 Release Build: 4.6.2 配置说明: Developing SWT applications using Ec ...

  10. Ionic- Android 开发环境搭建

    Ionic- Android 开发环境搭建 为时一周的IONIC ADNROID 环境终于在各种处理错误中搭建成功,以下记录下搭建过程中遇到的各种情况的处理办法. 一 首先,当然是enviroment ...

随机推荐

  1. Servlet(四):转发与重定向、路径问题

    在上次的小案例中用到了转发的技术,今天来仔细聊聊转发和重定向的问题,以及一些小知识的汇总. 一.转发 1.转发的概念 转发主要是将浏览器的请求交给另外一个servlet或jsp来处理,借助reques ...

  2. Nunit单元测试入门学习随笔(一)

    Nunit单元测试 一.插件安装与项目关联 选择工具~扩展和更新 点击联机~搜索Nunit安装图内三个插件 新建单元测试项目 勾选项目引用 二.Nunit学习 1.了解单元测试 单元测试在我的理解是测 ...

  3. 深入理解Ribbon之源码解析

    什么是Ribbon Ribbon是Netflix公司开源的一个负载均衡的项目,它属于上述的第二种,是一个客户端负载均衡器,运行在客户端上.它是一个经过了云端测试的IPC库,可以很好地控制HTTP和TC ...

  4. Linux中的零拷贝技术

    转载:https://www.jianshu.com/p/fad3339e3448 引文## 在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能.这时候服务端的任务是: ...

  5. SpringMVC handleMapping映射过程

    初始化IOC容器 Spring初始化的时候会优先初始化自定义的类,下面这个就是 org.springframework.web.servlet.mvc.method.annotation.Reques ...

  6. docker 3 docker安装

    centos docker安装 docker支持以下centos版本: centos 7 (64-bit) centos 6.5 (64-bit)或更高的版本 前提条件 目前,centos仅发行版中的 ...

  7. with as 加上 materialize hint 生成实质临时表

    WITH AS: 就是将一个子查询部分独立出来,有时候是为了提高SQL语句的可读性,有时候是为了提高SQL语句性能. 如果一个SQL语句中,某个表会被访问多次,而且每次访问的限制条件一样的话,就可以使 ...

  8. 获取数值型数组的平均值(分别使用增强for循环和普通for循环)

    package com.Summer_0419.cn; /** * @author Summer * 获取数值型数组的平均值 */ public class Test_Method14 { publi ...

  9. UIImageView - BNR

    继续上节UINavigationController - BNR. 打开BNRDetailViewController.xib文件,向view中添加UIImageView对象,选中该对象,通过Attr ...

  10. Spring Cloud (十四):Spring Cloud 开源软件都有哪些?

    学习一门新的技术如果有优秀的开源项目,对初学者的学习将会是事半功倍,通过研究和学习优秀的开源项目,可以快速的了解此技术的相关应用场景和应用示例,参考优秀开源项目会降低将此技术引入到项目中的成本.为此抽 ...