Nginx+MySQL+PHP

几年前流行 LAMP—— Linux + Apache + MySQL + PHP/Perl/Python ,这些年来 LNMP —— Linux + Nginx + MySQL/MongoDB+ Php/Perl/Python,则越来越受到关注。本文主要介绍在windows上nginx、mysql 和 php 环境的搭建。为什么在windows上呢?主要是用着比较方便,而是不像Linux不同发行版之间有不同的命令,有时候真的很麻烦。如果想了解 Apache + MySQL + PHP,可以看这里

这里介绍的是一个一个的安装和配置,如果嫌麻烦的话,那么,XAMPP或是XNMPP(?)—— 不用自己配置的集成安装包——应该是个不错的选择,但是缺点也是明显的,集成的包里面的软件往往不是最新版本。

安装 MySQL

这个简单,从官网上找到 MySQL 的 MySQL Community Server —— 社区服务器版本,找到自己对应的 win 版本,win32 或是 x86_64。下载下来解压缩就可以使用。

安装并配置 PHP

从官网下载 PHP 的最新版本,对于windows 下载 win32 vc9 thread safety —— 线程安全版本,解压缩,然后是配置。

PHP 的配置其实很简单,但是第一次配的时候赶脚很烦,是错觉?

  1. 拷贝 php.ini-development 文件,命名为 php.ini;这就是 php 的默认配置文件;
  2. 在 php.ini 中,找到 extension_dir="" 一行,基本修改为:
    extension_dir="D:\php\php\ext"    # 这是 PHP 的扩展对应的目录,当然,D:\php\php ,这是 e 的 PHP 目录;
    
  3. 最后一步就是去掉一些注释,也就是开启 PHP 的一些扩展,可以如下:
    extension=msql.dll
    extension=php_mbstring.dll
    extension=php_gd2.dll
    extension=php_mysql.dll          # MySQL 
    extension=php_mysqli.dll         # MySQL
    extension=php_mongo.dll         # MongoDB
    extension=php_openssl.dll        # OpenSSL
    

安装并配置 Nginx

关于 Nginx 的基本安装和配置,可以参看 http://ilovers.sinaapp.com/drupal/node/17,不过,这里其实可以不看,直接去官网下载最新的 Nginx 版本,解压缩就可使用。

双击运行 Nginx,可以运行 Nginx html 目录下的 html 文件 —— 这是默认配置,如果想支持 php 有两步:

  1. nginx 本身并没有 php 解释器,所以,需要借助于 php 提供的 fastcgi,所以,需要运行 php 的 php-cgi 进程;
    php-cgi -b 127.0.0.1:9000       # cmd 中运行 php-cgi,监听本地地址,9000端口;
    
  2. 配置 nginx,将 php 请求发送给 php-cgi;在 nginx.conf 中找到指定位置并修改:
    location ~ \.php$ {
        root html;                           # php 文件根目录,比如 D:\project\php;这个随意;
        fastcgi_index index.php;           # 默认 index.php,可以也很好理解;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;    # 这一行是需要修改的 !!
        fastcgi_pass   127.0.0.1:9000;      # 将 php 请求发送给 本地 9000 端口,就是 php-cgi 监听的地方; 
    }
    

配置完成之后,e 们需要跑 php ,需要做那些呢?启动 nginx 、 启动 php-cgi、启动 mysql 服务器,一行一行敲命令未免过于繁琐 —— 当然,最初,e 就是一行一行敲的;当 需要重启的时候,会发现跟麻烦!后来发现其实可以做成 bat,双击一下就好了。下面是两个 e 的 bat,一个启动 startup 的,一个关闭 endup 的,不同的应该只是路径不同而已:

startup.bat

@echo off
:cd D:

cd D:\mysql\mysql\bin
start mysqld --console
start mysql -u root -p

cd D:\php\php
start php-cgi -b 127.0.0.1:9000

echo "mysql and php-cgi have started, now start nginx"

cd D:\nginx\nginx
nginx

endup.bat

taskkill  /f /t /im nginx.exe

taskkill  /f /t /im php-cgi.exe

taskkill  /f /t /im mysql.exe

taskkill  /f /t /im mysqld.exe

pause

至此,Nginx + PHP+ MySQL 基本算是 ok 勒。环境的搭建,只是第一步而已,很多时候因为第一步没有走顺利而放弃某些东西的学习,是很常见的。因为本篇文章是事后很久写的,也许里面某些地方还存在着问题,欢迎提出。

Tags: 

Article type: 

Comments

沙发,