跳至主要内容

博文

目前显示的是标签为“mysql”的博文

监控你的lnmp状态是否正常

脚本介绍 本脚本主要用于监控 LNMP 环境中的 PHP/Nginx/MySQL 服务是否可用,若不可用则写入到日志,并通过 SendMail 发送邮件进行通知! 服务器组件安装 1、sendmail安装 之前在另外一篇文章有说到过,请同学们移步---> 利用shell监控服务器状态并且EMAIL获取报警 2、sharutils安装 Sendmail作为大多数Linux默认自带的邮件工具,把它利用起来配合做一些简单的系统管理工作,我觉得是非常好的。 之前我用sendmail每天定期将一些我需要的报告通过“正文”的方式直接发送到我的邮箱,但由于内容越来越多,看起来很不方便,如是想把这些报告通过附件的方式发送,而sendmail默认是不带有这个功能的,需要配合安装一个叫sharutils的软件包来实现。 apt install mailutils apt install sharutils 3、测试组件 利用uuencode使sendmail能发送带有附件的邮件 uuencode /home/wwwlogs/access.log access.log | mail -s "my lnmp log" your@mail.com 脚本完整代码 该 Shell 脚本已经在军哥的 LNMP 环境测试成功。 宝塔、WDCP 等搭建的可能不支持,有需要请自行修改。 脚本中的收件人邮箱、监测站点的 url,请修改为你自己的 #!/bin/bash ###获取当前时间 time="$(date +"%Y%m%d-%H:%M")" ###查看fpm服务是否运行 i=`netstat -an | grep php-cgi | wc -l` if [ $i = 0 ] then ###重启php服务 /etc/init.d/php-fpm restart ### 写入日志 echo "$time php-fpm service is down .... restart..." >> /var/log/php-fpm.log ...

LNMP1.5解决MySQL无法远程连接问题

解决思路: 之前也遇到过这个问题,解决的途径也是五花八门,从百度和Google上也看到各种解决方案,基本上分以下几种: 1.没有给root对应的权限 -- @'192.168.1.123'可以替换为@‘%’就可任意ip访问 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.123' IDENTIFIED BY '' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES; 2.直接用 UPDATE 更新 root 用户 Host, 但不推荐 mysql> UPDATE user SET Host='192.168.1.123' WHERE User='root' AND Host='localhost' LIMIT 1; mysql> FLUSH PRIVILEGES; 以上2种方法如果都使用了,问题依然没有解决。于是继续在lnmp官网上找寻答案,结果终于找到了。http://bit.ly/2ikCFLI MySQL/MariaDB无法远程连接,如何开启? 为了安全LNMP默认是禁止远程连接的,开启方法:https://bbs.vpser.net/thread-13563-1-1.html 直接通过iptables进行操作 1.查看已有的iptables规则,以序号显示 iptables -L -n --line-numbers 看命了我们发现3306是drop的,所以我们要删掉或者允许。 2.删除对应的DROP规则 iptables -D INPUT 6

mysql自动建立用户和导入数据库脚本

最近在逃离阿里云这个粪坑,但是手工一台机器一台机器的转移总觉得太麻烦了.要一个数据库一个数据库建立然后导入,浪费时间又浪费青春.程序猿的好朋友github说别怕,我们有的是人才,所以找到这个哥们写的脚本: 自动开mysql的脚本 然后我们需要自己在写个人shell让他把老的mysql导入进去脚本代码如下: #!/bin/bash cd /root bash mysql-create-db-user.sh --host=localhost --database=bbbb --user=bbbb --pass=bbbb cd /root/mysql mysql -ubbbb -pbbbb bbbb < bbbb.sql --default-character-set=utf8 然后给以脚本文件权限,并且执行: bash mysql-user.sh 这个哥们的脚本创建的user都是@%,代表任意主机都可以连接,不太安全.所以我们要修改一下 搜索: function createMysqlDbUser() 把下面2行代码修改 SQL2="CREATE USER '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASS}';" SQL3="GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';" 然后把 read rootPassword #修改成你的root密码 #比如 read 123456  

利用shell监控服务器状态并且EMAIL获取报警

其实之前博客中也有说到过,现在又老调重启了~因为我把阿里云的监控全部删除了.要脱坑就全部一起脱不想留下任何有关联的东西!不多说了~我们开始来折腾吧~ 首先我们来配置MAIL部分,MAIL部分我们只用到发送所以就装个sendmail就好了 sudo apt-get install sendmail sudo apt-get install sendmail-cf sudo apt-get install mailutils 下面几个包是可选的: squirrelmail //提供webmail spamassassin //提供邮件过滤 mailman //提供邮件列表支持 dovecot // 提供IMAP和POP接收邮件服务器守护进程 注意: 使用带附件的功能,则还需要安装sharutils, 安装命令: sudo apt-get install sharutils;(yum install sharutils ) 终端输入命令: ps aux |grep sendmail 出现这个代表已经安装成功了!接下来就设置配置 二、配置 sendmail 默认只会为本机用户发送邮件,只有把它扩展到整个Internet,才会成为真正的邮件服务器。 打开sendmail的配置宏文件:/etc/mail/sendmail.mc vi /etc/mail/sendmail.mc 找到如下行: DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl 修改Addr=0.0.0.0 ,表明可以连接到任何服务器。 生成新的配置文件: cd /etc/mail mv sendmail.cf sendmail.cf~ //做一个备份 m4 sendmail.mc > sendmail.cf //>的左右有空格,提示错误没有安装sendmail-cf 三、测试发送邮件 测试例子: echo "content:e9china server normal" | mail -s "title:Server connection...

