DataWindowHTTP在linux环境的安装和测试
*此非必要文档,如果在window环境使用,则无需参考。对于linux os,apache,php安装熟悉的朋友,也无需参考此文档的安装部分,只需要参考配置部分即可。
*最后修改日期:2023.08.20
产品附件说明,请勿转载他用。
目录:
一.安装虚拟机
二.安装linux
三.安装apache2.4
四.安装php8.0
五.安装MySQL8.0
六.安装DataWindowHTTP组件的服务器端
七.对接DataWindowHTTP组件的客户端
为了测试的方便性,采用在虚拟中安装linux来测试。这样方便做测试和截图。本文档截图以vmware12.0.0测试版作为实验。
以客户实际生产环境选择linux。本组件的要求是:
① Apache2.4
② Php8.0
③ PHP能访问数据库的驱动。
本示例采用开源免费的centos7.0(CentOS-7-x86_64-DVD-1810.iso)作为测试。
注意事项:
1. 安装centos时,如果不熟悉全命令模式,需要选择GUI服务器。
选择GUI可以在图形界面搜索文件,用文本编辑器直接编辑文件,拷贝文件和文件夹等等。可以设置分辨率,网络等等。这都 不是初学者可以用全命令模式搞定的。
到这里时,点进去设置,选择:
但右边的选项我们不需要选择,不需要其他服务。
2. 登录时让我们输入一个名字,但是那个名字需要授权才能进行一些高权限操作。简单起见,用root登录GUI界面进行安装。
点“未列出?”输入root和密码。
3. 如果时钟锁屏了,你还未登录,请用鼠标点住时间画面并上滑,就显示出用户登录界面。单单用鼠标点击锁屏的时间画面,好像 是没法显示出登录界面的。
要避免锁屏的麻烦,可以取消锁屏:
4. 安装vmware tools工具。方便你复制粘贴,调整分辨率,共享文件夹等等。
单击菜单
linux桌面光驱图标变这样。
解压缩这个tar.gz执行里面的 ./vmware-install.pl 程序就行了。
如果光盘不出现VMware-tools字样,你可以桌面光驱图标,点右键弹出,再重新点菜单进行挂载。
5. 打开网络
默认安装后,网络是关闭的。你需要打开
并且点击属性图标,设置启动时自动打开网络。(上右图)
这两个服务要启动,否则显示网线已拔掉或者显示正在连接,却无法连接。
6. 共享文件夹
为方便测试,从window拷贝文件到linux。设置共享文件夹。
我们如果在这里新建了共享文件夹并确认后。
在linux主机的 /mnt/hgfs文件夹就会出现我们的window共享的文件夹(上右图)。就可以拷贝文件了
有时文件不出现,我们可以移除共享文件夹,再添加一次就行了。
或者,我们可以手工挂载,用命令挂载到linux系统,如:
mkdir /mnt/abc
vmhgfs-fuse .host:/shareddir /mnt/abc (shareddir为共享文件夹名称)
7. 如何打开文件夹,或者查找文件。
Linux桌面>主文件夹>打开,只是进入用户自己的主目录。而我们操作的东西一般从跟目录算起。
所以首先定位到:
只要输入文件名或者文件夹名,就能搜索出文件或文件夹。
8. 如何查到虚拟机系统的IP(用于外部网页访问测试和数据库连接)
命令1:ipconfig(和window一样的命令)
命令2:ip addr
红框内就是linux的IP。
9. 开防火墙的端口
默认防火墙都是不开端口的,外部无法访问80或者3306等端口。
firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --remove-port=端口号/tcp --permanent (关闭端口)
firewall-cmd --reload (重新加载生效)
10. 关闭和退出
经过测试,点击下图右上角的按钮关闭时,经常黑屏无法退出vmware。
尝试用命令:shutdown关机,却很正常,特此提示。
1. 命令:yum install httpd 安装过程中会问“is this ok [y/d/N]”,输入“y”回车即可。
2. 查询安装后的版本 httpd -v 正是我们需要的2.4版本。
3. 启动,重启,关闭命令
apachectl start (service httpd start 或 systemctl start httpd.service)
apachectl restart (service httpd restart 或 systemctl restart httpd.service)
apachectl stop (service httpd stop 或 systemctl stop httpd.service)
4. 开机自启动
默认开机得人工启动。可以在: /etc/rc.d/rc.local 文件中加入 apachectl start 命令行。并且设置rc.local以命令执行的权限。如下图:
上图已经将apache和MySQL都设置为开机自动启动。
5. 修改配置文件
/etc/httpd/conf/httpd.conf 用文本编辑器或者vi修改即可,主要修改项目:
5.1 修改端口(根据需要修改为80或者指定的端口):
Listen 80
5.2 网页文件夹(我们用默认不需要修改,在此仅列出)
DocumentRoot "/var/www/html"
6. 测试
可以在var/www/html中写一个静态网页。然后:
Wget localhost:80
已发出 HTTP 请求,正在等待回应... 200 OK (200 OK就正常)
也可以在window的浏览器中输入linux的IP:端口,用浏览器进行访问。
四.安装PHP8.0
PHP有很多经典版本,比如5.7,但我们使用的是8.0.
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install yum-utils
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-safe
yum -y install php80
yum install php80-php-{cli,fpm,mysqlnd,zip,devel,gd,mbstring,curl,xml,pear,bcmath,json}
1. 查看安装后的版本
php -v
显示:PHP 8.0.30 (cli) (built: Aug 3 2023 17:13:08) ( NTS gcc x86_64 )
2. 测试php
/var/www/html目录写一个index.php(内含phpinfo()函数即可),可在浏览器中测试。
3. 配置修改
本例子不需要修改php.conf文件。
4. 其他扩展,比如oci8的oracle驱动安装
请参考其他php+oracle安装的资料。此处例子为php+mysql。所以不再赘述。
下载rpm包:https://repo.mysql.com//mysql80-community-release-el7-7.noarch.rpm
rpm -ivh https://repo.mysql.com//mysql80-community-release-el7-7.noarch.rpm
yum info mysql-community-server
yum -y install mysql-community-server
1. 启动,重启mysql
systemctl start mysqld.service
systemctl restart mysqld.service
2. 查看安装的初始密码
grep "password" /var/log/mysqld.log 或者 cat /var/log/mysqld.log
显示:temporary password is generated for root@localhost: 6wzlpA&as.6d 最末的这串字符就是生成的密码。
3. 免密码登录
有时忘记密码,在my.cnf的[mysqld]下面添加:skip-grant-tables
然后: systemctl restart mysqld.service
mysql -u root 可免密码直接登录
4. 正常登录
mysql -u root -p
提示输入密码,就输入:6wzlpA&as.6d (根据你安装时的密码或者修改后的密码)
进入后,会提示mysql>这个符号。我们测试一下。
输入一个sql语句。记得以分号结束。敲回车它就执行了。
输入exit可以退出mysql命令。
5. 修改密码
操作之前就要你修改密码才能进行sql查询。
提示:You must reset your password using ALTER USER statement before executing this statement.
命令:ALTER USER 'root'@'localhost' IDENTIFIED BY ‘new password’; 注意@两边没空格。
提示:Your password does not satisfy the current policy requirements
原因:不符合密码策略,长度不够,或者不够复杂。长一点,数字,英文,符号一起用就行了。
6. Navicat的链接
7. 新建数据库以及导入数据库
上图左:手工新建三个数据库。
上图右:选择 datawindowhttp1.0-1.sql,datawindowhttp1.0-2.sql,datawindowhttp1.0-3.sql执行即可创建测试数据库
注意这三个sql语句中包含了表,表中的测试数据,存储过程,函数等。
如果执行sql时遇到错误提示:
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
在 /etc/my.cnf配置参数log_bin_trust_function_creators=1
8. Root授权所有的外部IP而不局限于localhost
连接时会报错如下:
通过命令修改root可以连接的主机:
select host from mysql.user where user='root'; (默认root只能localhost连接)
Update mysql.user set host = '%' where user ='root'; (改为不限制主机,或者按你要求修改)
注:生产环境我们一般是新创建其他用户,用于远程访问,并可授权到具体的IP。root仅供服务器登录以提高安全性。
9. Root无法连接数据库
连接数据库时报:Access denied for user 'root'@'localhost' (using password: YES)
修改Root的plugin密码方式: ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
10. 组件post连不到apache
提示:Datawindowhttp连接时,mysqli_connect()提示Permission denied或者of_posturl()尝试多次发送不成功! 请检查服务器网址和端口是否正确!
执行:setsebool -P httpd_can_network_connect 1
将服务器组件目录拷贝到linux系统,位置:
var/www/html/datawindowhttp/datawindowhttp1.0-1
var/www/html/datawindowhttp/datawindowhttp1.0-2
var/www/html/datawindowhttp/datawindowhttp1.0-3
根据安装的数据库不同,只需要具体的一个,比如当前的例子:
var/www/html/datawindowhttp/datawindowhttp1.0-1/mysql8.0
var/www/html/datawindowhttp/datawindowhttp1.0-2/mysql8.0
var/www/html/datawindowhttp/datawindowhttp1.0-3/mysql8.0
编辑 config.mysql.php中的链接参数,其他文件无需修改。
拷贝一份demo 源码放到桌面上。
1. 执行初始化某个数据库的代码。
它执行的其实就是:uf_init_interface("mysql8.0") 这个函数。
当只要有一个数据库时,这个函数也可以直接写到open事件中。
2. 修改IP地址,端口,pem安全文件。
3. 测试查询。
配置好后,直接运行。就可以调试查看了。