zabbix+nginx+php7.0+debian9的部署方法

RT 官方建议apache2,然而并不想用apache2
数据库保持使用MySql,量小暂时没有PostgreSQL的需求
依旧是root账号,所以不带sudo

1、安装基础
这里比较偷懒就直接apt装nginx了,有版本需求自行编译,apt装好的nginx config在/etc/nginx下面,请注意

apt-get update
apt-get install nginx php7.0-fpm php7.0-mysql mysql-server

装完先放着

2、安装zabbix-server和anget(可选)

wget http://repo.zabbix.com/zabbix/3.4/debian/pool/main/z/zabbix-release/zabbix-release_3.4-1%2Bstretch_all.deb
dpkg -i zabbix-release_3.4-1+stretch_all.deb
apt-get update
apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent

安装完后可能会把apache2也给你装上了,删了删了

systemctl stop apache2.service
apt-get remove apache2
apt autoremove

然后继续放着

3、配置数据库

mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by '***YOURPASSWORD***';
quit;
cd /usr/share/doc/zabbix-server-mysql
zcat create.sql.gz | mysql -uzabbix -p zabbix

配置zabbix-server用的数据库,然后导入初始架构数据
mysql的root的密码默认跟随系统的root密码,而不再是安装的时候另外设置了

4、配置nginx和php-fpm

vim /etc/nginx/sites-enabled/zabbix.conf

server {
       listen 80;
        server_name  localhost;
        root   /usr/share/zabbix;


        location / {
                index  index.html index.htm index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /usr/share/nginx/html;
        }
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                include        fastcgi_params;
        }
}

php-fpm在apt安装的情况下默认就用的sock,所以不用改动,如果是其他安装方法的话请自行检查和修改

vim /etc/php/7.0/fpm/php.ini

max_execution_time = 300
max_input_time = 600
post_max_size = 32M
date.timezone = Asia/Tokyo

以上4条请用搜索功能寻找并修改

5、配置zabbix-server和agent

vim /etc/zabbix/zabbix_server.conf

DBHost=
DBName=
DBPassword=

以上3条请自行搜索并修改

vim /etc/zabbix/zabbix_agentd.conf

Server=
Hostname=

以上2条请自行搜索并修改

6、开机自动启动和启动服务并访问

systemctl enable nginx
systemctl enable php7.0-fpm
systemctl enable mysql
systemctl enable zabbix-server
systemctl enable zabbix-agent
systemctl restart nginx
systemctl restart php7.0-fpm
systemctl restart mysql
systemctl restart zabbix-server
systemctl restart zabbix-agent

写的比较糙,有些可能是需要restart

然后打开浏览器,http://yourdomain/setup.php 进入zabbix的配置页面,剩下的跟着流程走一遍即可~

PS:初始账号密码是 Admin和zabbix(账号注意大小写)

参考资料:
从部署包安装 Zabbix Documentation 3.4
ubuntu16.04 + ZABBIX + nginx & php-fpm

使用bird配置bgp网络互连

RT 借了一个asn和一个c段后,在vultr上学着配置了bgp互连和广播相关

其中涉及一些非技术向的内容,需要有一些耐心,系统依旧是debian 9 + root账号

1、申请广播
给vultr客服发工单,告知你要用bgp功能,他们会给你开通这个功能在你的面板上

拿到入口的url后,选择“我拥有私有asn”和“我拥有私有ip段”并输入你的as号和你的ip段落,并设置一个互连密码,然后写一封LOA(letter of authorization),模版如下:

AUTHORIZATION LETTER

今天的日期

To whom it may concern,

This letter serves as authorization for Vultr with 你的AS号 to announce the following IP address blocks:

你的ip段 / 你的as号

As a representative of the company Aiyun Technology Co.,Ltd that is the owner of the subnet and/or ASN, I hereby declare that I'm authorized to represent and sign for this LOA.

Should you have questions about this request, email me at 你的邮箱, or call: 你的电话

From,

你的名字
你的公司名
你的职位
你的电话

