I'm Sham
一个在通往码农道路上走走停停的行政文员

Windows安装Nginx+PHP+MySQL+phpMyAdmin(无需管理员)

最近Sham闲着无事,就想着用公司电脑搭个临时服务器,用于测试什么的,但是问题是公司电脑是没有管理员权限的,无法安装像宝塔面板、PHPStudy啊什么的,于是想着如果一个个手动安装,如果有绿色包,那不就行了?

搜索了一圈 ,终于实现了需求,下面就来完整介绍下,以下都是在无需(没有)管理员权限的前提下操作的3

首先是下载各个软件的安装包、绿色包

Nginx官网下载:http://nginx.org/en/download.html

PHP官网下载:https://windows.php.net/download

MySQL官网下载:https://dev.mysql.com/downloads/installer/

phpMyAdmin官网下载:https://www.phpmyadmin.net/

Sham公司电脑是Win10的,所以下载的都是windows版,其中PHP我下载的是7.3的,因为发现8.0的因为有些变化,导致Sham原来的php代码会报错,其他的随意,Sham都选的最新版

下载完成后,就是解压、解压、解压,没错,解压就行了,然后就能用了,下面是各个软件启用介绍

首先来Nginx

找到conf/nginx.conf,打开编辑(可以考虑先备份一份,防止改残了)

#找到listen 80,将它替换成你自己想要的端口,因为Sham的80端口被占用了,所以改了,比如
listen 1080
#然后因为PHP是用CGI的方式来使用的,所以这个里面还要有如下代码(本来就有,因为使用时发现一些问题,所以按网上的方式改了下)
#下面的D:/shamweb/nginx/html是指网站更目录地址,这个文件里几个root,如果默认不好使的话,可以也改成你自己的根目录地址
#其中127.0.0.1:9000这个,需要和后面php运行时设置的一致
location ~ \.php$ {
        root           D:/shamweb/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
	set $real_script_name $fastcgi_script_name;
	if ($real_script_name ~ "^(.+?\.php)(/.+)$") {
	    set $real_script_name $1;
	}
	fastcgi_split_path_info ^(.+?\.php)(/.*)$;
	fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param  SCRIPT_FILENAME  D:/shamweb/nginx/html$fastcgi_script_name;
        include        fastcgi_params;
 }

#下面这段是为了支持phpMyAdmin的,这里直接放上,端口号随意,这个是后面访问phpMyAdmin用的
server {
	listen 1090;
	server_name localhost;
	access_log D:/shamweb/phpmyadmin-access.log;

	location / {
		root D:/shamweb/phpMyAdmin;
		index index.php;
	}

	location ~ \.php$ {
		root D:/shamweb/phpMyAdmin;
		fastcgi_pass   127.0.0.1:9000;
		fastcgi_index  index.php;
		set $real_script_name $fastcgi_script_name;
		if ($real_script_name ~ "^(.+?\.php)(/.+)$") {
			set $real_script_name $1;
		}
		fastcgi_split_path_info ^(.+?\.php)(/.*)$;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		fastcgi_param  SCRIPT_FILENAME  D:/shamweb/phpMyAdmin$fastcgi_script_name;
		include        fastcgi_params;
	}

	location ~ /\.ht {
		deny all;
	}
}

然后保存,这时你运行nginx.exe,然后访问http://127.0.0.1:1080,就发现能看到nginx安装成功的页面啦;

然后是安装PHP

找到php.ini-development,复制一份,并更名为php.ini

打开编辑,修改如下

#将如下3行代码前面的“#”号去掉,去掉注释使他生效
extension_dir = "./"
On windows:
extension_dir = "ext"

#然后因为要用到一些功能,可以提前将如下代码前的#去掉,主要是让它支持mysqli语句,能使用phpMyAdmin
extension=mysqli
extension=openssl
#如果还有用到其他的,请自行选择(可以后面碰到问题的时候再来打开)

然后需要运行php,需要在CMD中运行如下代码,这里的9000就是上面nginx里设置的一致的

D:/shamweb/php7.3/php-cgi.exe -b 127.0.0.1:9000 -c D:/shamweb/php7.3/php.ini

下面是安装Mysql

在bin目录下,新建一个my.ini,里面代码参考如下:

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:/shamweb/mysql8
# 设置mysql数据库的数据的存放目录
datadir=D:/shamweb/mysql8/data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#skip-grant-tables
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

然后进入cmd运行

#首先需要cd 到mysql8/bin,如果默认在C盘的话
D:
cd D:/shamweb/mysql8/bin

#下面这个是用来初始化安装的
mysqld --initialize

#下面这个是用来启动MySQL的
mysqld --console

这里有一点,因为不知道初始密码(如果是安装包的话,安装过程可以看到密码),所以要先让他能无密码访问

打开 my.ini 把 #skip-grant-tables 的 # 去掉,重启服务

然后输入:

mysql -uroot -p
#这样可以无秘进入mysql,可以看到mysql>,然后修改密码
#下面这个是老版的
update mysql.user SET password=password(‘写你的新密码’) where user=‘root’;
#下面这个是MySQL 8.x版的,应该是的, 上面那个不管用时可以用下面这个
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'

改好密码之后,再回去把skip-grant-tables前面呢#号加上

然后再重启服务,这样基本MySQL就完成了

最后就是安装phpMyAdmin来管理MySQL

找到libraries/config.default.php,打开并编辑

#找到$cfg['Servers'][$i]['user'] ,将=号后面的值设成(默认是root)
$cfg['Servers'][$i]['user'] = 'root';

#找到$cfg['Servers'][$i]['password'],将=号后面的值设成你上面修改的密码
$cfg['Servers'][$i]['password'] = 'xxx';

#找到$cfg['PmaAbsoluteUri'],将=号后面的值设成服务器网址,本机就默认就行
$cfg['PmaAbsoluteUri'] = '127.0.0.1';

#如果只是本地测试的话,将$cfg['Servers'][$i]['auth_type'] = 'cookie';中的cookie改为config
$cfg['Servers'][$i]['auth_type'] = 'config';

至此,就完成了服务器基础套件的安装啦;

当然,问了方便,可以通过做成一个bat文件来1键执行,这里需要用到RunHiddenConsole工具,具体大家可以百度搜索下

start_nginx_php_mysql.bat

@echo off
set php_home=./php7.3
set nginx_home=./nginx
set mysql_home=./mysql8/bin

REM Windows 下无效
REM set PHP_FCGI_CHILDREN=5

REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
set PHP_FCGI_MAX_REQUESTS=1000

echo Starting PHP FastCGI...
RunHiddenConsole %php_home%/php-cgi.exe -b 127.0.0.1:9000 -c %php_home%/php.ini
 
echo Starting nginx...
RunHiddenConsole %nginx_home%/nginx.exe -p %nginx_home%

echo Starting MySQL...
RunHiddenConsole %mysql_home%/mysqld --console

然后是关闭的(不用的时候一定要关闭,不然一直留在内存中运行)

stop_nginx_php_mysql.bat

@echo off
echo Stopping nginx...  
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
echo Stopping MySQL...
taskkill /F /IM mysqld.exe > nul
exit

完事儿,因为是在久经多次失败后才完成的,中间不确定是否有遗漏,大家可以先不用bat,一个个用cmd来执行,这样能看到报错信息,再搜索对应解决方法,一步步实现吧

赞(1) 赏杯咖啡!
未经允许不得转载:Sham@双目瞿 » Windows安装Nginx+PHP+MySQL+phpMyAdmin(无需管理员)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

如果你觉得文章好,请赏1杯速溶咖啡给Sham吧!

微信扫一扫打赏