特色

欢迎来到554的运维小站

欢迎来到554的运维小站

本人比较懒,会不定期的更新一部分运维经验和项目上来,但是不能保证更新频率。

贴出来的代码与项目已去除敏感信息、或该项目/代码已从生产环境淘汰。参考时如遇到问题,可以QQ联系我进行咨询,但不一定能帮你解决所有问题。

注意,因为wordpress排版问题,脚本里有些莫名其妙的换行,请复制粘贴到本地再进行参考,以免错误多打换行!

还有,windows下的换行是 /r/n , linux下的换行是/n,请勿在windows下编写脚本再移到linux下!!!非要这样的话,请转换格式!尽量只在linux环境下直接编写代码,vim是个好东西,谢谢!

QQ:1637999484

Centos/Red hat快速安装crontab ( crond)

环境: Centos / Red hat 6.x  + 可连上yum server 状态

yum -y install vixie-cron

yum -y install crontabs

vixie-cron是crontab的主程序,而crontabs是守护程序。不过你在vixie-cron的yum安装时,往往会帮你把crontabs一起装上。所以等会报已安装错误时,无需紧张。

安装后手动启动crontab

service crond start

以后开机自动crontab

chkconfig –level 35 crond on

Centos 7.X就简单多了

systemctl enable crond

 

接下来照常与crontab玩耍即可!

linux下烧U盘镜像

如果你要刻录的是各种官方镜像,而不是WINPE之类的话,一条命令就可以。

dd if=windows.iso of=/dev/sdb

windows.iso是镜像文件的地址,支持但不仅限于ISO文件格式,img之类的其他镜像文件也支持。 而 /dev/sdb则是存储设备地址。请勿照抄,请手动敲一个 fdisk -l确认以下磁盘。

也不要输成/dev/sdb1 ,后面带数字的话,表示的是分区,而不是整块磁盘。而镜像往往是多分区的,你指向到单一分区肯定是不行的。

自行编写Firefox的Ubuntu桌面图标(Linux通用的.desktop)

Ubuntu自带的firefox太旧了,打算换个新的。

但是下载下来的是tar.bz2的包,解压出来后是个文件目录,需要进到目录里执行命令才可以使用。没有图标,不太方便,于是按照资料自己做了个图标。

先进到/usr/share/applications/目录下,touch 一个叫firefox.desktop的文件。然后vim打开,添加以下内容:

[Desktop Entry]                 #desktop文件头,表示其为Desktop Entry文件
Name = Firefox                  #程序名称
Comment = this is firefox       #程序描述(可选)
Exec = /opt/firefox/firefox     #启动名林
Icon = /opt/firefox/icons/updater.png  #图标路径
Terminal = false   #是否在终端里跑,尽在Application的type下该配置生效
Type = Application  #类型,主要是Application和link
Categories = Application;Network; #菜单栏中的类别

其中可选项可以不写,#号后的注释与#号本身不写

还有一些其他的可选项,补充在下面:

Version = 1.0 # 标明Entry的版本(可选)

GenericName = eclipse # 程序通用名称(可选).

使用matlab的时候,遇到了点小问题,双击启动应用程序APP的图标后,软件出现了加载界面,但是没过多久就闪退了。。。

后面看了下,在exec后面追加个-desktop的选项即可

通过RSA公钥来免密码登录SSH

先生成密钥

ssh-keygen

最好添加个公钥的密码,免得一不小心弄出问题

不指定目录的话,公钥应该就在~/.ssh这个目录下面,文件名为id_rsa.pub

然后复制下公钥内的内容

cat ~/.ssh/id_rsa.pub

复制命令行返回的内容,再远程到需要免密码登录的用户名@服务器上去。

ssh user@server_ip

注意!ssh免密码是跟远程登录的用户绑定的!这个公钥是放到对应用户的.ssh目录下,以后免密码登录也只对这个用户有效。

vim ~/.ssh/authorized_keys

然后把你的之前复制的内容追加到文件底部,没有的话就生成新文件。

再操作下.ssh目录,以免后期被人瞎搞添加了自己的rsa密钥

cd ~/.ssh

chmod 0600 *

完工!

 

crontab 详解

本来想写个crontab详解,后面发现官方自带模板里已经很清楚了。。。

# Example of job definition:
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

 

记一次网站路径设置为777后仍然无法写入的问题

公司的内网论坛突然就没法上传附件了。

查了下,discuz后台一直提示没法正常上传文件,于是检查了下权限,提示我./data 没法写入。

ssh连到linux主机上,发现路径都已经设置为777了,还是一样报无法写入,很是奇怪。。。

后面才意识到,可能是重启后selinux防火墙又跑起来了,于是关闭了下selinux防火墙,一切恢复。。。

VisualSVN Server 设置SVN更新版本后发送邮件

最近公司里提了个需求:

每次一有人往SVN里面commit东西,就立马发邮件通知大家。邮件内容包含svn commit 信息和文件变动信息。