*(这个模版是vultr给我的,其他几家的话请自行向服务商索要,或者问清楚公司名后将vultr修改为你的提供商给你的名字)
用txt保存后,上传到附件上然后提交等待审核即可。

审核通过后,会在页面上显示两个确认身份的url,点击后会让你选择在whois上查询到的这个ip和这个asn的邮箱,选择后送信,然后等待邮件到达后,点击确认的链接确认即可。

确认完成后这一步就完成了。

2、配置广播

一般需要等待24-48小时,或者你发一个工单让他们提醒你,等他们通知你可用后,就可以开始配置了。

首先进入服务器的详情页面,最后面会多出来一个bgp选项卡,里面提供了vu的互连ip等信息,下面有一个配置模版可以打开(因为里面就是写好的配置文件,其实你直接复制都是可以的)

登陆服务器,安装bird

apt-get install bird

安装完成后先关闭掉服务

systemctl stop bird.service
systemctl stop bird6.service

然后修改配置文件

vim /etc/bird/bird.conf
router id <Instance里的ip>;

protocol bgp vultr
{
	local as <你的as号>;
	source address <Instance里的ip>;
	import none;
	export all;
	graceful restart on;
	multihop 2;
	neighbor <Vultr里的ip> as <Vultr里的as号>;
	password "<Vultr里的密码>";
}

protocol static
{
	route <你计划用的ip段>/24 via <Instance里的ip>;
}

protocol device
{
	scan time 5;
}

多台服务器的时候一定要提前规划好自己的ip划分并做好文档记录,要不然等以后再改会比较麻烦,用多少ip只需要修改static部分即可。

保存退出,然后启动bird

systemctl start bird.service

之后可以检查一下是否正常工作

birdc show proto all vultr

BIRD 1.4.5 ready.
name     proto    table    state  since       info
vultr    BGP      master   up     14:11:36    Established
  Preference:     100
  Input filter:   REJECT
  Output filter:  (unnamed)
  Routes:         0 imported, 581634 filtered, 1 exported, 0 preferred
  Route change stats:     received   rejected   filtered    ignored   accepted
    Import updates:         581674          0     581674          0          0
    Import withdraws:            2          0        ---     581675          0
    Export updates:              1          0          0        ---          1
    Export withdraws:            0        ---        ---        ---          0
  BGP state:          Established
    Neighbor address: 169.254.169.254
    Neighbor AS:      64515
    Neighbor ID:      169.254.169.254
    Neighbor caps:    refresh restart-able AS4
    Session:          external multihop AS4
    Source address:   203.0.113.123
    Hold timer:       208/240
    Keepalive timer:  57/80

(输出信息参考了vultr的官方docs:Configuring BGP on Vultr)
重点查看info应该是Established状态

之后进行系统里ip的配置

ip addr add <你的ip>/24 dev <你的网卡名字>

然后可以查看一下是否生效:

ip addr

如果里面有你刚才添加过的地址即为生效

然后就可以从公网ping一下看一看,正常情况下就已经通了

为了方便我们也可以直接写一个永久的到interfaces里面

vim /etc/network/interfaces
auto <网卡名>:1
iface <网卡名>:1 inet static
        address <你的ip>
        netmask <子网掩码>

完成后保存退出即可,可以直接用ifup立刻启动起来

以上就是配置的全部教程~

解决提示Please check that your locale settings的问题

RT,有时候改了区域或者终端配置不合适的时候都可能会遇到这个问题
大致显示这些内容:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE =
etc...

有一个比较简单的办法即可解决:

在~/.bashrc里加一行设置

vim ~/.bashrc

export LC_ALL=C

保存退出后重新进入终端即可

Debian9下部署OpenLDAP+slapd+phpLDAPadmin(nginx+php7环境)

RT 需要研究一下这个东西所以就装一下

1、改计算机名
debian下安装的时候默认会取机器名作为domain name,所以为了方便我们先改一下机器名称为所需的
在hosts里也可以添加一下机器名称,以及对应的外部ip地址到机器名称上

vim /etc/hostname

