Rootop 服务器运维与web架构

2021-09-29
发表者 Venus
./xxx运行脚本和. xxx运行区别已关闭评论

./xxx运行脚本和. xxx运行区别

系统自带的一个脚本如下:

[root@MiWiFi-RA69-srv ~]# cat .bashrc 
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vi=vim

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

看到有这么一句 . /etc/bashrc ,点和文件之间有个空格。
一般来说运行脚本都是 ./xxx 方式,那么和这个 . xxx 的其中一个区别就是不需要加运行权限。

比如:

[root@MiWiFi-RA69-srv ~]# cat a
echo abc
[root@MiWiFi-RA69-srv ~]# ./a
-bash: ./a: Permission denied
[root@MiWiFi-RA69-srv ~]# . a
abc

2021-09-28
发表者 Venus
php的ini配置加载及php.d目录作用已关闭评论

php的ini配置加载及php.d目录作用

这里有2台机器的编译安装参数:

[root@srv1 ~]# php -i | grep "Configure Command"
Configure Command =>  './configure'  '--prefix=/www/server/php/56' '--with-config-file-path=/www/server/php/56/etc' 略```

[root@srv2 ~]# php -i | grep "Configure Command"
Configure Command =>  './configure'  '--prefix=/usr/local/php' '--with-config-file-path=/usr/local/php/etc' '--with-config-file-scan-dir=/usr/local/php/etc/php.d' 略```

在php编译安装时通过

--with-config-file-scan-dir

参数来指定要扫描的目录。
可以通过配置,让 PHP 在读完 php.ini 后,扫描指定路径中的附加 .ini 配置文件。

对于每个目录而言,PHP 会以首字符顺序为优先级,扫描该目录下所有的 .ini 结尾的配置文件。
所有被截入的配置文件,可以通过下面命令查看:

[root@srv2 etc]# php --ini
Configuration File (php.ini) Path: /usr/local/php/etc
Loaded Configuration File:         /usr/local/php/etc/php.ini
Scan for additional .ini files in: /usr/local/php/etc/php.d
Additional .ini files parsed:      /usr/local/php/etc/php.d/03-imagick.ini,
/usr/local/php/etc/php.d/05-memcached.ini,
/usr/local/php/etc/php.d/05-redis.ini

[root@srv2 etc]# ll /usr/local/php/etc/php.d/
total 12
-rw-r--r-- 1 root root 21 Sep 24 11:05 03-imagick.ini
-rw-r--r-- 1 root root 44 Sep 24 11:08 05-memcached.ini
-rw-r--r-- 1 root root 19 Sep 24 11:09 05-redis.ini

参考官文:https://www.php.net/manual/zh/configuration.file.php

2021-09-27
发表者 Venus
已关闭评论

可以查看每个虚拟主机的请求情况,发送流量,upstream分流等情况,且支持prometheus监控。
编译模块略…
# nginx.conf配置文件

http
{
	略```
	
	# 开启监控
	vhost_traffic_status_zone;
	
	# 根据主机名区分
	vhost_traffic_status_filter_by_host on;

	include /usr/local/nginx/conf/vhost/vhost_*.conf;
}

# 修改其中一个虚拟主机,添加访问监控用于展示。

server
{
    listen 80 default_server;
    server_name www.test.com;
	略```
	location /status
	{
		vhost_traffic_status_display;
		vhost_traffic_status_display_format html;
	}
	略```
}

展示页面里的虚拟主机看着是不全,其实是需要访问以后才会产生统计数据,否则是不显示的。
如果某个虚拟主机不想参与统计,则在server{}段中加入 vhost_traffic_status off;
更多指令参考:https://github.com/vozlt/nginx-module-vts

2021-09-27
发表者 Venus
centos7配置vnc远程连接已关闭评论

centos7配置vnc远程连接

# centos7安装桌面

[root@localhost ~]# yum -y groups install "GNOME Desktop"
 

# 安装vnc

[root@localhost ~]# yum install tigervnc-server -y

# 启动服务

[root@localhost ~]# vncserver

会提示输入密码

# 查看

[root@localhost ~]# vncserver -list

TigerVNC server sessions:

X DISPLAY #	PROCESS ID
:1		32227

# 关闭

[root@localhost ~]# vncserver -kill :1

# 修改密码

[root@localhost ~]# vncpasswd 
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used

连接端口号从/root/.vnc下的主机名+桌面id的日志(如:MiWiFi-RA69-srv:1.log)中可以看到。多启动一个vncserver,端口号就加1。

[root@MiWiFi-RA69-srv .vnc]# grep Listening *.log
vncext: Listening for VNC connections on all interface(s), port 5901

2021-09-15
发表者 Venus
nginx反向代理proxy_pass中带/和不带/的区别已关闭评论

nginx反向代理proxy_pass中带/和不带/的区别

文档:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

环境:
192.168.31.36 nginx反向代理
192.168.31.37 nginx,默认首页为index.html

通过浏览器访问:http://www.test.com/test/index.html 测试

情况一、
proxy_pass中不包含URI地址,那么location后的地址会传递给后端。
1、

location /test
{
	proxy_pass http://192.168.31.37;
}

因为后端没有test目录,所以访问结果为 404(后端日志 “GET /test/index.html HTTP/1.0” 404)

2、

location /test/   # location中以/结尾
{
	proxy_pass http://192.168.31.37;
}

因为后端没有test目录,所以访问结果为 404(后端日志 “GET /test/index.html HTTP/1.0” 404)

情况二、
proxy_pass中指定了符合URI规范的地址,那么location后面匹配的地址字符被替换为proxy_pass中URI的地址字符
3、

location /test
{
    proxy_pass http://192.168.31.37/;
}

proxy_pass中的/替换为/test,实际访问 http://192.168.31.37//index.html,所以访问成功(后端日志 “GET //index.html HTTP/1.0” 200)
实际访问地址里出现//的原因是访问
/test/index.html 时,proxy_pass后面的/替换为/test,变成
//index.html
所以日志里也会看到两个//。

4、

location /test/
{
	proxy_pass http://192.168.31.37/;
}

访问成功(后端日志 “GET /index.html HTTP/1.0” 200)
/ 替换 /test/ 后就变为 /index.html ,所以日志里只出现一个 /