zoukankan      html  css  js  c++  java
  • 开发环境搭建(lnmp)

    我们的开发环境一般现在时用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

  • 相关阅读:
    大话字符串逆序
    Class文件结构全面解析(上)
    怎么把CAT客户端的RootMessageId记录到每条日志中?
    阅读JDK源码后,我有了优化它的冲动!
    CAT客户端如何从Apollo中读取配置?
    Sublime Text 3许可证
    通俗易懂地给女朋友讲:线程池的内部原理
    五分钟后,你将学会在SpringBoot项目中如何集成CAT调用链
    分布式监控CAT服务端的本地部署
    如何优雅的设置线程池的大小?
  • 原文地址:https://www.cnblogs.com/xingxia/p/Linux_lnmp.html
Copyright © 2011-2022 走看看