vim /etc/hosts

2、安装组件

apt-get install slapd ldap-utils

安装完成后去改一下配置文件,添加base和uri两个数值到文件的底部即可

vim /etc/ldap/ldap.conf

BASE     dc=domain,dc=com
URI     ldap://1.1.1.1:389

保存后我们再对slapd进行配置

dpkg-reconfigure slapd

依次问的问题是:
是否忽略OpenLDAP的设置
DNS Domain name (DN)
Organization name (ON)
管理员密码
重复密码
选择数据库
slapd被删除时是否要删除数据库
移走老数据库
(可能会有)是否兼容LDAPv2协议

全部配置完毕后可以输入slapcat查看一下输出信息来确认是否正确

3、安装nginx和php7.0
nginx可参照这里:编译安装带有RTMP模块的nginx
或者直接apt-get安装也可(如果没啥特殊需求的话)

apt-get install nginx

php就比较简单了,直接安装即可

apt-get install php7.0-fpm

4、安装phpLDAPadmin

查了一下本来是可以apt安装的,但是因为某些原因debian9的库里剔除了这个包,所以我们需要手动下载,这里先留一下apt的安装方式,然后下面跟着手动安装的方式

apt-get install phpldapadmin

访问http://ftp.jp.debian.org/debian/pool/main/p/phpldapadmin/来查看最新版本,目前是1.2.2-6.1
	
wget http://ftp.jp.debian.org/debian/pool/main/p/phpldapadmin/phpldapadmin_1.2.2-6.1_all.deb

dpkg -i phpldapadmin_1.2.2-6.1_all.deb

5、配置phpLDAPadmin

修改配置文件:

vim /etc/phpldapadmin/config.php

(1) $servers->setValue('server'. 'host', '127.0.0.1')
#修改为某个内网可访问的IP地址

(2) $servers->setValue('server'. 'base', array('dc=example,dc=com')) 
#修改为baseDN

(3) $servers->setValue('login', 'bind_id', 'cn=admin,dc=example,dc=com')
#修改为baseDN下的admin

(4) $config->custom->appearance['hide_template_warning'] = false 
#false修改为true(这一行可能是注释着的,记得删掉开头的注释)

6、写nginx和php配置文件

vim /etc/php/7.0/fpm/php-fpm.conf

结尾加上:
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
listen.backlog = -1

可以选择使用套接字来降低TCP的利用:
listen = /run/php/php7.0-fpm.sock


vim /etc/nginx/nginx.conf

server {
server_name ldap.yourdomain.com 1.1.1.1;
listen 80;

# document root
root /usr/share/nginx/html/;
index index.php index.html index.htm;
#
#  # application: phpldapadmin
  location /phpldapadmin {
  alias /usr/share/phpldapadmin/htdocs;
  index index.php index.html index.htm;
  }
  location ~ ^/phpldapadmin/.*\.php$ {
  root /usr/share;
  if ($request_filename !~* htdocs) {
  rewrite ^/phpldapadmin(/.*)?$ /phpldapadmin/htdocs$1;
  }
# fastcgi_pass unix:/run/php/php7.0-fpm.sock; #这里可选使用套接字,需要配合php-fpm一起修改
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $request_filename;
  include fastcgi_params;
  }

#  # logging
  error_log /var/log/nginx/phpldapadmin.error.log;
  access_log /var/log/nginx/phpldapadmin.access.log;
  }


systemctl restart php7.0-fpm.service
systemctl restart nginx.service

一切正常的话应该就可以通过浏览器访问了,地址是:http://yourdomain.com/phpldapadmin/

7、检查和添加数据
可以通过ldapseach来检查结构,例如

ldapsearch -x -LLL -H ldap:/// -b dc=yourdomain,dc=com
ldapsearch -x -LLL -h 1.1.1.1 -p 389 -b dc=yourdomain,dc=com

创建一个新的结构,保存成.ldif文件并利用ldapadd命令将数据添加入数据库

vim structure.ldif

