美文网首页PHP经验分享程序员
Nginx+PHP+MySql环境配置

Nginx+PHP+MySql环境配置

作者: F4lc0n | 来源:发表于2019-08-14 21:51 被阅读2次

    博客地址:https://m0ng0lfalcon.github.io/

    Linux 环境配置


    借鉴自:https://www.cnblogs.com/hangzhounec/p/9152604.html


    一、Linux 的安装

    1. 镜像的准备

      xubuntu-18.04.2-desktop-i386.iso

    2. 开始安装

    XUbuntu开始安装.png

    选择英文版的安装

    1. 一路按默认的进行。

    2. 正式安装

    XUbuntu正式安装.png
    1. 安装完成
    安装成功.png

    二、Nginx 的安装

    1. 命令安装:

      sudo apt-get install nginx

    2. 修改 Nginx 配置文件

      sudo vim /etc/nginx/sites-available/default

    3. 修改如下内容

      1. 修改41行:
        修改配置文件1.png
    1. 修改 56 ~ 63
      修改配置文件2.png
    1. 重启 Nginx 服务

      sudo service nginx restart

    2. 测试 Nginx


      成功.png

    三、php 安装

    1. 命令安装

      sudo apt-get install php7.2 php7.2-fpm php7.2-mysql

    2. 修改 php 配置文件

      sudo vim /etc/php/7.2/fpm/pool.d/www.conf

    3. 修改一下内容,修改 37 行


      修改配置文件.png
    1. 重启php服务

      sudo service php7.0-fpm start

    2. 测试php服务

      1. /var/www文件夹下创建info.php

      2. 输入一下代码

        <?php
            phpinfo();
        ?>
        
      3. 在浏览器打开:localhost/info.php

        php配置成功.png

    四、MySQL 安装

    1. 命令安装

      sudo apt-get install mysql-server mysql-client

    2. 更新密码:

      sudo mysql
      
      use mysql;
      
      update mysql.user set authentication_string=PASSWORD('New_Password'), plugin='mysql_native_password' where user='root';
      # 这一步主要是在设置新密码的时候,顺便把用户root的plugin进行修改,修改为默认的 mysql_native_password,然后在刷新权限设置。
      
      flush privileges;
      
    3. 重启 MySQL 服务

      sudo service mysql restart

    4. 测试 MySQL

      1. /var/www 文件夹下创建mysql.php

      2. 输入一下代码:

        <?php echo '<h1>Page loaded with PHP!</h1>';
        $conn = mysqli_connect('localhost', 'site_admin', 'your_password');
        
        if(!$conn){
            die('<h2>Error: </h2>' . mysqli_connect_error());
        }else{
            echo '<h2>Successfully Connected to MySQL Database!</h2>';
        }
        ?>
        
      3. 浏览器打开:localhost/mysql.php

        mysql成功链接.png

    五、Nginx 安全加固

    借鉴自:https://blog.51cto.com/purplegrape/1651656

    1. 备份 /etc/nginx/sites-available/default

    2. 屏蔽IP (屏蔽除中国以及美国以外的IP)

      if ( $geoip_country_code !~  ^(CN|US)$ ) {
           return 403;
      }
      
    3. 封杀各种user-agent

      if ($http_user_agent ~* "java|python|perl|ruby|curl|bash|echo|uname|base64|decode|md5sum|select|concat|httprequest|httpclient|nmap|scan" ) {
       return 403;
      }
      if ($http_user_agent ~* "" ) {
       return 403;
      }
      
    4. 封杀特定的url

      特定的文件扩展名,比如.bak

      location ~* \.(bak|swp|save|sh|sql|mdb|svn|git|old)$ {
      rewrite ^/(.*)$  $host  permanent;
      }
      

      知名程序,比如phpmyadmin

      location /(admin|phpadmin|status)    { deny all; }
      
    5. 封杀特定的http方法和行为,比如

      if ($request_method !~ ^(GET|POST|HEAD)$ ) {
       return 405;
      }
      
      if ($http_range ~ "\d{9,}") {
       return 444;
      }
      
    6. url 参数过滤敏感字,比如

      if ($query_string ~* "union.*select.*\(") { 
       rewrite ^/(.*)$  $host  permanent;
      } 
      
      if ($query_string ~* "concat.*\(") { 
       rewrite ^/(.*)$  $host  permanent;
      }
      

    Windows下的环境配置


    一、Nginx的安装

    借鉴自:https://www.cnblogs.com/jiangwangxiang/p/8481661.html

    1. 到官网http://nginx.org/下载最新的稳定版本:
      nginx 下载.png
    nginx 稳定版本下载.png
    1. 下载之后解压,得到如下:
    解压后.png
    1. 启动Nginx:

      1. 双击nginx.exe运行
      2. 命令行输入 start nginx 或者 nginx.exe
    2. 检查是否启动:

      浏览器输入 http://localhost:80

      安装成功.png
    1. 关闭Nginx:

      1. Nginx命令:nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)
      2. taskkill命令:taskkill /f /t /im nginx.exe

    二、php的安装

    借鉴自:https://www.cnblogs.com/wwjchina/p/9804576.html

    1. 下载最新版的 php

      网址:https://windows.php.net/download/

    下载php最新版.png
    1. 解压:
      解压后.png
    1. 进行配置 :

      1. 找到php.ini-development拷贝一份,并且重命名为php.ini

      2. 打开php.ini

      3. 搜索extension_dir配置项,去掉前面的分号:;,并且把内容改成php目录下的ext的绝对路径,例如:C:\Wnpm\php-7.3.7\ext

    extension_dir.png
    1. 搜索cgi.fix_pathinfo配置项,同样去掉分号,设置为1
    cgi.fix_pathinfo.png
      > `cgi.fix_pathinfo`是用来设置在cgi模式下PHP是否提供PATH_INFO信息。因为nginx默认不会设置PATH_INFO的值,所以需要通过上面的方法来提供。
    

    三、配置 Nginx + php

    1. 修改Nginx的配置文件

      1. 打开Nginx文件夹,conf里的nginx.conf

      2. 修改如下内容


        配置文件1.png

    下划线部分改成自己放置网站的目录


    配置文件2.png

    先把前面的#号给去掉,下划线部分改成自己放置网站的目录

    1. 在Windows下开启Nginx&PHP服务比较麻烦,所以我们需要用到RunHiddenConsole来隐藏运行我们的Nginx服务跟PHP服务。

      下载地址:http://www.inbeijing.org/wp-content/uploads/2015/06/RunHiddenConsole.zip

      创建两个 bat 文件

      start.bat

      @echo off
      REM Windows 下无效
      REM set PHP_FCGI_CHILDREN=5
      
      REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
      set PHP_FCGI_MAX_REQUESTS=1000
       
      echo Starting PHP FastCGI...
      RunHiddenConsole C:\Wnpm\php-7.3.7\php-cgi.exe -b 127.0.0.1:9000 -c C:\Wnpm\php-7.3.7\php.ini
       
      echo Starting nginx...
      RunHiddenConsole C:\Wnpm\nginx-1.16.0\nginx.exe -p C:\Wnpm\nginx-1.16.0
      

      stop.bat

      @echo off
      echo Stopping nginx...  
      taskkill /F /IM nginx.exe > nul
      echo Stopping PHP FastCGI...
      taskkill /F /IM php-cgi.exe > nul
      exit
      
    2. 测试php服务

      在网站目录下创建phpinfo.php文件

      <?php
        phpinfo();
      ?>
      

      在浏览器打开localhost/phpinfo.php

      配置成功.png

    四、安装MySQL

    借鉴自:https://www.runoob.com/mysql/mysql-install.html

    1. 下载MySQL

      地址:https://dev.mysql.com/downloads/mysql/

    下载1.png 下载2.png
    1. 解压后放到适当的位置,我放到了Nginx跟php的同级目录,目录结构:


      目录结构.png
    1. mysql-8.0.17文件夹创建配置文件

      [client]
      # 设置mysql客户端默认字符集
      default-character-set=utf8
       
      [mysqld]
      # 设置3306端口
      port = 3306
      # 设置mysql的安装目录
      basedir=C:\\Wnpm\\mysql-8.0.17
      # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
      # datadir=C:\\web\\sqldata
      # 允许最大连接数
      max_connections=20
      # 服务端使用的字符集默认为8比特编码的latin1字符集
      character-set-server=utf8
      # 创建新表时将使用的默认存储引擎
      default-storage-engine=INNODB
      
    2. 给Windows添加环境变量:

    环境变量.png
    1. 初始化数据库

      mysqld --initialize --console
      
    init.png
    1. 得到初始化密码 !QsgoT9)8fS2

    2. 启动MySQL服务

    启动MySQL服务.png

    这里有一点要注意:管理员运行cmd

    1. 登陆MySQL

      mysql -h 主机名 -u 用户名 -p
      

      参数说明:

      • -h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
      • -u : 登录的用户名;
      • -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。

      因为是本机

      mysql -u root -p
      

      用刚刚得到的密码登陆


      登陆.png

    更改root的默认密码:


    password.png

    语法:

    格式:mysqladmin -u用户名 -p旧密码 password 新密码  
    
    例子:mysqladmin -uroot -p123456 password 123  
    
    1. 测试MySQL

      测试代码:

      <?php echo '<h1>Page loaded with PHP!</h1>';
      $conn = mysqli_connect('localhost', 'root', 'root');
      
      if(!$conn){
          die('<h2>Error: </h2>' . mysqli_connect_error());
      }else{
          echo '<h2>Successfully Connected to MySQL Database!</h2>';
      }
      ?>
      

      返回结果:


      成功.png

    相关文章

      网友评论

        本文标题:Nginx+PHP+MySql环境配置

        本文链接:https://www.haomeiwen.com/subject/nzfojctx.html