我们的开发环境一般现在时用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. Vue学习之路4-v-bind指令

    1. 定义 1.1 v-bind 指令被用来响应地更新 HTML 属性,其实它是支持一个单一 JavaScript 表达式 (v-for 除外). 2. 语法 2.1 完整语法:<span v- ...

  2. Servlet(五):一个Servlet处理多个请求

    一.为什么要使用一个Servlet来处理多个请求? 当浏览器发送了一次请求到服务器时,servlet容器会根据请求的url-pattern找到对应的Servlet类,执行对应的doPost或doGet ...

  3. March 10th, 2018 Week 10th Saturday

    All good things must come to an end. 好景无常. Love is when the other person's happiness is more importa ...

  4. C3P0连接池温习1

    一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大 ...

  5. Python中的__new__()方法与实例化

    @Python中的__new__()方法与实例化   __new__()是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python 中 存在于类里面的构造方法__init__ ...

  6. JS函数防抖与函数节流

    概念 函数防抖(debounce) 当调用动作过n毫秒后,才会执行该动作,若在这n毫秒内又调用此动作则将重新计算执行时间 函数节流(throttle) 预先设定一个执行周期,当调用动作的时刻大于等于执 ...

  7. nginx进行反向代理,80端口使用

    环境说明:centos7 安装版本:tengine2.2.2 实现目的: 想用本地80端口,代理其它服务器的非80端口,实现80端口复用 [root@tiaobanji conf]# cat ngin ...

  8. Run Redis

    Cmd window enter console Cd\ E: Cd E:\Graduration\Redis\github Run redis for window 64 After cmd ent ...

  9. PAT A1095 Cars on Campus (30 分)——排序,时序,从头遍历会超时

    Zhejiang University has 8 campuses and a lot of gates. From each gate we can collect the in/out time ...

  10. switch and checkbox

    import 'package:flutter/material.dart'; void main()=>runApp(MyApp()); class MyApp extends Statele ...