dn: ou=office,dc=yourdomain,dc=com
objectClass: organizationalUnit
ou: office

ldapadd -x -D cn=admin,dc=yourdomain,dc=com -W -f structure.ldif

会提示输入密码,导入完成后可以查询来验证一下

ldapsearch -x -LLL -h 1.1.1.1 -p 389 -b dc=yourdomain,dc=com objectClass=*

参考:
Ubuntu下OpenLDAP的安装及配置
https://linoxide.com/linux-how-to/install-openldap-phpldapadmin-nginx-server/
完整版的OpenLDAP搭建全过程

解决debian9下vim内鼠标右键不能粘贴的问题

RT debian9开始,vim右键会变成— (insert) VISUAL —的状态,没法粘贴很不方便。

解决办法:

vim /usr/share/vim/vim80/defaults.vim

查找 set mouse
if has('mouse')
  set mouse=a
endif

将值从"a"改成"r"
if has('mouse')
  set mouse=r
endif

然后保存退出即可,下次启动vim即生效

debian9下部署Asterisk

社内需要使用这个东西来升级一下电话系统,所以研究了一下
目前只设定到了内线部分,外线目前还未测试

依旧是root下设置,不带sudo命令

1、安装Asterisk
已经很简单了,apt-get即可满足,但是会安装很多依赖,约330M,需要一点时间
另外,这里面有一个不小的坑:如果考虑复用服务器的话,强烈建议先安装openssl,asterisk需要的其中一个依赖是libssl1.1,这个包含在openssl里

apt-get install openssl
apt-get install asterisk

2、配置Asterisk
先跳到配置文件夹并备份默认配置,我们自己写即可

cd /etc/asterisk
mv sip.conf sip.conf.bak
mv extensions.conf extensions.conf.bak

然后我们自己写一个简单的配置

vim sip.conf

[general]
context=default
port=5060
bindaddr=0.0.0.0
;nat=yes

[101]
type=friend
defaultuser=101
secret=password1
host=dynamic
canreinvite=no

[102]
type=friend
defaultuser=102
secret=password2
host=dynamic
canreinvite=no

这里user直接以内线编号为账号方便记忆,而且考虑到最后设置ip话机的时候是直接在座位上配置所需的内线,所以也好配置

vim extensions.conf

[default]

exten => 101,1,Dial(SIP/101,30,r)
exten => 101,2,Hangup()

exten => 102,1,Dial(SIP/102,30,r)
exten => 102,2,Hangup()

这里是设置被呼叫到后的规则,可以设置等待时间、呼叫时播放的声音等,也可以用一些标志来指代部分或者全体,例如:

exten => _10X,1,Dial(SIP/${EXTEN},30,r)
exten => _10X,2,Hangup()

这里指100~109之间的所有号码,同理,改成1XX的话则是指100~199之间的所有号码

另附:Asterisk的命令行管理相关

进入控制台:asterisk -crvvv
查看已登录用户:sip show peers
查看详细信息:sip show ****
重新加载sip:sip reload

参考:
UbuntuでAsteriskを構築し「ブラステル」を登録する(CuBox-i2使用)
もうハマらない!Twilio × Asteriskで普通の外線電話を作る
Asterisk chinese voicemail intro
Asterisk multi-language
asterisk 之 IVR 设置中英文语言选择 (dialplan)
Asterisk基本設定ガイド!

debian 9 安装GNOME&VNC环境

RT 为了方便划水工作,需要装一个GUI和一个VNC服务端

参考了这篇文章,并根据实际情况进行了调整(允许root登陆),顺带一提,这里也有CentOS的操作指南。

全程依旧使用root账号,所以不带sudo命令

1、安装gnome3 vncserver和ibus

apt-get install gnome-core ibus vnc4server

即使是core下也需要300M和较长时间来完成,可以先喝杯水,休息一下。

2、配置gnome
在home下多了一个.vnc文件夹,进去编辑一下配置文件后保存退出。

vim xstartup
unset DBUS_SESSION_BUS_ADDRESS
/usr/bin/ibus-daemon -d

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
gnome-session &