mysql问题:A表a字段覆盖到B表a字段的问题

mysql问题:A表a字段覆盖到B表a字段的问题 起因:在使用帝国cms的时候,想写个完整的json.但是发现文章内容(phome_ecms_news_data_1.newsnext)在副表,这个就尴尬了.但是如果使用帝国的工具副表转主表的话,且不说之前制作的网页,app有什么影响.就是api接口都要重新改.觉得太麻烦了.还是直接在主表增加一个字段phome_ecms_news.appnext这样把phome_ecms_news_data_1.newsnext字段内容复制到appnext里面去. update phome_ecms_news set phome_ecms_news.apptext = (select phome_ecms_news_data_1.newstext from phome_ecms_news_data_1 where phome_ecms_news_data_1.id = phome_ecms_news.id)  

LNMP 下使用命令导出导入 MySQL 数据库

作为站点或服务器运维人员,网站的备份与还原操作是必须熟练的。MySQL 数据库的导出和导入操作是必不可少的,对于一般的用户,可能使用的比较多的是 phpMyAdmin 这样的可视化操作界面,但是这种界面操作在数据库比较大的情况下,经常出错。 如果你对Linux下的命令比较熟悉,并且自己使用的是 vps 或云服务器的话,可以使用 MySQL 相关命令来导出和导入数据库,非常方便高效! 导出数据库 导出数据库为 db_wp.sql.gz 文件: mysqldump -u数据库用户名 -p数据库密码 --add-drop-table --complete-insert 数据库名 | gzip > db_wp.sql.gz 请注意根据自己的实际情况,修改上面的“数据库用户名”、“数据库密码”、“数据库名”为具体的值,一般来说,“数据库用户名”应该使用最高权限的 root,数据库密码应该为 root 用户的密码 导入数据库 因为我们刚才导出的数据库是 gz 压缩的,所以导入前我们需要解压: gzip -d db_wp.sql.gz 解压出来的文件为 db_wp.sql,然后导入到数据库: mysql -u数据库用户名 -p数据库密码 数据库名 < db_wp.sql --default-character-set=utf8 mysql 错误 server has gone away 在操作过程中,可能会出现 mysql server has gone away 的错误,这是数据库太大,缓存不够或操作超时导致的,可以修改下 mysql 的配置来解决: 1、打开配置文件(这里演示的是军哥的 lnmp 下的配置文件,如果你的路径不是这个,自己找到) vi /etc/my.cnf 2、找到 wait_timeout、interactive_timeout 两个变量,设置值为 wait_timeout=2880000 interactive_timeout = 2880000 如果没有这两个参数,直接添加即可 3、再找到max_allowed_packet,增加这个变量的值,比如 100M (也可以设置自己需要的大小) max_allowed_packet = 100M max_allowed_packet ...

树莓派 Raspberry Pi 3B+ 部署服务器(Nginx php Mysql)

在安装可以先更新一下apt的软件列表,以确定安装的软件是最新的 sudo echo "deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi" >> /etc/apt/sources.list sudo apt-get update //升级: sudo apt-get upgrade   安装 Nginx php Mysql sudo apt-get install nginx sudo apt-get install php5-fpm php5-cli php5-curl php5-gd php5-mcrypt php5-mysql php5-cgi sudo apt-get install mysql-server 启动nginx sudo /etc/init.d/nginx start   nginx的www根目录默认在  /var/www/html  中 修改nginx的配置文件 sudo vi /etc/nginx/sites-available/default   1)以下几个选项注意一下 listen 8080; ## listen for ipv4; this line is default and implied //监听的端口号,如果与其它软件冲突,可以在这里更改 root /usr/share/nginx/www; //nginx 默认路径html所在路径 index index.html index.htm index.php; //nginx默认寻找的网页类型,我们可以增加一个index.php   2)PHP脚本支持 找到php的定义段,将这些行的注释去掉 ,修改后内容如下 location ~ .php$ {  fastcgi_pass unix:/var/run/php5-fpm.sock;  fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #加入...

自定义监控lnmp的状态

    使用LNmp有一段时间了,可是在流量大的时候,有时会莫名其妙的出现Nginx 502 Bad Gateway,不是php-fpm死掉了,就是nginx死掉了,网站多的时候根本没空每天一个个检查,往往是网站dwon了1、2天后才发现,流量损失了不少。   Sandy就给出一个解决此类错误的方法,自动检测网站是否正常,不正常的话就自动重启LNmp。   首先,在网站根目录下建立一个 php文件 test200.php,内容随便写几个字,如: <?php echo "200_OK"; ?> 然后建立一个脚本 vi test200_monitor.sh 脚本里的内容如下: wget http://ift.tt/2zsSYep --spider c_monitor=$? if [ $c_monitor = "1" ]; then echo "# Error no 200 status, time: " $(date +"%y-%m-%d %H:%M:%S") "restart lnmp.. " | mail -s "Critical Info: Website is offline." 1388888888@139.com /usr/local/php/sbin/php-fpm restart echo "restart lnmp: php-fpm" fi   这个脚本的意思就是监控 http://ift.tt/2ykg9Gl /usr/local/php/sbin/php-fpm restart  可以换成其他命令,如  /root/lnmp restart  等。邮箱换成你自己的,每次发生错误时,会给你发送邮件。 【补充 vi vim用法】: i  进入编辑状态;  :wq  保存退出;  :q!  不保存退出。    然后是设定权限: chmod 777 /root/test200_monitor.sh ...