自建 wnmp 运行环境

网盘下载:

链接: https://pan.baidu.com/s/1eR81ZCe 密码: zj68
解压后移动到 d:\wnmp 目录下,运行 service.bat(双击运行)。更多内容查看 readme.md

手动创建

环境:操作系统 win7,安装目录 d:\wnmp 。

nginx

1、下载 nginx,解压后改名到 d:\wnmp\nginx 目录下。
2、编辑 c:\wnmp\nginx\config\nginx.conf

解除以下行的注释:
#error_log  logs/error.log;
#pid        logs/nginx.pid;

在 http 块首添加以下行:
upstream php_processes {
    server 127.0.0.1:9000 weight=1;
}

在最后一个 server 块之后添加以下行:
server_names_hash_bucket_size 64; #server_name长度限制
server_names_hash_max_size 1024; #server_name条数限制
include ../../vhosts/*.conf;

php

1、下载 php,考虑到兼容性 和 运行模式,应该下载 x86 nts 版本。解压后改名到 d:\wnmp\php 目录下。
2、复制 d:\wnmp\php\php.ini-developmentd:\wnmp\php\php.ini,并编辑此文件:

生产环境请复制 php.ini-production

解除以下行的注释:
; extension_dir = "ext"
;cgi.fix_pathinfo=1
修改 cgi.fix_pathinfo 值
cgi.fix_pathinfo=0
其他配置根据需求自行配置

php-7.0-Win32 需要 VC14-x86 运行库。

mariadb

1、下载 mariadb,选择 win32.zip ,解压后改名到 d:\wnmp\mariadb 目录下。
2、可以安全删除以下目录和文件:bin\debugbin\*.pdbbin\*.plincludelibmysql-testsql-benchwsrep.ini
3、创建文件 d:\wnmp\mariadb\php.ini

[mysqld]
basedir=./
datadir=./data
port=3306
innodb_buffer_pool_size=255M
character-set-server=utf8
default-storage-engine=MyISAM
#支持 INNODB 引擎模式。修改为 default-storage-engine=INNODB 即可。
#如果 INNODB 模式如果不能启动,删除data目录下ib开头的日志文件重新启动。

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=512

query_cache_size=0
table_cache=256
tmp_table_size=18M

thread_cache_size=8
myisam_max_sort_file_size=64G
myisam_sort_buffer_size=35M
key_buffer_size=25M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K

innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M

innodb_buffer_pool_size=47M
innodb_log_file_size=24M
innodb_thread_concurrency=8


[client]
port=3306

4、默认账号 root,空密码。

安装服务

1、下载 nssm,这是用来将 nginx 和 php-cgi 安装到到 windows 服务中的包裹程序,解压后将 32位nssm.exe 移动到 d:\wnmp 目录下。
2、添加 d:\wnmp\service.bat 文件,添加以下代码:

@echo off

set root=d:\wnmp
set newPath=%path%;%root%\php;%root%\tools;%root%\tools\instantclient_12_2

:top

@clear
@cls

echo.
echo           ======== CONTROL PANEL ========
echo.
echo     SERVICE         NGINX+PHP          MARIADB
echo  -------------   ---------------   --------------
echo   i: install       1: start          4: start
echo   r: remove        2: stop           5: stop
echo   c: check         3: restart        6: restart
echo.
echo   -----------------------------------------------
echo    p: listening port  s: locale service  e: exit
echo.
echo.
echo Nginx Status:
nssm status wnmp_nginx
echo.
echo PHP-CGI Status:
nssm status wnmp_php
echo.
echo Mariadb Status:
nssm status wnmp_db
echo.
set /p choice=choose one: 

if "%choice%"=="i" (

    @clear
    @cls

    nssm install wnmp_nginx %root%\nginx\nginx.exe
    nssm set wnmp_nginx AppDirectory %root%\nginx
    nssm set wnmp_nginx DisplayName Wnmp Nginx
    nssm set wnmp_nginx Start SERVICE_AUTO_START
    echo.
    nssm install wnmp_php %root%\php\php-cgi.exe -b 127.0.0.1:9000
    nssm set wnmp_php AppDirectory %root%\php
    nssm set wnmp_php DisplayName Wnmp PHP-CGI
    nssm set wnmp_php Start SERVICE_AUTO_START
    echo.
    nssm install wnmp_db %root%\mariadb\bin\mysqld.exe
    nssm set wnmp_db AppDirectory %root%\mariadb
    nssm set wnmp_db DisplayName Wnmp MariaDB
    nssm set wnmp_db Start SERVICE_AUTO_START
    echo.
    rem 注意:除了win7以外的其他系统可能需要删除以下代码段 vvv
    echo %path%|findstr /i %root%\tools > nul
    if errorlevel 1 (
        echo Set environment path...
        setx /m path "%newPath%" > nul
        set path=%newPath%
        echo success.
    )
    rem 可能需要删除的代码段 ^^^

    timeout /t 5
    goto top

) else if "%choice%"=="r" (

    @clear
    @cls

    nssm remove wnmp_nginx confirm
    nssm remove wnmp_php confirm
    nssm remove wnmp_db confirm

    echo.
    timeout /t 5
    goto top

) else if "%choice%"=="c" (

    goto top

) else if "%choice%"=="1" (

    @clear
    @cls

    nssm start wnmp_php
    echo -------------------------------------------
    nssm start wnmp_nginx

    echo.
    timeout /t 5
    goto top

) else if "%choice%"=="2" (

    @clear
    @cls

    nssm stop wnmp_php
    echo -------------------------------------------
    nssm stop wnmp_nginx

    echo.
    timeout /t 5
    goto top

) else if "%choice%"=="3" (

    @clear
    @cls

    nssm restart wnmp_php
    echo -------------------------------------------
    nssm restart wnmp_nginx

    echo.
    timeout /t 5
    goto top

) else if "%choice%"=="4" (

    @clear
    @cls

    nssm start wnmp_db

    echo.
    timeout /t 5
    goto top

) else if "%choice%"=="5" (

    @clear
    @cls

    nssm stop wnmp_db

    echo.
    timeout /t 5
    goto top

) else if "%choice%"=="6" (

    @clear
    @cls

    nssm restart wnmp_db

    echo.
    timeout /t 5
    goto top

) else if "%choice%"=="p" (

    @clear
    @cls

    echo  netstat -ano ^| findstr "LISTENING"
    echo.
    netstat -ano | findstr "LISTENING"

    echo.
    pause
    goto top

) else if "%choice%"=="s" (

    start "" "services.msc"
    goto top

) else if "%choice%"=="e" (

    exit

) else (

    goto top

)

2、运行该文件(双击运行),按屏幕提示安装、启动服务。

整合 phpMyAdmin

1、下载 phpMyAdmin,解压后改名到 d:\wnmp\nginx\html\db 目录下。
2、编辑 d:\wnmp\nginx\conf\nginx.conf

在 80 端口的 server 块中,找到 “location /” 块,在 index 后面添加 “index.php”,
然后把以下代码添加到后面:

## Regular PHP processing.
location ~ \.php$ {
    try_files  $uri =404;
    fastcgi_pass   php_processes;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

3、重启服务,使用 localhost/db 访问。

创建虚拟目录

1、创建文件 d:\wnmp\vhosts\8080_demo.conf

server {
    listen 8080; # IPv4
    server_name localhost;

    access_log logs/8080_demo_access.log;
    error_log logs/8080_demo_error.log;

    root "D:\www\demo";
    index  index.php index.html index.htm;

    location / {

        ## rewrite
        try_files $uri $uri/ /index.php?$query_string;

        ## Regular PHP processing.
        location ~ \.php$ {
            try_files  $uri =404;
            fastcgi_pass   php_processes;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        ## Static files
        location ~* \.(?:css|gif|htc|ico|js|jpe?g|png|swf)$ {
            expires max;
            log_not_found off;
            ## No need to bleed constant updates. Send the all shebang in one
            ## fell swoop.
            tcp_nodelay off;
            ## Set the OS file cache.
            open_file_cache max=1000 inactive=120s;
            open_file_cache_valid 45s;
            open_file_cache_min_uses 2;
            open_file_cache_errors off;
        }

        ## Keep a tab on the 'big' static files.
        location ~* ^.+\.(?:ogg|pdf|pptx?)$ {
            expires 30d;
            ## No need to bleed constant updates. Send the all shebang in one
            ## fell swoop.
            tcp_nodelay off;
        }
    } # / location

}

2、创建 d:\www\demo\index.php

<?php phpinfo();

3、重启服务,即可访问 localhost:8080

配置 oracle 12 开发环境

1、下载 instant client(下载页Instant ClientInstant Client for Microsoft Windows (32-bit)Instant Client Package – Basic),解压后改名到 d:\wnmp\tools\instantclient_12_2
2、配置环境变量 PATH,添加新的目录:d:\wnmp\tools\instantclient_12_2,使用 ; 分隔每个目录。
3、配置 php.ini

解除以下行的注释:
;extension=php_oci8_12c.dll

4、重启服务。