配置一下来允许root登陆

vim /etc/gdm3/daemon.conf

找到[security]这一行
添加以下内容后保存退出:

AllowRoot=true

然后编辑一下策略:

vim /etc/pam.d/gdm-password

找到这一行,注释掉,保存退出:

#auth required pam_succeed_if.so user != root quiet_success

最后重起服务,顺带一提,都debian9了,习惯一下新的命令吧:

systemctl restart gdm3

3、配置vnc

vim /etc/vnc.conf

最末尾有一个”1;”删掉
然后找到如下并修改成所需后保存退出(修改了分辨率,以及默认不只有localhost可以访问vnc)。

$geometry = "1280x720"
$localhost = "no"

4、启动vnc
默认端口是从5901开始,如果什么参数都不加的话则从5901依次开始。

vncserver

第一次启动会要求设置vnc访问密码

5、停止vnc

vncserver -kill :1

编译安装带有RTMP模块的nginx

RT,这个参照了obs的论坛上的帖子,然后把其中可能遇到的坑也总结了进来,从0开始编译,系统为Debian9,root账户
1、搞一下编译环境

apt-get install git build-essential openssl nginx libpcre3 libpcre3-dev unzip libssl-dev

编译并安装zlib

wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install

编译并安装nginx

wget https://nginx.org/download/nginx-1.14.0.tar.gz #nginx
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip #nginx-rtmp模块
tar -zxvf nginx-1.14.0.tar.gz
unzip master.zip
cd nginx-1.14.0
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master --with-http_v2_module
make
make install

(你问我为啥要编译http2?万一以后你要用咋办,以后要用的时候省事啊)
写配置文件,这一行直接在nginx.conf的最后一个大括号之外贴上即可,具体功能可按照git上的说明来进行调整

rtmp {
        server {
                listen 1935;
                chunk_size 4096;
                application live {
                        live on;
                        record off;
                }
        }
}

实际使用方法:
按照上面的参数,URL默认格式是rtmp://yourdomain/live/***
星号内是自定义内容,可以理解为部分应用上所说的密码
另外,部分推流软件不允许密码空着(例如obs,空着会推不上去流),这时候就应该把地址拆成两份填写

流媒体地址:rtmp://yourdomain/live
密码:***

注意:流媒体地址的最后结尾不要加斜杠,系统会自动帮你加
最后,加一个nginx自启动吧

systemctl enable nginx.service #开启自启动
systemctl disable nginx.service #关闭自启动

参考链接:
How to set up your own private RTMP server using nginx
Installing NGINX Open Source
nginx-rtmp-module

debian下搞个smb服务(samba)

RT 总归有这方面需求 一如既往搞完后就写个博客做个笔记
系统依旧root,就不sudo了,debian 8.6的系统~
smb安装和配置其实异常的简单,配置文件也很容易懂~
安装还是蛮简单的 反正需要的都会一并帮你装好

apt-get install samba

装完后直接vim /etc/samba/smb.conf
这里面有详细的设置说明,或者也可以复制粘贴我下面提供的一个比较基本但是可以起来的配置:

[global]
workgroup = WORKGROUP
encrypt passwords = yes
public = no
security = user
log file = /var/log/samba/log.%m
[storage]
comment = Storage
path = /var/storage
public = no
writable = yes

这个感觉写得很简单了,基本都能看得懂上面的意思吧。。。按需修改就好了,完事保存退出
然后创建个user,这一步比较蛋疼 需要先建立一个实体账户,然后添加到允许列表里才能使用,也可能是我姿势不对没创建成功虚拟账户。。。如果有大佬可以解释一下的话还请说明~

useradd storage

为了安全,创建好后vim /etc/passwd
找到storage账户 改成/usr/sbin/nologin 保存退出
然后smbpasswd -a storage
输入一个smb用的登录密码 需要输入两次
最后重启一下服务器就好了,这里我遇到了service不可用的情况 所以用了如下:

/etc/init.d/samba restart

都ok了后就可以使用了,测试一下吧~