这样来明确责任,免得又有人瞎搞,把改错的代码传了上去。害的别人之前本来能跑通的流程,后面莫名其妙没法跑了,以为自己代码有问题,瞎改了半天。

(吐槽下,把之前的本来正常工作的项目代码,改到一半,改成不能跑了。这样也没什么,关键这些鸟人还传到SVN上去,害的项目组里其他同事受到了影响。这是高度的不负责任!!!好歹你施工到一半的代码,改个文件名保存。别把影响其他人工作,只有稳定能测试通过的版本才应当提交到项目文件上!)

于是准备开始动手,本来的计划是这样:

拿Python写个脚本,然后专门给python分配个用户,这个脚本以这个用户的身份,跑去定期update一下,获取下更新信息与文件改动,如果有更新,就通过python的SMTP发件模块来发送邮件,提醒大家。写完后再把这个脚本添加到crontab,让它每分钟自动跑一次即可。

后面发现,根本没必要这么麻烦,直接一个Post-commit hook就好。这是svn自带的一个钩子功能。可以利用这个去触发一个python脚本,从而把项目更新以邮件形式发送出去。

而我们公司需要加这个功能的SVN,是在Windows Server上跑在VisualSVN Server上的,查了下,连python和邮件模块都不用装,直接几句脚本搞定。

对着VisualSVN 源点一下右键,选属性-》HOOKs-》Post-commit hook 添加以下脚本

“%VISUALSVN_SERVER%\bin\VisualSVNServerHooks.exe” ^
commit-notification “%1” -r %2 ^
–from svn_log@your_company.com –to abc@your_company.com;def@your_company.com ^
–smtp-server mail.your_company.com ^
–smtp-port 25 ^
–smtp-user svn_log@your_company.com ^
–smtp-password yourmail_passwd ^
–no-diffs ^
–encoding utf-8

请把以上代码的:

svn_log@your_company.com    替换成 你设置的SVN更新提醒邮箱

abc@your_company.com   def@your_company.com 替换成接收邮件的邮箱,采用以下格式来添加多个 abc;def;ghi;…;…

mail.your_company.com替换成SVN更新提醒邮箱的SMTP发件服务器地址

smtp-port 25 中的25更换成SMTP发件服务器的端口

svn_log@your_company.com 更换成你设置的SVN更新提醒邮箱

yourmail_passwd 更换成你的邮箱密码

如果你的邮箱需要启用ssl,请在密码那行下面加上

–smtp-ssl ^

表示启用SSL验证。

然后保存即可。

不过抽空我还是打算按照之前最初的思路和linux下的Post-commit hook方法写两个脚本出来。。。

 

zabbix-server 没有跑起来的问题

装好后发现网页端提示我zabbix没有正常跑起来。。。

先看一下log

cat /var/log/zabbix/zabbix_server.log

看到这个,突然想起来,用了那么多localhost,selinux肯定会阻止了。

参考这篇文章:https://blog.csdn.net/hanzheng260561728/article/details/51514398

我比较懒,没有用他的方法2,毕竟搞不好以后服务器要改IP,直接用了方法1。

先永久关闭selinux

vi /etc/selinux/config

#SELINUX=disabled

#SELINUXTYPE=targeted

然后再干脆禁用掉防火墙,因为我这边不会挂到外网,即便要挂也只映射80端口出去,其他端口外部无法访问,所以安心的禁用掉了防火墙。

systemctl disable firewalld

本来想重启服务的,结果发现zabbix-server服务卡死了,没法重启,反正都添加了开机自启,直接强制关机重启了,然后后面就全部正常了。

接下来按照该页进行配置即可:

https://www.zabbix.com/documentation/3.4/zh/manual/quickstart

一步步搭建zabbix监控平台

打算折腾个Zabbix,用于监控公司的服务器设备与网络服务,并在服务中断的时候及时报警通知。

计划是:先遵循官网的快速部署向导,部署一下zabbix基础版本,再进行配置,看是否能满足需求,不能满足的部分再进行二次定制开发。

本篇主要讲述快速部署方面的内容。

https://www.zabbix.com/download

按照网页的指引,选择自己想要安装的zabbix版本+系统OS版本+数据库版本

这次采用zabbix 3.4+Centos 7 + Mysql的部署方案(准确来说,我用的好像是mariaDB)

准确来说,这个系统是要LAMP环境(Linux + Apache+mysql(MariaDB)+PHP,不过后面zabbix的源里,有设置apache和php的依赖性安装,所以不需要手动提前安装,只要手动提前部署mysql(MariaDB)即可。

先安装部署mysql(MariaDB)

yum -y install mariadb* #加个*通配符,表示mariadb全部组件

安装完后,把mysql的服务给开起来,并设置为开机自启动

systemctl start mariadb #启动mariadb

systemctl enable mariadb #添加mariadb到开机自启动顺序里

好了,然后赶紧登陆上去MariaDB试试,顺带改个密码:

mysql -u root

用root用户登录到localhost的mysql(MariaDB),执行以下sql指令并退出

SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘Your_password’);

