王跃进 舒大荣
(1.贵州省铜仁第一中学,贵州铜仁 554300;2.贵州省德江第一中学,贵州铜仁 554300)
Nginx是一个高性能的WEB服务器。Nginx以免费开源协议的形式发布,在应用过程中,其凭借良好的稳定性、反向代理与负载均衡功能和低系统资源的消耗而受到了业界的高度认可。PHP即“超文本预处理器”,是一种通用开源脚本语言。MySQL是最流行的关系型数据库管理系统之一。事实上,基于Nginx+PHP+MySQL技术开发的国内网站很多,如百度、京东、腾讯、淘宝等。
由于是绿色软件,无须安装,在Nginx官网下载压缩包后展开即可用,无须安装。可以在任意盘新建一个目录如e:myapp ginx,将展开的所有文件拷贝到nginx目录里。
简单介绍下几个nginx使用命令,在Nginx目录下DOS命令行方式执行:
启动nginx:start nginx
修改配置conf ginx.conf后重新加载生效:nginx -s reload
检查conf ginx.conf配置是否有错误:nginx -t
重新打开日志文件:nginx -s reopen
快速停止nginx:nginx -s stop
完整有序的停止ngin:nginx -s quit
启动nginx后,打开浏览器,在地址栏输入localhost或127.0.0.1,看到“Welcome tonginx!”的默认页面就代表安装成功了(后面再介绍修改配置nginx.conf以符合应用需求)。
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。它利于学习,使用广泛,主要适用于Web开发领域。
选择自己需要的版本以及电脑操作系统是64位还是32位的,Nginx需要选择非线程安全版本(作者下载的是VC15 X64 Non Thread Sase)。
建立PHP目录,把我们下载的php压缩包解压到php里面。
用文本编辑器打开PHP/php.ini
指定php的ext路径,把里面的路径改为我们安装php文件夹中的ext目录,比如:
extension_dir = "E:myappphpext"
启动php服务:以管理员身份通过cmd进入DOS命令行,进入“E:myappphp”目录,检测下面两个可执行文件是否可以运行,如果不能运行,比如出现操作系统缺少dll之类,根据错误提示信息解决,直到能正常运行:
php-cgi -h
php -v
作为软件应用前的重要准备工作,数据库的初始化安全对于软件的合理运行具有至关重要的作用。研究人员指出,该步骤一定要认真按步骤进行,注意地址、初始化密码等信息正确,否则往往会导致后续工作压力的大幅升高,从而对软件的合理运行造成影响。
在本次研究中,根据系统选择下载不同版本,本文下载Windows 64位8.0.19版。将zip压缩包mysql-8.0.19-winx64.zip文件解压放在想放的位置,比如d:myappmysql下,注意现在的版本没有my.ini文件了,需要自建。
鼠标右击计算机,通过属性、高级系统设置、环境变量,将MySQL的bin位置(如d:myappmysqlin)添加到变量Path中,重新启动计算机生效,以后可以在任何目录用命令启动或关闭MySQL。
以管理员身份进入DOS命令行运行初始化命令:mysqld--initialize--console
完成后注意记录下root@localhost密码(如:+N9jfmlfl->),密码是随机生成的,每次初始化都不一样,在后面修改密码时要用。
安装MySQL服务,使用命令:mysqld--install
上面安装服务成功后,就可以启动服务:net start mysql
正常启动会显示启动成功信息。
假如在安装时出现提示:“The service already exists!”这是由于之前已经安装过mysql并且没有删除干净,可以用输入sc query mysql,查看一下名为mysql的服务:
sc query mysql
用命令sc delete mysql,卸载(删除)mysql服务,然后再安装:
若在启动过程中,提示:“发生系统错误2。系统找不到指定的文件。”这是因为MySQL的路径没有指定,解决办法是,先将MySQL卸载,输入命令mysqld remove,切换到MySQL的目录,如d:myappmysql,然后再执行安装mysqld--install,成功后,再net start mysql,这时候一般应该正常启动了。如果依然不行,那就可能操作系统中注册表里HKEY_LOCAL_MACHANE中还有MySQL错误或老版本的MySQL残留信息,搜索删除并重启计算机,重新(删除data目录及其文件)初始化安装(mysqld--initialize--console)。
成功安装后,默认以后随着服务器自动启动,无需手工在启动。
先关闭MySQL服务:net stop mysql
用文本编辑器新建配置文件my.ini,保存在mysql目录,文件内容如下[1]:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:myappmysqlin
# 设置mysql数据库的数据的存放目录
datadir=D:myappmysqlData
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
启动MySQL输入初始化密码登陆MySQL:
net start mysql
mysql -u root -p
输入刚才保存的密码,如:80Z#qtg6iNui
传统修改root密码的sql语句:
set password for root@localhost=password('root');
但是MySQL8.0无效了。经研究发现,“mysql5.7.9之后,就没有了password函数,所以,使用传统的password()函数修改root密码的话,就会提示sql错误”。所以,MySQL8.0修改密码的正确方式应该是,在mysql环境下(“mysql>”提示符)使用命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
注意密码一定要6位数以上,最后的分号不能少。
使用新密码登陆:
mysql -u root -p
Enter password:******
退出MySQL:exit
重启一下数据库:net start mysql
停止数据库:net stop mysql
用文本编辑器修改配置文件nginx.conf,找到如下两处进行修改[2],修改内容如下:
location / {
root e:myappwww;
index index.php;
}
location ~ .php$ {
root e:myappwww;
……
}
1.2
不同版本有所不同,这里是按最新版php7.4.4进行配置说明),用文本编辑器打开php.ini。
查找定位修改:
;extension_dir = "ext",修改为:extension_dir="E:/myapp/php/ext"
;extension=gd2,删除前面的分号,PHP操作图形图像的函数库
;cgi.force_redirect=1,删除前面的分号,CGI二进制文件是在启用force CGI redirect的情况下编译
[MySQLi]、[Pdo_mysql]段按下载的默认设置(MySQL都是开启的)不需要修改。
启动php-cgi服务,进入命令提示符界面,进入php目录,使用命令:
php-cgi.exe -b 127.0.0.1:9000 -c php.ini
使用命令,netstat-a,回车显示进程包含信息:
TCP 127.0.0.1:9000 xxxxx:0 LISTENING
说明php-cgi启动成功。
关闭nginx服务的命令:taskkill/F/IM nginx.exe>nul
关闭 php服务的命令:taskkill/F/IM php-cgi.exe>nul
编辑一个测试页面文件test.php,存放在WWW目录里,文件内容如下:
$mysqli = new mysqli("localhost","root","密码");
if(!$mysqli){
echo "你的数据库连接失败,请检查配置!!";
}else{
echo "你的数据库连接成功!!";
}
$mysqli ->close();
?>
打开浏览器,在浏览器地址栏内键入:http://127.0.0.1/test.php,如看到界面显示“数据库连接成功”,说明Nginx+PHP+MySQL环境基本设置成功。
要自己建设一个应用网站,需要根据我们的需求,选择好Web服务器、编程语言和数据库,搭建好服务器环境,才能开发应用,否则后患无穷。
本文之所以选择Nginx+PHP+MySQL开源软件(Open Source Software,简称为OSS)技术。主要原因为:(1)开源软件更安全,一般来说程序漏洞一旦发现,立刻就会更新;(2)可定制和更灵活,因为源代码在手里,易于二次创意、开发,不用担心被闭源软件供应商绑架;(3)透明度高和利于评估,开源软件比闭源软件更加符合开放的标准。对于闭源的软件,除了供应商告知技术参数、安全标准,用户无从知晓。
基于PHP+MYSQL技术开发应用,其特点是,WEB服务器常用Apache或Nginx。它们可以运行在几乎所有计算机平台上,是最流行的WEB服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。而Nginx(俄罗斯人伊戈尔·赛索耶夫开发的)WEB服务器,以其处理网络请求的高并发、高性能及高效率,获得了行业界的广泛认可,近年已稳居WEB服务器部署排名前茅,并被广泛用于反向代理和负载均衡。
考虑到跨平台、低成本、兼容性、开源免费等因素,我们工作室采用基于Nginx+PHP+MySQL组合技术进行开发设计的通用数字化证件管理系统(http://trcert.tryz.net/),通过各单位一年多的试运行,性能与安全性受到用户的一致好评。