lamp相关问题

1、mysql、mysqld、phpMyAdmin各配置文件和运行机制不太清晰

在centos6上编译安装lamp,使用phpmyadmin连接数据库
提示错误,无法连接到/tmp/mysql.sock,但mysql客户端连接
正常;
修改/etc/my.cnf文件中socket文件位置为/tmp/mysql.sock后
连接正常;但mysql(yum安装)连接不上,提示无法连接
到/var/lib/mysql/mysql.sock;而编译安装目录下的bin/mysql
可以连接上
?phpmyadmin和mysql客户端连接服务器时指定的sock不同
导致的一个能上一个不能上吗?怎么修改他们

2、在centos6上编译安装lamp(php-fpm),订阅rss和评论rss
无法打开(有关feed的问题)
3、lamp(php-fpm模式)定义alias时,动态资源无法访问:

使用php-fpm模式时、当访问.php文件时,文件的查找过程:
	1、设定访问URL为localhost/wordpres;站点目录为/usr/local/httpd/htdocs
	2、web服务器端收到请求:
		查询客户端对/usr/loca/httpd/htdocs/wordpress的访问权限;
		查询访问目录下默认访问文件,类似*.html等静态资源则返回内容;
		类似*.php等动态资源则通过fcgi接口传递给后端;
	3、php后端服务器如何查找动态资源路径:
		以ProxyPassMatch指令为例,设httpd配置文件中有如下片段:
			ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/httpd/htdocs/$1
		则此时php服务器查找的动态文件路径为:
			/usr/local/httpd/htdocs/wordpress/$1
	4、当设定别名:alias ‘/wp’ ‘/usr/local/httpd/htdocs/wordpress’时
		依3中的ProxyPassMatch指令,php服务器查找的动态文件路径为:
			/usr/local/httpd/htdocs/wp/$1
		而当你的httpd的站点目录下仅有wordpress目录,而没有wp目录时,访问失败
		此时:
			1、创建wordpress目录的软链‘wp’;
			2、在3中的指令之上添加ProxyPassMatch指令:
				ProxyPassMatch ^/wp/(.*\.php)$ fcgi:127.0.0.1:9000/usr/local/httpd/htdo
				cs/wordpress/$1
	5、当设定别名:alias ‘/wordpress’ ‘/www/wordpress’ ;即假定wordpress站点
		文件目录在httpd的站点目录/usr/local/httpd/htdocs之外时;
		依3中的ProxyPassMatch指令,php服务器查找的动态文件路径为:
			/usr/local/httpd/htdocs/wordpress/$1
		此时访问失败,提示文件不存在:
			1、创建wordpress站点文件目录的软链到/usr/local/httpd/htdocs目录下:
				#ln -sv /www/wordpress /usr/local/httpd/htdocs/wordpress
			2、修改添加ProxyPassMatch指令(匹配范围小的指令在上)
				ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/$1
总结:
	当php-fpm模式时,alias指令会造成php服务器动态资源查找路径错误;
	此时:
		1、对别名对应的文件系统路径创建位于httpd站点目录下的以别名基名为
			名称的软链,如
				alias指令:
					alias ‘/wordpress’ ‘/www/html/wordpress’
					alias '/wp' '/www/html/wordpress'
				ProxyPassMatch指令:ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:900
					0/usr/local/httpd/htdocs/$1;映射到httpd默认站点目录
				#ln -sv /www/html/wordpress /usr/local/httpd/htdocs/wordpress
				#ln -sv /usr/local/httpd/htdocs/{wordpress,wp}
			建议使用:软链易于操作,便于管理
			Tip:
				1、创建软链的方式,alias指令就毫无意义了:对别名的访问其实就是
					直接对软链的访问;所有alias指令可删除;
				2、由于软链是位于httpd的站点目录下,而站点目录的权限为Indexes
					和允许所有访问,所有此目录下的所有站点文件默认为允许所有
					访问;
				3、要精确控制软链的访问权限,必须分别对每个软链定义RequireAll
					控制指令;
		2、修改ProxyPassMatch指令的路径映射,使映射后的路径为站点资源的
			正确路径,如
				alias指令:
					alias ‘/wordpress’ ‘/www/html/wordpress’
					alias '/wp' '/www/html/wordpress'
				ProxyPassMatch指令:
					ProxyPassMatch ^/wordpress/(.*\.php)$ fcgi://127.0.0.1:9000/www
							/html/wordpress/$1
				ProxyPassMatch ^/wp/(.*\.php)$ fcgi://127.0.0.1:9000/www/html/word
						press/$1
				ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/httpd/htd
						ocs/$1
			不建议使用:会造成配置文件的复杂化,易出错且降低性能