请将上面的Your_password改成你要设的密码!提示成功后退出

exit

接下来来安装zabbix的3.4版本+mysql数据库支持的源

rpm -i https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

以上地址可能会有变化,请参考官网给出的地址!

源添加成功后,使用yum工具来安装zabbix的相关组件

yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y

接下来来建立个初始化数据库

mysql -uroot -p

然后输入你的密码:

Your_password

严重警告:真的拿Your_password来当密码是个很不负责任的行为!请更改,不知道怎么做的话,可以采用Zabbix@公司英文名@日期的方式。

创建一下zabbix数据库:

create database zabbix character set utf8 collate utf8_bin;

然后把这个数据库授权给新建的zabbix账号

grant all privileges on zabbix.* to zabbix@localhost identified by ‘password‘;

请把password更换为zabbix用户的数据库密码!请不要不负责任的直接使用password当密码!要出事的!

然后退出数据库命令行模式

quit;

然后导入Zabbix模板和初始数据

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

这个-p参数后的是数据库名,请不要把这个-p zabbix错误的替换成-p password,照抄即可。

完事后,该编辑下Zabbix里面的数据库密码设置了。

文件路径:/etc/zabbix/zabbix_server.conf

修改内容为:

DBPassword=password

然后保存,再去修改php设置里面的时区地点参数。

文件路径:/etc/httpd/conf.d/zabbix.conf

内容:

php_value date.timezone Asia/Shanghai

然后启动zabbix相关服务,并把他们添加到linux开机自启动里面。

systemctl restart zabbix-server zabbix-agent httpd

systemctl enable zabbix-server zabbix-agent httpd

然后开放一下防火墙的80端口

firewall-cmd –zone=public –add-port=80/tcp –permanent

然后为了让规则生效,重启下防火墙

systemctl restart firewalld

接下来进行网页前端化安装

 

打开网页 服务器ip/zabbix  即可看到上面这个东西。点下一步安装

这些是安装前环境检查,确保你的生产环境符合安装要求。一步步按着来的话,这里应该是稳稳的全绿。继续下一步。

不稳的话请参照下面这个表进行排查,该表抄自官网。

Pre-requisite Minimum value Description
PHP version 5.4.0
PHP memory_limit option 128MB In php.ini:
memory_limit = 128M
PHP post_max_size option 16MB In php.ini:
post_max_size = 16M
PHP upload_max_filesize option 2MB In php.ini:
upload_max_filesize = 2M
PHP max_execution_time option 300 seconds (values 0 and -1 are allowed) In php.ini:
max_execution_time = 300
PHP max_input_time option 300 seconds (values 0 and -1 are allowed) In php.ini:
max_input_time = 300
PHP session.auto_start option must be disabled In php.ini:
session.auto_start = 0
Database support One of: MySQL, Oracle, PostgreSQL, IBM DB2 One of the following modules must be installed:
mysql, oci8, pgsql, ibm_db2
bcmath php-bcmath
mbstring php-mbstring
PHP mbstring.func_overload option must be disabled In php.ini:
mbstring.func_overload = 0
PHP always_populate_raw_post_data option must be disabled Required only for PHP versions 5.6.0 or newer.
In php.ini:
always_populate_raw_post_data = -1
sockets php-net-socket. Required for user script support.
gd 2.0 or higher php-gd. PHP GD extension must support PNG images (–with-png-dir), JPEG (–with-jpeg-dir) images and FreeType 2 (–with-freetype-dir).
libxml 2.6.15 php-xml or php5-dom
xmlwriter php-xmlwriter
xmlreader php-xmlreader
ctype php-ctype
session php-session
gettext php-gettext
Since Zabbix 2.2.1, the PHP gettext extension is not a mandatory requirement for installing Zabbix. If gettext is not installed, the frontend will work as usual, however, the translations will not be available.

接下来,设置下mysql(MariaDB)的信息,基本上改下密码就行,毕竟其他的我们都没改过。

这个是自定义Zabbix服务器相关信息的,这些信息修改为可选项,如果端口没冲突,你也没有必要非得去改它名字的话,那就懒得动了。

这个页面是设置信息回顾的(Review),如果没问题就直接下一步,有问题就回过去重新弄。

安装完毕,开始爽吧~

 

当然,也还有比较悲催没弄好用户权限的同学,导致这个配置页面没法正常被创建,就会看到下面这个画面。

那么,就按照这个来,点击蓝色字体下载那个配置用的文件,然后把它放到php文件夹下你放zabbix的位置。这个位置问你自己,因为权限报错说明文件夹是你自己建的,而不是zabbix生成。当然,你也可以把那个目录给chmod -R 777一下,不过把文件夹变成公共厕所的风险务必要自行承担!

接下来就是登陆了,默认用户Admin,默认密码zabbix。

Enjoy !

其他问题联系qq:1637999484 ,解答一些小问题。不过我自己也比较忙,不保证一定能给你解决问题。