1 Star 0 Fork 0

criustt / 麻瓜张的成长之路

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
服务器常见需求.md 19.31 KB
一键复制 编辑 原始数据 按行查看 历史

Linux 常见需求及解决方案

root Zzb89290609

1.rm -rf 误删数据库

如果是et3/et4的文件系统 可采用extundelete 进行文件恢复 由于我们公司大部分的服务器或者客户的服务器采用xfs文件系统就不在做过多描述,详情百度

如果是xfs文件系统,因为xfs文件系统的特性,文件删除时,实际删除的是文件名(文件存储是分成两块:1.是记录文件大小、文件位置等信息的节点。注:不包括文件名,所以文件恢复后无法按照原来的名称进行恢复)2.是文件实际存储的实体。当删除文件后,只是把文件的名称删除了,他的节点信息以及实际占用的存储空间并没有被删除,且这些操作会被日志记录下来,但如果进行了大量读写操作可能会将这些记录替换掉从而丢失(纯属猜测)

步骤:

1.卸载掉分区

umount /mnt/cdrom/

如果显示设备繁忙 强制卸载

 umount /mnt/cdrom/ -f 

2.yum下载tcl (需大于8.6)

yum install tcl

3.后下载https://github.com/ianka/xfs_undelete,将下载下来的文件上传到服务器,注:不能上传到需要恢复的文件所在的分区,比如你需要恢复 dev/mapper/centos-home 那么你可以将文件上传到 dev/mapper/centos-root路径,上传的文件所在分区需要有足够的容量来恢复,如果没有相应分区那么请 外挂磁盘

4.参照https://github.com/ianka/xfs_undelete 进行文件恢复

给出参照命令

./xfs_undelete 2021-03-01 /dev/mapper/centos-data

2.数据库定时备份

数据库常用备份的两种方式分为Java定时器备份、shell脚本命令升级

但由于大部分情况下我们可能拿不到客户提供的root账户密码 或者 应用服务器与数据库服务器分割所以采用shell脚本命令进行备份

首先在/etc/my.cnf下添加如下信息

[mysqldump]
socket=/tmp/mysql.scok
host=127.0.0.1
user=root
password='这里填写你的数据库密码'

自动备份脚本

#!/bin/bash
DUMP='/usr/local/mysql/bin/mysqldump' #这个路径是mysqldump的路径可以通过 whereis mysqldump 查询
EXTRA_FILE='--defaults-extra-file=/etc/my.cnf' #数据库被指文件路径
BAKUP_DIR="/home/zhdj/sqlback" #备份文件存储路径
 
##bakup test01
$DUMP $EXTRA_FILE sheyangparty > $BAKUP_DIR/sheyangpartyBackUp_$(date +%y%m%d).sql
 
 
##remove history bakup files 10 days ago
cd $BAKUP_DIR/ ; -mtime +10 -exec rm -rf {} \;
echo "remove success"

安装定时器

# crontab -bash: crontab: command not found

安装命令: yum install vixie-cron yum install crontabs

添加计划任务

执行命令:

crontab -e
00 23 * * * /home/backup/bkDatabaseName.sh #文件路径

3.nginx反向代理数据库

概述:由于客户提供的服务器大部分情况下是应用服务器与数据库服务器分离的,通常数据库服务器在内网中我们没办法通过本地直连数据库,但是 nginx 提供了stream模块能够反向代理tcp请求

步骤:下述步骤均在应用服务器进行

1.查看是否安装了nginx

nginx -V #大写的V将会输出nginx安装的模块以及版本号

如果没有安装那么请安装nginx

yum list nginx #查看yum包
yum install  *** #nginx version: nginx/1.12.1 版本

2.在安装完成后下载gz安装包,详见群文件,上传到服务器 tar解压安装包

进入解压好的目录后 执行下面命令

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-stream

--prefix=/etc/nginx --sbin-path=/usr/sbin/nginx 这个目录自行配置 注意末尾加上--with-stream

编译后执行make命令

执行完成后会生成一个objes目录

4、备份不带stream模块的nginx
备份之前sbin下的nginx:

cd /usr/sbin(进入sbin目录下) 这个目录可以理解为windows快捷方式

cp nginx ./nginx.bak(把nginx备份,并命名为nginx.bak)