4、基于上一步的软链代替别名配置,进行访问控制,同样的配置
wordpress访问控制生效,phpMyAdmin却效果相反(即ip192.1
68.181.11不可访问,其他可以):

	wordpress配置:
		<Directory /usr/local/httpd/htdocs/wordpress>
	        Options Indexes FollowSymLinks
	        AllowOverride none
	        <RequireAll>
	                Require ip 192.168.181.11
	        </RequireAll>
		</Directory>
	phpMyAdmin配置:
		<Directory /usr/local/httpd/htdocs/wordpress>
	        Options Indexes FollowSymLinks
	        AllowOverride none
	        <RequireAll>
	                Require ip 192.168.181.11
	        </RequireAll>
		</Directory>
其后,两者都尝试其他权限配置,都无法生效,重启或重载服务都不生效;

解:sb了,两台虚拟机都部署了lamp(一台是yum部署),结果修改编译
	部署的配置却一直访问yum部署的服务器

问题还是存在!!:
	同样的授权,phpMyAdmin可以,而wordpress无法生效,TMD
解:
	wordpress授权配置文件中,wordpress站点路径中httpd写成了httdp
	TMD,精神恍惚的时候做事情真的要命!!

5、centos7配置了lamp+fpm服务,在启用配置fcgi转发时,无法
列出目录内容,提示404,如下:

设置转发时:
	ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
	访问站点下centos目录,提示404,错误日志提示Primary script unknown
取消后端fcgi转发时:
	站点下centos目录访问正常,列出其下文件列表;

析:
	web服务器查找目录下index.html文件,查找index.php文件,都没有
	分析应该遵循Indexes指令列出目录下文件才对,却提示主要脚本位置
	错误,不解!
临时解决:
	定义Directory指令,位置要提供服务的目录位置,包含以下指令:
		DirectoryIndex index.html

6、mysql新建用户无法登陆

问题:
	wordpress网站使用了‘user’@‘hostname’的mysql授权用户,现在mysql中
	添加了skip-hostname-resovle = 1,所以删除用户‘user’@‘hostname',并添加新
	用户‘user’@‘ip’,并授权该用户对wp数据库的所有权限,结果wordpress显示无
	法连接数据库;
环境:
	Centos 7
	httpd2.46
	php-mod (php5.4.16)
	mariadb-server5.5.64
解决问题:	
	1、尝试使用mysql@127.0.0.1在本地客户端进行登录:
		#mysql -uwp -h127.0.0.1 -p 
		#******
		登录失败‘Access denied’
	2、google后提示:删除mysql中两个空名称用户并重读授权表:
		DELETE FROM mysql.user WHERE User=‘’;
		FLUSH PRIVILEGES;
		在本地使用mysql客户端登录成功,但打开wordpress主页仍提示‘连接
		数据库失败’
	3、检查wordpress配置文件:wp-config.php
		之前配置文件中已更改了host为127.0.0.1
		添加define (WP _ALLOW_REPAIR,ture);语句,重启httpd服务,访问
		wp-admin页面,提示数据库连接方面的错误,如密码错误、用户未
		授权、或服务未开启等等;
	4、root用户本地登录mysql,重新设置密码并授权新建用户对wordpress数据库的
		的全部权限:
			SET PASSWORD FOR wp@127.0.0.1 = PASSWORD('8888');
			GRANT ALL ON wordpress.* TO wp@127.0.0.1;
			FLUSH PRIVILEGES;
	5、刷新wordpress主页,访问成功;
