我们的开发环境一般现在时用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. ubuntu16.04如何安装多个版本的CUDA

    我的机器是CUDA16.04的,之前装过CUDA10.0,因为一些原因,现在需要安转CUDA9.0. 1.首先https://developer.nvidia.com/cuda-90-download ...

  2. LeetCode算法题-Range Sum Query Immutable(Java实现)

    这是悦乐书的第204次更新,第214篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第70题(顺位题号是303).给定整数数组nums,找到索引i和j(i≤j)之间的元素之 ...

  3. MATLAB中冒号的用法

    MATLAB中冒号的用法 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ matlab中冒号代表步长,用实例来说明 >> A=[1 2 3 ...

  4. 【Linux基础】大B和小b

    1.小b(bit) 在计算机科学中,bit(比特)是表示信息的最小单位,叫做二进制位,一般用0和1表示. 2.大B(Byte) Byte叫做字节,由8个位(8bit)组成一个字节(1Byte),用于表 ...

  5. 如何弄清Linux系统运行何种系统管理程序

    如何弄清Linux系统运行何种系统管理程序 虽然我们经常听到系统管理器System Manager这词,但很少有人深究其确切意义.现在我们将向你展示其区别. 我会尽自己所能来解释清楚一切.我们大多都知 ...

  6. Sphinx 生成 Windows 帮助文件 (.chm文件)

    本文不介绍 Sphinx 的用法,只简要罗列 Windows 下生成 .chm 文件的步骤. 0. 首先检查机器是否安装了 HTML Help Workshop 软件,一般安装路径应该是 C:\Pro ...

  7. ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别(转载)

    原文出处:http://www.blogjava.net/xcp/archive/2009/10/29/coding2.html 最近老为编码问题而烦燥,下定决心一定要将其弄明白!本文主要总结网上一些 ...

  8. Tomcat的九个内置对象

    在之前学习过程中使用的对象大部分都是我们自己使用new关键字或者反射创建的,现在容器中会自动创建对象,我们只要直接使用即可,不需要我们再去创建这些对象,在Tomcat容器中提供了九种内置对象,有一些不 ...

  9. Generative Adversarial Nets[Pre-WGAN]

    本文来自<towards principled methods for training generative adversarial networks>,时间线为2017年1月,第一作者 ...

  10. 用Python实现大文件分割

    python代码如下: import sys,os kilobytes = 1024 megabytes = kilobytes*1000 chunksize = int(200*megabytes) ...