PHP经验分享程序员

Nginx+PHP+MySql环境配置

2019-08-14  本文已影响2人  F4lc0n

博客地址: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
上一篇下一篇

猜你喜欢

热点阅读