赞
踩
目录
- (1)LAMPP:Linux + Apache + MySQL + PHP + Python
- (2)LNMP:Linux + Nginx + MySQL + PHP(Python)
- (3)Java:Linux + JDK + Tomcat + MySQL
- (4)其他: DB:MySQL、MangoDB、Redis, 服务器:Apache、Nginx、Tomcat、JBoss、Weblogic、Webshpere、IIS
Xampp是集合了LAMPP的完整的运行环境,相对来说比较适合于开发环境和调试环境,但相对来说,安全性配置不足。 PHPStudy、Wampp,基于Xampp讲解,然后在Xampp上部署其他应用、在PHPStudy上部署类似环境。 编程语言分为:编译型(将源代码编译为二进制,再执行二进制)、解释型(解释器直接执行源代码,效率偏低)。
1、部署基本环境
(1)Xampp默认启动后,Apache使用端口80,所以首先需要让防火墙放行80端口,且不允许关闭防火墙。
(2)http://192.168.112.188/dashboard/phpinfo.php 展示了所有运行环境参数,通常情况下,建议删除该页面。
(3)默认情况下, /opt/lampp/htdocs 目录是应用程序的根目录 (Document Root)/dashboard/phpinfo.php
(4)在/opt/lampp/htdocs目录下,创建二级目录 xindai,用于部署 小额信贷系统,并复制相应文件到该目录
(5)在MySQL的客户端环境中,导入 该系统的配套数据库:数据库名称叫什么?有什么要求?编码格式是什么?
(6)修改配置文件,进行数据库连接,进而实现系统和数据库的融合运行。
在Xampp 7.3的版本上,安装配置 小额信贷系统,运行后出现如下错误:
以上错误是由于小额信贷无法兼容 Xampp的较新的版本,该版本是PHP7.3的版本,导致代码不兼容。
任何一套应用系统,与服务器环境进行整合时,必须要考虑其兼容性。
通常情况下,实验环境是比较乱的,各种应用可能都存在,但是在生产环境中,建议一个服务器做一件事情,装一个系统。
(1)确认服务器端口和服务是否正常启动,某些情况下,可能由于端口冲突或与操作系统或服务器环境不兼容,导致无法正常启动。
如果要修改端口号,则修改:/opt/lampp/etc/httpd.conf, 查找 :Listen 80, 修改为其他端口号。
如果出现与Linux内核版本不兼容的问题,则修改 /opt/lampp/lampp,将内核版本修改为 2.8.0及以上。
export LD_ASSUME_KERNEL=2.8.0
(2)启动 Lampp 服务器:
- /opt/lampp/lampp start
- /opt/lampp/lampp stop/restart
- /opt/lampp/lampp startmysql
- /opt/lampp/lampp startapache
(1)解压 小额信贷 到 DocumentRoot 所在目录,此处为:/opt/lampp/htdocs,DocumentRoot所指向的目录在 httpd.conf中查看或修改。
DocumentRoot "/opt/lampp/htdocs"
(2)安装unzip应用,用于解压ZIP文件: yum install unzip -y,并复制文件到 DocumentRoot中
- unzip 小额借贷系统.zip -d ./
- cd 小额借贷系统cp -r WWW新版/
- /opt/lampp/htdocs/xindai
(3)此时,直接访问 :http://192.168.112.188/xindai/,如果不需要数据库支持、或者不需要特定权限,原则上是可以正常访问的.
(1)配置MySQL数据库:
- 第一件事:修改 root 默认密码: 参考本教材第三节:三、PHPMyAdmin。
- 第二件事:配置可远程操作MySQL:要么配置 PHPMyAdmin 实现访问和操作 MySQL,要么在MySQL中新建一个支持远程登录的用户,于Navicat进行远程操作
(2)创建xindai数据库:
如果出现上述错误,主要原因是“max_allowed_packet”设置过小,导致无法执行太大的SQL语句。修改:/opt/lampp/etc/my.cnf,将max_allowed_packet 设置更大,然后重启,再执行上述SQL用于创建数据库。
(8)修改 信贷系统 的数据库连接信息,确保PHP和MySQL互相通信正常。修改:/opt/lampp/htdocs/xindai/App/Conf/config.db.php
- <?php
- return array(
- 'DB_TYPE' => 'mysql', // 数据库类型
- 'DB_HOST' => 'localhost', // 服务器地址
- 'DB_NAME' => 'xindai', // 数据库名
- 'DB_USER' => 'root', // 用户名
- 'DB_PWD' => '123456', // 密码
- 'DB_PORT' => 3306, // 端口
- 'DB_PREFIX' => '', // 数据库表前缀
- 'cfg_adminkey' => '26XBAmVMs+n_',
- );
(9)重启,访问:http://192.168.112.188/xindai/,结果:
(10)修改 /opt/lampp/htdocs/xindai/Temp 目录,授权可写:chmod -R 777,再次访问:
(11)登录后台:http://192.168.112.188/xindai/admin.php 账号:admin 密码:zye.cc888
其他注意事项
(1)任何一个URL地址,一定要指定到具体的文件才可以访问,如果没有指定,则会访问默认文件:默认首页。在httpd.conf文件中:
- <IfModule dir_module>
- #DirectoryIndex index.html
- # XAMPP
- DirectoryIndex index.html index.html.var index.php index.php3 index.php4 main.php
- </IfModule>
(2)默认情况下,任何一个目录,如果只输入目录名而不输入文件名去访问,该目录必须要有一个默认主文件,比如 index.html, index.php, index.jsp 或 default.php main.php等,否则将无法访问到该页面。如果目录权限配置不成功,则可能出现目录浏览页面:
(3)修改配置文件:httpd.conf,设置 Options None,取消目录浏览权限
- <Directory "/opt/lampp/htdocs">
- #Options Indexes FollowSymLinks
- # XAMPP
- #Options Indexes FollowSymLinks ExecCGI Includes
- #配置针对当前根目录,没有任何浏览的权限
- Options None
- ……
最终正常的效果:
PHPMyAdmin是一个网页版本的MySQL管理端,可以完成跟Navicat几乎类似的功能:建库、建表、建对象、备份、执行SQL等。但是为了安全,默认情况下,是禁止远程访问,
请查阅资料,配置PHPMyAdmin可以远程访问。
修改:/opt/lampp/phpmyadmin/
在MySQL中创建远程连接用户,并同步设置密码:
- 先切换到可执行目录:cd /opt/lampp/bin
- 再运行 ./mysql -u root 进入 MySQL命令行执行以下两条指令:
- GRANT ALL PRIVILEGES ON *.* TO 'qiang'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
- flush privileges;
- 再利用Navicat等其他工具远程连接,确认远程连接开通
- 也可以通过MySQL命令行进入,然后
- use mysql;
- select User,Password,Host from user;
- 查看数据库用户信息来确认新用户信息
针对已经存在的用户,可以使用以下几种方式修改密码:
(1)直接在Navicat中通过UI界面来修改密码,在如下界面:
(2)在MySQL命令行中执行以下指令:
- set password for 用户名@localhost = password('新密码');
- 例如:
- set password for root@localhost = password('123456');
(3)使用mysqladmin命令:
- 语法:mysqladmin -u用户名 -p旧密码 password 新密码
- cd /opt/lampp/bin
- ./mysqladmin -uroot -p123456 password 654321
(4)直接修改mysql数据库的user表:
- 首先登录MySQL。
- mysql> use mysql;
- mysql> update user set password=password('123456') where user='root' and host='localhost';
- mysql> flush privileges;
指定Web服务器的主目录,那么如果不配置虚拟目录的情况下,所有的Web应用都应该放置于本目录下。
- DocumentRoot "/opt/lampp/htdocs/"
- <Directory "/opt/lampp/htdocs/">
- …………
- </Directory>
如果让 DocumentRoot “/opt/lampp/htdocs/xindai”,则访问时直接访问 http://192.168.112.188/ 就可以访问到信贷系统
即使Web应用没有放置于DocumentRoot下,只要通过配置虚拟目录,也可以实现访问,比如PHPMyAdmin应用程序就没有放到DocumentRoot下,也能实现访问,那是因为系统为它配置了虚拟目录,其配置文件在 /opt/lampp/etc/extra/http-xampp.conf中。
- Alias /phpmyadmin "/opt/lampp/phpmyadmin"
- # since XAMPP 1.4.3
- <Directory "/opt/lampp/phpmyadmin">
- AllowOverride AuthConfig Limit
- Require all granted
- ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
- </Directory>
上述虚拟目录配置文件,必须要在 httpd.conf 中进行引用:Include etc/extra/httpd-xampp.conf
通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。这就是AllowOverride的作用。
(1)AuthConfig:允许使用所有的权限指令,他们包括AuthDBMGroupFile AuthDBMUserFile AuthGroupFile AuthName AuthTypeAuthUserFile和Require
(2)FileInfo:允许使用文件控制类型的指令。它们包括AddEncoding AddLanguage AddType DEfaultType ErrorDocument LanguagePriority
(3)Indexes:允许使用目录控制类型的指令。它们包括AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon DirectoryIndex FancyIndexing HeaderName IndexIgnore IndexOptions ReadmeName
(4)Limit:允许使用权限控制指令。它们包括Allow Deny和Order
Options指令是Apache配置文件中一个比较常见也比较重要的指令,Options指令可以在Apache服务器核心配置(server config)、虚拟主机配置(virtual host)、特定目录配置(directory)以及.htaccess文件中使用。Options指令的主要作用是控制特定目录将启用哪些服务器特性。
Options指令的完整语法为:Options [+|-]option [[+|-]option] ...
。简而言之,Options指令后可以附加指定多种服务器特性,特性选项之间以空格分隔。
(1)All 准许以下除MultiViews以外所有功能
(2)MultiViews 允许多重内容被浏览,如果你的目录下有一个叫做foo.txt的文件,那么你可以通过/foo来访问到它,这对于一个多语言内容的站点比较有用
(3)Indexes 若该目录下无index文件,则准许显示该目录下的文件以供选择
(4)IncludesNOEXEC 准许SSI,但不可使用#exec和#include功能
(5)Includes 准许SSI
(6)FollowSymLinks 在该目录中,服务器将跟踪符号链接。注意,即使服务器跟踪符号链接,它也不会改变用来匹配不同区域的路径名,如果在;标记内设置,该选项会被忽略
(7)SymLinksIfOwnerMatch 在该目录中仅仅跟踪本站点内的链接
(8)ExecCGI 在该目录下准许使用CGI
Apache2.4中开始使用mod_authz_host这个新的模块来进行访问控制和其他的授权检查。原来在Apache2.2版本下用以实现网站访问控制的Order,Allow,Deny指令需要替换为新的Require访问控制指令。
- 允许所有:Require all granted
- 拒绝所有:Require all denied
- 只允许特定域名主机的访问请求:Require host google.com
- 允许匹配环境变量中任意一个:Require env env-var [env-var] ...
- 允许特定的HTTP方法(GET/POST/HEAD/OPTIONS):Require method http-method [http-method] ...
- 允许,表达式为true:Require expr expression
- 允许特定用户:Require user userid [ userid ] ...
- 允许特定用户组:Require group group-name [group-name] ...
- 允许,有效用户:Require valid-user
- 允许特定IP或IP段,多个IP或IP段间使用空格分隔:Require ip 192.100 192.168.100 192.168.100.5
以下示例:允许所有访问请求,但拒绝来自特定IP或IP段的访问请求(阻止恶意IP或恶意爬虫网段的访问)
- <Directory xxx/www/yoursite>
- <RequireAll>
- Require all granted
- Require not ip 192.168.1.1
- Require not ip 192.120 192.168.100
- </RequireAll>
- </Directory>
从网络角度来说,距离网络入口(边界)越近,所防御的范围越广,同样,要考虑的通用性越强。
https://www.cnblogs.com/nul1/p/8835264.html
6、配置好 Xampp 允许远程访问后,由于MySQL修改了密码,所以导致PHPMyAdmin出现错误:
修改: /opt/lampp/phpmyadmin/config.inc.php 文件,然后重启
- /* Authentication type */
- $cfg['Servers'][$i]['auth_type'] = 'config';
- $cfg['Servers'][$i]['user'] = 'root';
- $cfg['Servers'][$i]['password'] = '123456';
- /* Server parameters */
- //$cfg['Servers'][$i]['host'] = 'localhost';
- $cfg['Servers'][$i]['compress'] = false;
- $cfg['Servers'][$i]['AllowNoPassword'] = true;
此时,可以远程访问:http://192.168.112.188/phpmyadmin/,进而实现对MySQL的操作。
但是,用户不需要输入任何密码,直接可以访问,毫无安全可言,解决方案如下:
(1)为PHPMyAdmin设置访问密码
(2)禁用PHPMyAdmin,在httpd.conf中,注释掉 httpd-xampp.conf 的包含文件,并删除 phpmyadmin 目录
(3)管理数据库,使用数据库,为什么必须要在同一个应用或者同一个Apache里面呢?
(4)使用 knock 进行端口隐藏,并且只在需要的时候短暂打开端口,用完就关闭。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。