把objes 中的nigx cp到/usr/local/nginx-1.12.1/sbin目录下

之后进行反向代理配置,见下文

#load_module /usr/lib64/nginx/modules/ngx_stream_module.so;;
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events { 
#   use epoll;
    worker_connections  1024;
}

 stream {
   upstream cloudsocket {
       hash $remote_addr consistent;
       server 10.1.10.245:3306 weight=5 max_fails=3 fail_timeout=30s;
   }  
      server {
      listen 3306;#数据库服务器监听端口
      proxy_connect_timeout 10s;
      proxy_timeout 300s;#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。
      proxy_pass cloudsocket;
    }
 }
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;
    client_max_body_size 300m;	
    include             mime.types;
    default_type        application/octet-stream;
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  zhdj.yhdjw.gov.cn:680;
        root         /opt/web;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

	location /service {
               proxy_pass http://127.0.0.1:38080/datawells-admin;
        }
        location /service1 {
	      proxy_pass http://127.0.0.1:38080/datawells-appAdmin;
	}
	 location /develop {
              proxy_pass http://127.0.0.1:8280;
        }
	 location /testAdmin {
              proxy_pass http://127.0.0.1:8903;
        }
	 location /testApp {
              proxy_pass http://127.0.0.1:8180;
        }

        #location /minio {
	#	proxy_pass http://127.0.0.1:9000;
        #}

	location /nacos {
                proxy_pass http://127.0.0.1:8848;
        }

	#location / {
        #	port_in_redirect on;
        #	proxy_redirect off;
        #	proxy_pass http://rabbitbackend;
        #	proxy_set_header X-Real-IP $remote_addr;
        #	proxy_set_header User-Agent $http_user_agent;
        #	proxy_set_header Host $http_host;
        #	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	#	proxy_set_header X-Forwarded-Proto $scheme;
	#}

	#location ~* /rabbitmq/api/ {
	#	rewrite ^ $request_uri;
        #	rewrite ^/rabbitmq/api/(.*) /api/$1 break;
       	#	return 400;
        #	proxy_pass http://rabbitbackend$uri;
        #	proxy_buffering                    off;
        #	proxy_set_header Host              $http_host;
        #	proxy_set_header X-Real-IP         $remote_addr;
        #	proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        #	proxy_set_header X-Forwarded-Proto $scheme;
	#}

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
        server {
        listen       443 ssl;
        #listen       443 ssl http2 default_server;
        #listen       [::]:443 ssl http2 default_server;
        server_name  zhdj.yhdjw.gov.cn:6443;
        root         /opt/web;

        ssl_certificate "/etc/nginx/cert/5667995_zhdj.yhdjw.gov.cn.pem";
        ssl_certificate_key "/etc/nginx/cert/5667995_zhdj.yhdjw.gov.cn.key";
        
	ssl_session_timeout 5m;
    	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    	#表示使用的加密套件的类型。
    	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
    	ssl_prefer_server_ciphers on;
	#ssl_session_cache shared:SSL:1m;
        #ssl_session_timeout  10m;
        #ssl_ciphers HIGH:!aNULL:!MD5;
        #ssl_prefer_server_ciphers on;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

	location /service {
               proxy_pass http://127.0.0.1:38080/datawells-admin;
        }
        location /service1 {
	      proxy_pass http://127.0.0.1:38080/datawells-appAdmin;
	}
	  location /develop {
              proxy_pass http://127.0.0.1:28080/datawells-appAdmin-ex;
        }

        #location /minio {
	#	proxy_pass http://127.0.0.1:9000;
        #}

	location /nacos {
                proxy_pass http://127.0.0.1:8848;
        }


        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2;
#        listen       [::]:443 ssl http2;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}

上述配置文件的stream核心配置为

stream {
   upstream cloudsocket {
       hash $remote_addr consistent;
       server 10.1.10.245:3306 weight=5 max_fails=3 fail_timeout=30s;
   }  
      server {
      listen 3306;#数据库服务器监听端口
      proxy_connect_timeout 10s;
      proxy_timeout 300s;#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。
      proxy_pass cloudsocket;
    }
 }

请加在http代码块上方

之后 systemctl restart nginx 进行测试

如果报错那么可能是stream模块没有安装成功,此时把相关stream 代码注释掉后尝试,如果可以那么就是stream模块没有安装成功。

检查nginx -V 查看是否携带 stream 模块如果没有那些说明没有将objs中的nginx复制过去,复制过去后尝试

如果还有问题可能是因为编译安装失败 请联系我

查看文件数量

ll |wc -l

ls *.jpeg | wc -l

未找到可用的软件

yum install -y epel-release

service rabbitmq-server start

rabbitmqctl list_queues

rabbitmqctl.bat add_user username password rabbitmqctl delete_user gues rabbitmqctl.bat set_user_tags username administrator rabbitmqctl add_user datawells spton123Aa

rabbitmqctl declare exchange --vhost=/ name=sheyangParty durable=true auto_delete=false type=direct

开启网页控制台

rabbitmq-plugins enable rabbitmq_management

重启rabbit

systemctl restart rabbitmq-server

yum install -y vixie-cron

MySQL性能测试

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-table-engine=innodb --mysql-db=testdb --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=Spton123\!@# --oltp-test-mode=complex --oltp-table-size=30000000 --num-threads=100 --mysql-socket=/tmp/mysql.sock --oltp-read-only=on prepare

sysbench ./tests/include/oltp_legacy/oltp.lua ``--mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root  --mysql-db=testdb  --mysql-password=Spton123\!\@\# --oltp-test-mode=complex --oltp-table-size=30000000  --num-threads=100 --mysql-socket=/tmp/mysql.sock  run  >> /home/zhdj/mysysbench20210912.log

特别值得一提的是Linux操作系统有很多值得学习的地方,这里我们主要介绍Linux操作系统,包括介绍Linux操作系统等方面。Linux操作系统软件安装方法总结

一、rpm包安装方式步骤:

引用: 1、找到相应的软件包,比如soft.version.rpm,下载到本机某个目录; 2、打开一个终端,su -成root用户; 3、cd soft.version.rpm所在的目录; 4、输入rpm -ivh soft.version.rpm

二、deb包安装方式步骤:

引用: 1、找到相应的软件包,比如soft.version.deb,下载到本机某个目录; 2、打开一个终端,su -成root用户; 3、cd soft.version.deb所在的目录; 4、输入dpkg -i soft.version.deb

三、tar.gz源代码包安装方式:

引用: 1、找到相应的软件包,比如soft.tar.gz,下载到本机某个目录; 2、打开一个终端,su -成root用户; 3、cd soft.tar.gz所在的目录; 4、tar -xzvf soft.tar.gz //一般会生成一个soft目录 5、cd soft 6、./configure 7、make 8、make install

四、tar.bz2源代码包安装方式:

引用: 1、找到相应的软件包,比如soft.tar.bz2,下载到本机某个目录; 2、打开一个终端,su -成root用户; 3、cd soft.tar.bz2所在的目录; 4、tar -xjvf soft.tar.bz2 //一般会生成一个soft目录 5、cd soft 6、./configure 7、make 8、make install

五、apt方式安装:

引用: 1、打开一个终端,su -成root用户; 2、apt-cache search soft注:soft是你要找的软件的名称或相关信息 3、如果2中找到了软件soft.version,则用apt-get installsoft.version命令安装软件注:只要你可以上网,只需要用apt-cachesearch查找软件,用apt-get install软件

六、bin文件安装:

如果你下载到的软件名是soft.bin,一般情况下是个可执行文件,安装方法如下:

引用: 1、打开一个终端,su -成root用户; 2、chmod +x soft.bin 3、./soft.bin //运行这个命令就可以安装软件了

七、不需要安装的软件:

有了些软件,比如lumaqq,是不需要安装的,自带jre解压缩后可直接运行。假设下载的是lumaqq.tar.gz,使用方法如下:

引用: 1、打开一个终端,su -成root用户; 2、tar -xzvf lumaqq.tar.gz//这一步会生成一个叫LumaQQ的目录 3、cd LumaQQ 4、chmod +x lumaqq //设置lumaqq这个程序文件为可运行 5、此时就可以运行lumaqq了,用命令./lumaqq即可,但每次运行要输入全路径或切换到刚才生成的LumaQQ目录里

6、为了保证不设置路径就可以用,你可以在/bin目录下建立一个lumaqq的链接,用命令ln-s lumaqq /bin/即可,以后任何时候打开一个终端输入lumaqq就可以启动QQ聊天软件了

7、如果你要想lumaqq有个菜单项,使用菜单编辑工具,比如AlacarteMenuEditor,找到上面生成的LumaQQ目录里的lumaqq设置一个菜单项就可以了,当然你也可以直接到/usr/share/applications目录,按照里面其它*.desktop文件的格式生成一个自己的desktop文件即可。

建议开发者们不要用red hat/redflag/suse等第一代Linux操作系统,用这些除了方便(也就是说比较傻瓜型)、界面豪华点外没什么好。用debian/ubuntu等第二代吧,apt命令安装软件是最简单的。apt命令会自动解决软件安装过程中的依赖问题,会把没有的包安装上,会把版本低的包自动升级,当然,都是要经你确认一次的。

如果你使用Red Hat等第1代Linux系统,安装软件是比较麻烦的事,rpm-ivhsoftA.rpm是用来安装softA软件的,但通常情况下可能遇到的问题是提示说需要安装softB1,softB2,softB3等一堆软件,然后你安装softB1软件包时,可能又会提示你说需要安装softC1,softC2, softC3,softC4等一堆软件……这样一来你就只够时间到处去找这些软件包了。

光盘上没有就得去网上下载,网上还得搜索半天,时间都花在搜索软件包了。而且就算找到这些软件包,还可能会遇到的问题是:softC2软件包必须在softC1软件包之前安装才可以,顺序错了也安装不成功。

但这谁知道呢?难啊。所以,你没有时间来安装体验软件的功能了,更别说开发软件了。建议你安装第2代Linux操作系统,典型的是Debian Linux和UbuntuLinux,我之前在文章“如何在安装了Windows操作系统的电脑上安装Linux操作系统”里提到一个简明安装手册,你下载来照着操作就可以安装Ubuntu了。

第2代Linux操作系统在安装软件方面相当简单:第一步,搜索你要的软件,比如你要找一个游戏软件,它的名称叫myward,这个游戏软件的说明是:myown war game。Linux操作系统搜索这个软件包就只需要输入命令apt-cache searchmyward,或者输入软件名称的一部分apt-cache searchwar,或者你不知道软件名称。

输入软件说明里的一部分文字apt-cachesearchgame,都可以找到这个软件,找到后进行第二步,只需要输入apt-getinstall myward,即后面跟上软件名称就可以安装了。我是做程序开发的,不希望自己只会google找东西,希望有更多的时间研究Linux内核。周立发的Linux论坛。 ———————————————— 版权声明:本文为CSDN博主「Eighty_Nine」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/mark20170902/article/details/52115569

//查看rpm安装的地址

rpm -ql linuxqq

/usr/local/bin/clambc

yum install -y epel-release

firewall-cmd --add-port=443/tcp --permanent

firewall-cmd --reload

#vi /etc/pam.d/sshd

img

ngixn 反向代理404 如果是配置没问题的话,查看error日志

nginx配置报错: connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream,

出现如下错误:

2021/11/18 13:17:34 [crit] 41458#41458: *10 connect() to 127.0.0.1:38080 failed (13: Permission denied) while connecting to upstream, client: 183.212.154.105, server: zhdj.yhdjw.gov.cn:443, request: "GET /service1/app/ybxc/task/updateApp?name=%E5%B0%84%E9%98%B3%E6%99%BA%E6%85%A7%E5%85%9A%E5%BB%BAApp&version=3.5.7&deviceType=ios HTTP/1.1", upstream: "http://127.0.0.1:38080/datawells-appAdmin/app/ybxc/task/updateApp?name=%E5%B0%84%E9%98%B3%E6%99%BA%E6%85%A7%E5%85%9A%E5%BB%BAApp&version=3.5.7&deviceType=ios", host: "zhdj.yhdjw.gov.cn"

运行以下的命令

setsebool -P httpd_can_network_connect 1 ———————————————— 版权声明:本文为CSDN博主「hunhun1122」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/hunhun1122/article/details/103182718

vim /etc/logrotate.d/nginx

修改服务器nginx日志存储时间

1
https://gitee.com/criustt/muggle-zhangs-growth-path.git
git@gitee.com:criustt/muggle-zhangs-growth-path.git
criustt
muggle-zhangs-growth-path
麻瓜张的成长之路
master

搜索帮助