Linux

共计 16 篇文章

Nginx 「Too many open files」问题排查

这两天业务部门反馈流量下降的很厉害,我看了一下Nginx的日志,提示「768 worker_connections are not enough」,很明显768对于百万级的PV来说少了太多,打开nginx.conf将其中的连接数量从768更改到了65535。 隔了一小会,发现日志中这个错误已经消失,另外一个错误「Too many open files」又出现了。从字面来看,是服务器的句柄数量不足导致。查看一下nginx的配置 user root root; # 1. worker_processes auto; # 2. worker_rlimit_

CentOS7升级Python默认版本到3.7

现在默认的CentOS7的Python版本为2.7.5,但随着官方放弃Python2的时间节点已经到来(查看[这里]),切换到Python3是大势所趋。我选择了3.7,通过软连接的形式,加到bin下,进行调用。 创建一个目录存放Python原始文件:mkdir ./Python3 && cd ./Python3 下载原始Python安装包:wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.

通过Crontab定时备份

目地通过Linux下的定时任务Crontab来定期的执行脚本,备份服务器中的MySQL数据。 Shell脚本解释#!/bin/sh t=$(date +%Y%m%d%H%M%S); cd /backup/mysql mysqldump -uroot -pyourpassword yourdatabase > yourdatabase.sql tar -czf yourdatabase.${t}.tar.gz yourdatabase.sql rm -r

Screen常用的命令

经常在命令行中执行一些命令的时候,有的是需要在后台执行的,或者有的时候登录在VPS中,退出ssh后,这条命令就自动中断了。这个时候采用Screen的方式就比较好处理。 Screen可以理解成为一个新开一个窗口,每次当你新建一个screen的时候,他就是独立的。可以随时随地的恢复一个状态。 常用的命令 screen -ls #显示当前所有的screen,会有两个状态一个是detach,另外一个是attach,有点像Android中的Fragment的状态一样。 screen -S xxx #创建一个名为xxx的screen screen -r xxx #恢复(或者叫attach一个名为xxx的screen) screen -d xxx #detach某个screen screen -d -r

CentOS 7.4 No package python-pip available

昨天新开了一个VPS,准备安装一下Pip,搭建一下项目环境,但是执行 sudo yum install -y python-pip 后,终端提示** No package python-pip available**。没有pip的可用包。 上网搜的结果都是三步走,就可以解决: yum install -y epel-release yum install python-pip pip install —-upgrade pip 但是按照这个说法执行下来,依然是出错的,提示错误相同。搜了一下epel的[

MySQL设置用户访问权限

对于有远程访问MySQL的需求的话,通过MySQL的权限管理,可以设置一个新的用户指定IP访问,指定数据库操作,指定表,这样用最小粒度确保安全。 创建新用户可以通过SELECT user,host from mysql.user;查出当前的用户及Host。Host一般为localhost,127.0.0.1,%,固定IP。%的意思是,任意IP都可以。 为单独的程序新建一个MySQL用户 CREATE USER 'username'%'host' INDENTIFIED BY 'userpassword'; 即可创建一个新的用户。 给该用户设定权限为了保证安全,一般都需要设定的权限最小。比如,

通过Auth.log查看服务器ssh暴力破解记录

Linux下/var/中有很多系统日志信息,例如auth.log The Authorization Log tracks usage of authorization systems, the mechanisms for authorizing users which prompt for user passwords, such as the Pluggable Authentication Module (PAM) system, the sudo

Linux安装Jenkins

Jenkins是大名鼎鼎开源的CI软件,有非常多的插件,可以完成自动化部署,构建等功能。最近发现前端工程师,在每次的发布流程都非常的折磨人,于是想着不然自己搭建一个CI来处理。 CI的好处是显而易见的,可以持续集成和持续交付。我在之前做国外的项目的时候,这种便利,让我只需要关注我自己的代码和逻辑即可。代码编写出错,CI就过不去。代码通过后,QA就可以直接拿到APK包直接测试,完全不用我本地手动出包。节省了两边的时间。 按照一般Android的流程来看,本地写完代码—Push代码—提交PR—通过审核—打APK包—QA测试。有CI介入之后,相当于打APK包的操作就交由Jenkins来完成了。每一次的Push都可以对应一个APK包,QA只需要在当前的APK中测试是否问题已经解决。 现在这位前端同事使用的是Vue的框架。他的本地流程是本地写完代码—Push代码—到服务器Pull代码—

服务器图片403

这两天服务器端的环境已经部署好了,发现了一个问题,登录后台管理系统的时候,很多图片的地址无法正常访问。提示403错误,顺藤摸瓜的找了很久,没发现什么异常。 改了Nginx的配置文件,支持了正则图片格式。仍然失效。 突然想起来是不是权限设置的有问题。 ls -al 一看果然。,。默认的权限都是root的。因为我设置了一个独立的用户组来控制,所以在nginx访问这些目录的时候,肯定会提示403错误。 大意了大意了。

Centos中双开Tomcat

因为最近的项目需要使用Tomcat来运行,且分了API和Admin两个项目。我就想通过配置,让Tomcat多开。经过一天的折腾和配置,基本上已经完全实现业务需求。由于本机已经安装过一个Nginx,所以Tomcat的默认端口需要修改下。 有两种方案可以解决。 第一种方案:一个Tomcat多开Service 想要多开Service也很简单,只需要复制Tomcat配置中的Service页签就可以了。 <Service name="Catalina"> <Connector port="9080" protocol="HTTP/1.1" connectionTimeout=