总结:
	1、数据库用户连接不上时,先本地连接排除网络问题确认是否数据库的问题
	2、重设用户密码(有可能密码设置错误)
	3、检查授权语句语法并重新授权用户(有可能语句中多了符号
		造成错误的授权)

7、HTTPD访问控制指令RequireAll和RequireAny:

RequireAny:
	在没有指定RequireAll,潜在的指定为RequireAny
	没有指定任何Require指令时,默认为Require all denied拒绝所有;
	在指定了任意Require指定时,仅允许指令允许的访问,其他拒绝
	在指定了多条Require指令时,仅匹配一条生效
	只有肯定需求用法,如:
		Require ip:
			Require ip 192.168.100.10。。。
			Require ip 192.168.100  192.168.101 10
			Require ip 192。。。
			Require ip 192.168.100.0/24。。。
			Require ip 192.168.100.0/255.255.255.0。。。
		Require host:
			Require host test.shxing.com mail.shxing.com。。。
			Require host shxing.com。。
			Require host .com。。
		Require user:和AuthType、AuthName等指令一起使用
		Require group:和AuthType、AuthName等指令一起使用
			(user和group无法在RequireAny中实现和IP的双重访问控制)
RequireAll:
	在内没有指定任何指令会提示语法错误;
	在内存在Require指令时,默认为Require all denied拒绝所有,仅允许Require条目
	不能仅有not require,因为默认为拒绝了,多重拒绝没有意义,会提示语法错误;
	必须满足其内的所有条件才能允许访问;
	Require (not)ip/host/user/group
		user和group必须配合Auth选项同时使用
	例1:
		Require ip 192.168.100:允许192.168.100网段主机访问
	例2:
		Require not ip 192.168.100.1
		Require ip 192.168.100:允许除192.168.100.1之外的其他192.168.100网段的主机访问;
	例3:
		Require 192.168.100
		AuthType basic
		AuthName “用户登录访问”
		AuthBasicProvider file
		AuthUserFile “/etc/httpd/conf.d/.htpasswd”
		AuthGroupFile “/etc/httpd/conf.d/.htgroup”
		Require user valid:允许192.168.100网段的主机进行用户登录访问
总结:
	Requireany:任意一条Require指令满足即可;默认拒绝所有
		不能使用Require not
	Requireall:满足所有Require指令才可访问,默认拒绝所有
		可以使用Require not,但不能仅有not指令;
Alias问题实例:
	平台:lamp+wordpress+phpMyAdmin
	版本:
		linux:Centos 6.10
		httpd:2.4.25,源码编译安装
		mariadb-server:5.5.47,源码编译安装
		php:5.6.23
	问题:在httpd配置目录中添加wordpress.conf和phpMyAdmin.conf配置
		文件;在站点目录分别创建wordpress-release和phpMyAdmin-release
		的软链wordpress和phpMyAdmin;配置文件如下:
		Alias “/wp” “/usr/local/httpd/htdocs/wordpress”
		<Directory /usr/local/httpd/htdocs/wordpress>
			Options Indexes FollowSymLinks
			AllowOverride none
			Require all granted
		</Directory> #phpMyAdmin配置文件类似
		浏览器访问/wp提示404错误,去掉Alias定义后访问成功
	排查:
		1、selinux是否关闭:关闭
		2、防火墙是否关闭:关闭
		3、站点目录的属主权限是否正确:无误
		4、httpd是否加载Alias模块:是
		5、httpd -t检查语法:显示ok
		6、检查Include语句是否生效(在主配置文件中配置包含wordpress配置
			文件所在的目录):Include语句生效
		7、去除Alias指令,仅检查wordpress配置文件中Directory的访问控制
			是否生效:不生效
		8、配置wordpress的访问控制到主配置文件中,查看是否生效:否
		9、任何更改的配置未生效
		10、ps aux查看httpd进程,发现服务停止后进程还保留,killall杀死进程
			后再运行主进程,配置成功生效
		11、发现问题:服务脚本的配置有问题,执行服务重启时,进程并未
			停止并重新启动,未载入配置文件
	总结:
		1、对服务脚本理解不够
		2、排错过程过于复杂,对于httpd的理解不够
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值