特色

欢迎来到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 ,解答一些小问题。不过我自己也比较忙,不保证一定能给你解决问题。

重启后docker没法进行操作, 报 Cannot connect to the Docker daemon. Is the docker daemon running on this host?

因为Docker 运行的gitlab 把内存用光了,重新启动了下机器,然后多分了点内存给这台虚拟机,然后准备 docker start gitlab,结果报错

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

然后才想起来,我擦。。。docker服务没有开机自启动,于是开一下docker的service

service docker start

或者

systemctl start docker

以上为centos/red hat 系列服务器指令。Ubuntu自查。

要是避免下次出这个问题,则需要添加到开机启动里。

systemctl enable docker