Windows搭建PHP+Nginx+MySQL环境

php-7.4.5-nts-Win32-vc15-x64.zip + mysql-5.7.30-winx64.zip + nginx-1.18.0.zip 文件自行到下载,直接开始安装配置环节。

1. 安装 MySQL

  • 配置文件

解压后,在 MySQL 根目录下新建 data 文件夹和 my.ini 配置文件,其中 my.ini
配置文件内容如下,其他参数可自行配置:

[mysql]

# 设置mysql客户端默认字符集
default-character-set=utf8 

[mysqld]

#设置3306端口
port = 3306 

# 设置mysql的安装目录
basedir=E:\PHPEnv\mysql5730

# 设置mysql数据库的数据的存放目录
datadir=E:\PHPEnv\mysql5730\data

# 允许最大连接数
max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
  • 初始化和安装

使用管理员身份进入 cmd ,进入 MySQL 安装目录下的 bin 目录,依次输入以下命令:

mysqld --initialize

mysqld --install

其中,mysqld --initialize 进行初始化,在 data 目录下生成相关的文件;在初始化成功之后,使用 mysqld --install 命令进行安装。

  • 启动服务和修改密码
# 启动服务
net start mysql

# 登录后立即修改密码
# 打开 .err 文件,找到 A temporary password is generated for root@localhost: yourpassword

# 登录
mysql -u root -p yourpassword

# 修改密码
set password for root@localhost = password('your password');

2. 安装 PHP

  • 配置文件

将解压后 PHP 根目录下的 php.ini-development 文件复制一份改为 php.ini,作为 PHP 的配置文件。然后就可以直接使用了,一些相关的参数可以自己在 php.ini 进行配置,扩展自行添加。

# 设置时区
date.timezone=Asia/Shanghai

# 扩展目录
extension_dir ="E:/PHPEnv/php745nts/ext"

# 开启扩展
extension=curl
extension=mysqli
extension=pdo_mysql
  • 配置环境变量,这个自行添加配置。

3. 安装 Nginx

  • 配置文件

找到Nginx解压目录下 conf/nginx.conf 进行编辑,相关参数自行修改,注释 server 内的所有内容,并加入 include vhosts/*.conf 为单个网站独立配置。


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

#    server {
#        listen       80;
#        server_name  localhost;
#
#        #charset koi8-r;
#
#        #access_log  logs/host.access.log  main;
#
#        location / {
#            root   html;
#            index  index.html index.htm;
#        }
#
#        #error_page  404              /404.html;
#
#        # redirect server error pages to the static page /50x.html
#        #
#        error_page   500 502 503 504  /50x.html;
#        location = /50x.html {
#            root   html;
#        }
#
#        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
#        #
#        #location ~ \.php$ {
#        #    proxy_pass   http://127.0.0.1;
#        #}
#
#        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#        #
#        #location ~ \.php$ {
#        #    root           html;
#        #    fastcgi_pass   127.0.0.1:9000;
#        #    fastcgi_index  index.php;
#        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#        #    include        fastcgi_params;
#        #}
#
#        # deny access to .htaccess files, if Apache's document root
#        # concurs with nginx's one
#        #
#        #location ~ /\.ht {
#        #    deny  all;
#        #}
#    }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

    include vhosts/*.conf;

    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}

独立配置的文件,随便起个名字,只要后缀是 .conf 的就可以了。相关内容基本如下,具体参数自行设置:

server {
        listen         80;
        server_name    www.yourWebsite.com;
        root           "E:\PHPEnv\www";
        location / {
			try_files $uri $uri/ /index.php?$query_string;
            index index.php index.html;
        }
        location ~ \.php(.*)$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
}

4. WNMP 环境的使用

  • E:\PHPEnv\www 目录下新建index.php文件,输入以下内容:


phpinfo();
  • 设置 hosts 文件,在最后一行加上你的网址:
127.0.0.1   www.yourWebsite.com
  • 启动 php-cgi,使用以下命令(前提是已经配置环境变量):
php-cgi -b 127.0.0.1:9000 -c E:\PHPEnv\php745nts\php.ini
  • 启动nginx,其中:
// 启动
nginx

// 软停止
nginx -s quit

这样在浏览器打开之前设置的网址,就可以直接看到 phpinfo 信息页面。

当然,一条一条的输入命令启动有些麻烦,可以使用 RunHiddenConsole.exe 进行配合,相关 .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 E:/PHPEnv/php745nts/php-cgi.exe -b 127.0.0.1:9000 -c E:/PHPEnv/php745nts/php.ini

echo Starting nginx...
RunHiddenConsole E:/PHPEnv/nginx1180/nginx.exe -p E:/PHPEnv/nginx1180



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

还可以设置为开机启动,这个可以去搜以下如何设置。

WNMP 环境的搭建就像我们平时安装软件一样,一个一个的安装并进行一些参数配置。首先是 MySQL 的安装,设置好参数直接初始化和安装就可以使用;然后是 PHP 的安装,也是修改配置文件开启相关扩展;最后的 Nginx 也只是把各个的网站配置信息单独提取出来到一个文件,这样更方便管理。

有问题欢迎在评论区留言,如果觉得有用,请点个赞~

你可能感兴趣的:(php)