lyx

  • 嵌入式
  • 运维
  • 笔记
  • 关于
所有文章 友链 关于我

lyx

  • 嵌入式
  • 运维
  • 笔记
  • 关于

Postfix服务

2017-03-15

#YSU-Linux运维笔记模板V3.0

编辑软件:MarkdownPad2

撰写人员:Kali

撰写日期:2017年3月5日

联系作者:cyysu.github.io@gmail.com

友情提示:文章内容如有不对,欢迎指正。


1 开篇的话

1.1 学习方法

学习Linux服务的大体流程如下

    了解服务的作用:名称,功能,特点
    安装
    配置文件位置,端口
    服务启动关闭的脚本
    此服务的使用方法
    修改配置文件,实战举例
    排错(从下到上,从内到外)

2 Postfix服务

2.1 简介

postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。
在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真是一个让人吃惊的数字。
Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性

其它邮件服务器:
Sendmail、Qmail、Postfix
Sendmail的不足
 第一个重要的缺点是它的安全性较差,这是因为当其作者Eric Allman最初开始写作这个软件的时候,Internet的用户还很少,因而安全性并不没有得到大家的重视。
由于邮件系统需要处理的是外部发送来的各种各样的信息,甚至包含一些恶意数据,然而sendmail在大多数系统中都是以root身份运行,一旦出现问题,就会对系统安全造成严重影响。在这种情况下,要防止出现安全问题,仅仅依赖程序本身是不可取的,应该从系统结构出发,使程序拥有的特殊权限限制到最小。
第二个,使用Sendmail还会遇到的另一个问题是它的设置相当复杂,对于使用缺省设置来收发电子邮件,问题并不存在。当管理员打算进行一些特殊设置,以便利用Sendmail提供的复杂邮件处理能力时,就不得不面对复杂的宏和正则表达式。

Qmail可以替代Sendmail
Qmail,为了解决sendmail的安全问题,整个系统结构需要重新设计。基本的原则是将系统划分为不同的模块,有负责接收外部邮件的,有管理缓冲目录中待发送的邮件队列的,有将邮件发送到远程服务器或本地用户的。Qmail就是按照这个原则进行的设计,它由多个不同功能的小程序组成,只有必要的程序才是setuid程序(即以root用户权限执行),这样就减少了安全隐患,并且由于这些程序都比较简单一些,因此就可以达到较高的安全性。


今天的主角:
另一种替换软件:Postfix  可以替代sendmail
  Postfix同样也是采用了模块化的方式,但与Qmail不同的是,Postfix使用了一个主控进程进行监控。Postfix在很多方面都考虑到了安全问题,它甚至不向root分发电子邮件,以避免以root身份读写文件或启动外部程序。考虑到它的作者Wietse Venema曾编写了著名的安全软件TcpWrapper,Postfix的安全性是非常值得信赖的。
Postfix的性能也非常不错,甚至在Qmail作者自己进行的测试中也表明,Postfix的性能和Qmail基本相当。postfix在性能上大约比sendmail快三倍。


Dovecot: 邮件接收服务器:
    Dovecot 是一个开源的 IMAP 和 POP3 邮件服务器,支持 Linux/Unix 系统。
    POP / IMAP4 是 MUA 从邮件服务器中读取邮件时使用的协议。
    POP3 是从邮件服务器中下载邮件存起来,IMAP 则是将邮件留在服务器端直接对邮件进行管理、操作。比POP3更先进。
    由 Timo Sirainen 开发,最初发布于 2002年7月。作者将安全性考虑在第一,所以 Dovecot 在安全性方面比较出众。
    IMAP4是TCP/IP协议族中的一员,现在的版本是“IMAP第四版第一次修订版”。
    一个完整的邮件服务器由以下内容构成:

    postfix(作为发送邮件服务器)+dovecot(作为接收邮件服务器)+mysql(作为数据库)

    可以通过foxmail或outlook客户端。也可以通过网页来收邮件。



    邮件服务协议和端口:

        25 端口:SMTP协议。
            SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
        作用:此协议主要用来发送或中转邮件。SMTP协议属于TCP/IP协议簇,

        邮件服务中:
            发送: 指的是同属于163邮件服务器两人相互发送邮件。
            中转: 使用163邮箱给QQ邮箱发送邮件。

        24端口:LMTP(Local Mail Transfer Protocol)[1],是本地邮件传输协议,与SMTP类似,但不支持邮件队列(queue),主要应用于非广域网的邮件网关。


        110端口:POP3协议
            POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收邮件的协议。
        还有POP2协议。


        143端口:IMAP
            IMAP: (Internet Mail Access Protocol Internet邮件访问协议) 。IMAP是斯坦福大学在1986年开发的一种邮件获取协议。它的主要作用是邮件客户端(例如Outlook)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。

        当前的权威定义是RFC3501。IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。他们之间的区别如下:

pop3和IMAP的区别
邮件的工作流程

1:发件人写邮件,通过客户端连接邮件服务器,这个之间使用了 SMTP 协议链接!用
户就是 SMTP  客户端,发送服务器就是我们这儿的 SMTP 服务器!
2:SMTP  检查我们进入的邮件,将其放到邮件缓冲队列中,等待发送到接受服务器中, 这里要注意,postfix 在这里会检查我们是是否发给自己,若是发给自己的,那么就直接进入 了我们服务器自己的 mailbox!
3:发送服务器此时充当 SMTP 客户端,接受服务器充当 SMTP 服务端,建立 TCP 链接, 将邮件发送的接受服务器!
4:接受服务器收到邮件之后,把邮件里面的内容读取,如收件人信息   to:……
5:收件人打开客户端,使用 POP3 或者 IMAP 协议收取邮件并读取!

2.2 服务安装、启动和配置

服务安装

    在安装之前首先要检查一下系统是否已经安装了Sendmail。

        rpm -qa | grep sendmail     #查看是否安装 sendmail
        yum remove sendmail -y      #卸载 sendmail

    下面就开始安装服务
         yum install -y postfix dovecot



服务启动、端口检测和加入开机启动项

    service postfix restart
    chkconfig postfix  on
     netstat -antup | grep 25

服务配置

    /etc/postfix/main.cf     #主配置文件位置
    /var/log/maillog         #日志文件位置
    /var/spool/mail/         #邮件存放位置,对应有相应用户名

配置文件部分参数

    [root@xuegod63 ~]# cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
    [root@xuegod63 ~]# vim /etc/postfix/main.cf
    queue_directory = /var/spool/postfix   #队列目录
    command_directory = /usr/sbin     #命令位置目录
    mail_owner = postfix              #postfix运行身份
    myhostname = xuegod63.cn        #发送邮件时的名字,服务器名字
    mydomain = xuegod63.cn           #邮件域,用于接受的时候用
    myorigin = $mydomain             #我来自哪儿,别人收到的时候知道是我发送的
    inet_interfaces = localhost          #邮件接受监控的地址
    inet_protocols = all                #启用IPV4和IPV6
    mydestination = $myhostname, $mydomain, localhost          #服务器负责那些域
    mynetworks = 192.168.0.0/24, 127.0.0.0/8                 #指定允许使用的IP地址段
    alias_maps = hash:/etc/aliases                             #对某一个用户发,里面的人都可以收到邮件
    alias_database = hash:/etc/aliases
    #home_mailbox = Mailbox                                   #收件箱存放位置

3 精彩案例

3.1 配置postfix邮件服务器,实现邮件发送功能。

修改主机名和对应关系:
[root@xuegod63 postfix]# hostname
xuegod63.cn
[root@xuegod63 postfix]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63   xuegod63.cn
192.168.1.64   xuegod64.cn

vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=xuegod63.cn

[root@xuegod63 ~]# vim /etc/postfix/main.cf
需要启用和修改的项:
myhostname = xuegod63.cn  #指定邮件服务器名字,接收用来识别的,也就是一个标识
mydomain = xuegod63.cn   #邮件域
myorigin = $mydomain  #启用,去掉注释,发信地址,此设置显示为@xuegod63.cn
inet_interfaces = all  #对外提供MTA服务设置为监听所有网卡,默认只监听本地
#inet_interfaces = localhost  #这个注释起来,是默认值,只监控本地
mydestination = $myhostname, localhost.$mydomain, localhost  #此行不用改,但是要说明,这是代表邮件服务器负责的那些域
mynetworks_style = subnet #允许转发的来源网段,可选subnet子网,class网段,host本机
mynetworks = 192.168.0.0/24, 127.0.0.0/8 #用户允许的使用的IP地址段
relay_domains = $mydestination  #允许转发的目标域
local_recipient_maps =  #含有所有本地邮件地址的查询表.SMTP server借此拒收外界寄给不明用户的邮件,启用即可
alias_maps = hash:/etc/aliases  #对某个用户发,文件中的用户都可以收到邮件,别名组
alias_database = hash:/etc/aliases  #别名数据库
smtpd_banner = $myhostname ESMTP "Welcome XueGod63.cn STMP Server"  #自定义服务器信息

重启服务:
[root@xuegod63 ~]# service postfix start
[root@xuegod63 ~]# netstat -antup | grep 25


测试:

    mail -s 'Postfix1' 3402301871@qq.com < /etc/hosts
    tail -f /var/log/maillog
    在postfix的日志里:
    如果status=sent表示已经成功发送。removed表示从队列中删除发送的邮件
    如果status= deferred表示延期,需要重试,当重试到一定次数,还失败就抛弃
  • CentOS6.8
  • Postfix服务
  • oldLinux

展开全文 >>

自动化部署

2017-03-15

#YSU-Linux运维笔记模板V3.0

编辑软件:MarkdownPad2

撰写人员:Kali

撰写日期:2017年3月5日

联系作者:cyysu.github.io@gmail.com

友情提示:文章内容如有不对,欢迎指正。


PXE简介

严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。

协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。

运行 PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。
此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

KickStart

KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。

这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

PXE + KickStart安装需要准备内容

DHCP 服务器用来给客户机分配IP;
TFTP 服务器用来存放PXE的相关文件,比如:系统引导文件;
FTP 服务器用来存放系统安装文件;
KickStart所生成的ks.cfg配置文件;
带有一个 PXE 支持网卡的将安装的主机;

##以上的基础知识已经讲完,现在就让我们动手来实践一下吧!

配置基本环境

安装ftp服务

yum install vsftpd -y
/etc/init.d/vsftpd start
chkconfig vsftpd on

安装tftp服务

yum install tftp tftp-server xinetd -y


配置tftp服务器:
vim /etc/xinetd.d/tftp
修改配置文件里面的13,14行.改成以下内容:

disable = no
server_args = -s /tftpboot  # 表示服务器默认的目录是 /tftpboot

启动服务
/etc/init.d/xinetd restart
lsof -i :69    #查看69端口正在被哪个进程使用
netstat -antup | grep 69   #这种方法,只能看到xinetd进程

安装dhcp服务

yum install dhcp* -y

配置DHCP服务器:
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

在配置DHCP服务器的时候可以不用在加一张网卡,可以直接使用本机的网卡。这里为了使用Xshell在加一张网卡,但是和实际中都是一样的。

给DHCP服务器添加一张VMNET4网卡,ip设置为192.168.1.10(只要是1网段都行)
ifconfig eth1 192.168.1.10/24


vim /etc/dhcp/dhcpd.conf  #这里为了简便,只保留一个subnet {。。。} ,取掉其它subnet,改成如下内容:


subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.100 192.168.1.200;
 option domain-name-servers 192.168.1.1;
  option domain-name "internal.example.org";
  option routers 192.168.1.1;
  option broadcast-address 192.168.1.255;
  default-lease-time 600;
  max-lease-time 7200;
  next-server 192.168.1.10;
  filename "pxelinux.0";
}


在配置上面的文件的时候一定要注意每行的结尾处要加上分号。配置完,先不启动DHCP ,等所有的软件安装好,最后来启动。

安装PXE

yum -y install system-config-kickstart  #安装此包时,会把syslinux软件包也安装上。

准备tftp需要共享出去的文件

mount /dev/sr0 /media/

mkdir /tftpboot
mkdir /tftpboot/pxelinux.cfg
cp /usr/share/syslinux/pxelinux.0     /tftpboot/
cp /media/images/pxeboot/initrd.img /tftpboot/
cp /media/images/pxeboot/vmlinuz     /tftpboot/
cp /media/isolinux/isolinux.cfg     /tftpboot/pxelinux.cfg/default
chmod 644 /tftpboot/pxelinux.cfg/default


修改default,指定安装操作系统的方式和ks.cfg文件路径
vim /tftpboot/pxelinux.cfg/default
#修改第1行 改为 default  linux,后面的linux意思是寻找下面18行的label linux
然后修改下22行(即在后面添加ks=ftp://192.168.1.10/ks.cfg)
第22行的意思是使安装程序通过FTP服务器访问kickstart文件

制作kickstart安装向导

 yum install system-config-kickstart -y
 LANG=zh_CN.UTF-8
 system-config-kickstart  #执行system-config-kickstart弹出来界面。
    1.设置下默认安装的语言,时区,根口令,然后勾选下面的安装后重新引导
    2.配置ftp服务器的安装方法。修改FTP服务器和FTP根目录为/pub
    3.配置grub相关选项
    4.设置分区
    5.配置网络,默认没有网络设置,点击添加网络,设备名称为eth0,网络类型为dhcp
    6.验证,默认就可以了。
    7.防火墙和selinux根据自己需求选择开启或者禁用。我选择关闭selinux。启用防火墙。
    8.安装图形环境选择禁用
    9.自定义软件包。默认可能没有勾选桌面。根据自己需求勾选。 我们为了快速度演示安装,不选择安装桌面。
    10.安装脚本:在"预安装脚本","安装后脚本"对话框中,可以分别添加在安装前、安装后自动动行的可执行语句。此项设置可以使服务器自动化配置变得更加容易。
    11.保存文件 -> 点击左上角的文件选择保存,选择下保存的路径
cp ks.cfg /var/ftp  #复制ks.cfg文件到/var/ftp目录下
注:ks.cfg就是无人值守安装时要用的Kickstart文件。
要对应:/tftpboot/pxelinux.cfg/default文件中设置过ks=ftp://192.168.1.10/ks.cfg
mount /dev/sr0 /var/ftp/pub             #挂载RHEL6安装光盘到/var/ftp/pub目录下
建议关闭防火墙和selinux,
如果没有关闭的话,tftp服务会有问题。
[root@xuegod63 ~]# getenforce
Disabled
设置防火墙:
#iptables -F
#service iptables save
配置两台机器的网络模式为:VMnet4
给server 设置一个和DHCP 定义相同网段的IP

#现在接下来就是启动DHCP,设置为开机启动
/etc/init.d/dhcpd start
chkconfig dhcpd on
修改另一台机器的BIOS启动顺序为网络优先,加电后开始启动。

整个过程工作原理

工作原理

  • CentOS6.8
  • 自动化部署
  • oldLinux

展开全文 >>

SSH服务

2017-03-15

Linux运维笔记(就老男孩运维28期、马哥教育、学神IT、老段带你学Linux、Linux-Cast整理而来)

声明

  • “-“ 后面接的是段落小节标题
  • 笔记按照服务一般配置整理
  • 本文采用软件为 MarkdownPad2进行编辑
  • 本文记录时间 2017-02-27 10:24:24
  • 请将本文ip替换成自己的ip

本文大纲

1.开篇的话
2.SSH服务
3.排错
4.SSH调优

1.开篇的话

学习Linux服务的大体流程如下

    了解服务的作用:名称,功能,特点
    安装
    配置文件位置,端口
    服务启动关闭的脚本
    此服务的使用方法
    修改配置文件,实战举例
    排错(从下到上,从内到外)

2.SSH服务

- 了解服务

SSHD服务,在我们的linux服务器上经常用到,很重要,涉及到服务器的安全,对这个服务的安全配置要高度重视

SSH 协议:安全外壳协议。为 Secure Shell 的缩写。SSH 为建立在应用层和传输层基础上的安全

sshd服务使用SSH协议可以用来进行远程控制, 或在计算机之间传送文件相比较之前用telnet方式来传输文件要安全很多,因为telnet使用明文传输,是加密传输。

- 服务安装

第一步 : 准备安装的软件包
        openssh-5.3p1-114.el6_7.x86_64:包含OpenSSH 服务器及客户端需要的核心文件
        openssh-clients-5.3p1-114.el6_7.x86_64:OpenSSH 客户端软件包
        openssh-server-5.3p1-114.el6_7.x86_64:OpenSSH 服务器软件包
        openssh-askpass-5.3p1-114.el6_7.x86_64:支持对话框窗口的显示,是一个基于X 系统的密码诊断工具

第二步 :安装软件
        1.使用yum安装
            yum list all | grep openssh         # 查看是否有需要的软件包
            yum install openssh* -y             # 安装
        2.使用rpm安装
            rpm -ivh /media/cdrom/Packages/openssh*.rpm

        这里推荐使用yum安装

第三步: 检查软件是否安装
        rpm -qa | grep openssh                     #查看软件包
        rpm -ql openssh                         #查看软件安装目录
        netstat -ntulp | grep 22                #通过端口查看软件是否开启

第四步: 启动服务
        service sshd restart                    #重启服务
        chkconfig sshd on                         #加入开机自启
        chkconfig --list sshd                    #查看是否配置开机自启成功



第五步: 远程登陆
        1.ssh  [远程主机用户名] @[远程服务器主机名或IP地址]
            ssh 192.168.200.100
            ssh root@192.168.200.100
            ssh root@192.168.200.100 -p 22
            ssh -l root 192.168.200.100            #注意没有@符号
        2.第一次登录服务器时系统没有保存远程主机的信息,为了确认该主机身份会提示用户是否续连接,输入yes 后登录这时系统会将远程服务器信息写入用户主目录下的$HOME/.ssh/known_hosts 文件中,下次再进行登录时因为保存有该主机信息就不会再提示了

        3.远程登录以普通用户登陆
            useradd cat && echo 123456 | passwd --stdin cat
            ssh -l cat 192.168.200.100

- 配置文件

OpenSSH 配置文件
    OpenSSH 常用配置文件有两个 /etc/ssh/ssh_config 和 /etc/sshd_config
        ssh_config 为客户端配置文件
        sshd_config 为服务器端配置文件

服务脚本 线上一般配置(实战)

常用的启动脚本主要有以下两个
    /etc/init.d/sshd restart/stop/start/status
    service sshd restart/stop/start/status

注意事项

1.参数前面有#,表示是默认值。当然#号也表示注释
2.登录系统的默认日志存放在哪?
    sshd服务日志存放在: /var/log/secure
    由于这个文件/etc/rsyslog.conf  定义的sshd服务的日志存放位置?
        # The authpriv file has restricted access.
        authpriv.*                                              /var/log/secure
3.修改配置文件要重启服务

/etc/ssh/sshd_config 配置文件

1.Port 22  ->  设置sshd 监听端口号
    # SSH 预设使用 22 这个port,也可以使用多个port,即重复使用 port 这个设定项目!
    # 例如想要开放 sshd 端口为 22和 222 ,则多加一行内容为: Port 222  即可
    # 然后重新启动 sshd 这样就好了。 建议大家修改 port number 为其它端口。防止别人暴力破解。
2.ListenAddress 0.0.0.0  ->  设置sshd监听ip地址
    # 设置sshd 服务器绑定的IP 地址,0.0.0.0 表示侦听所有地址
    # 比如192.168.0.63 这个机器只允许0.64来远程登录,那么可以设置
    # ListenAddress 192.168.0.64
3.Protocol 2  ->  设置sshd的协议的版本号
    # 选择的 SSH 协议版本,可以是 1 也可以是 2 ,CentOS 5.x 预设是仅支援 V2。 安全考虑,设置为最新的协议版本
4.#HostKey /etc/ssh/ssh_host_key  ->  设置sshd登陆密钥文件
    # 设置包含计算机私人密匙的文件
5.SyslogFacility AUTHPRIV    ->    设置日志登陆信息
    # 当有人使用 SSH 登入系统的时候,SSH 会记录信息,这个信息要记录的类型为AUTHPRIV。
6.#LogLevel INFO
    # 登录记录的等级!INFO级别以上。
    [关于系统日志的文章](http://blog.csdn.net/beckdon/article/details/32696047 "Linux系统日志")

涉及到安全调优的配置选项

7.LoginGraceTime 2m       #grace 优雅
# 当使用者连上 SSH server 之后,会出现输入密码的画面,在该画面中,
# 在多久时间内没有成功连上 SSH server 就强迫断线!若无单位则默认时间为秒! 可以根据实际情况来修改实际

8.# PermitRootLogin yes
# 是否允许 root 登入!预设是允许的,但是建议设定成 no!真实的生产环境服务器,是不允许root账号登陆的!!!


9.PasswordAuthentication yes
# 密码验证当然是需要的!所以这里写 yes,也可以设置为no。在真实的生产服务器上,根据不同安全级别要求,有的是设置不需要密码登陆的,通过认证的秘钥来登陆

10.# PermitEmptyPasswords no
# 若上面那一项如果设定为 yes 的话,这一项就最好设定为 no ,
# 这个项目在是否允许以空的密码登入!当然不许!

11.# PrintMotd yes
# 登入后是否显示出一些信息呢?例如上次登入的时间、地点等等,预设是 yes
# 亦即是打印出 /etc/motd 这个文档的内容。
例:给sshd服务添加一些警告信息
    cat /etc/motd
    echo 'Warning ! From now on, all of your operation has been 4record!'> /etc/motd
测试:
    ssh 192.168.0.64
    root@192.168.0.64's password:
    Last login: Thu Jun 23 14:02:38 2016 from 192.168.0.1
    Warning ! From now on, all of your operation has been record!

12.# PrintLastLog yes
    # 显示上次登入的信息!预设也是 yes  !
    例:
    ssh 192.168.0.63
    Last login: Tue Nov  4 19:57:31 2014 from 192.168.1.107  #就是这个信息

13.# UseDNS yes
     # 一般来说,为了要判断客户端来源是正常合法的,因此会使用 DNS 去反查客户端的主机名
     # 不过如果是在内网互连,这项目设定为 no 会让联机速度比较快。

3.排错

1.防火墙和selinux关闭
2.软件是否安装、服务是否开启以及端口是否在监听
3.配置文件是否修改  比如 端口号
4.分析日志文件

4.SSHD防止暴力破解

配置文件

1.通过修改配置文件,密码的长度最好大于20位密码复杂度要尽可能有数字、大小写字母和特殊符号混合组成(kepass软件记录软件)

2.修改默认端口号

3.不允许root用户登陆

4.不允许密码登陆,只能通过密钥登陆系统客户端生成密钥对,然后将公钥上传到服务器   ssh-keygen创建私钥默认放在 /root/.ssh/id_rsa,并且需要设置密码来保护客户端私钥的密码,公钥保存在/root/.ssh/id_rsa.pub

    >传输方法    ssh-copy-id -i 服务器
    >在服务器上,服务器会将其替换成了.ssh/authorized_keys和在客户端上的公钥一致

开源防护工具 fail2ban

fail2ban可以监视你的系统日志,然后匹配日志的错误系你想执行相应的屏蔽工作,而且可以发送e-mail通知系统管理员,工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。 使用该软件iptables必须要开启,如果ssh配置文件中的端口号发生改变需要更改/etc/fail2ban/jail.conf以及/对应action.d/iptables.conf文件

注:重启iptables服务的话,所有DORP将重置。

fail2ban的安装、使用和配置

1.下载位置
    http://www.fail2ban.org

2.解压软件包和安装
     tar  -zxvf fail2ban-0.8.14.tar.gz -C /usr/local/src

3.执行安装,在安装之前首先检查一下python的版本
    python -V
    python setup.py install

4.目录解释,其配置文件为jail.conf
    /etc/fail2ban/action.d              #动作文件夹,内含默认文件。iptables以及mail等动作配置
    /etc/fail2ban/fail2ban.conf            #定义了fai2ban日志级别、日志位置及sock文件位置
    /etc/fail2ban/filter.d              #条件文件夹,内含默认文件。过滤日志关键内容设置
    /etc/fail2ban/jail.conf                #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值

5.加入系统启动服务中
    cp files/redhat-initd  /etc/init.d/fail2ban
    chkconfig --add fail2ban  #开机自动启动

    查找一个软件中的启动脚本文件的小方法:
        grep chkconfig  ./* -R --color  #启动脚本文件都是含有chkconfig

6.实例文件/etc/fail2ban/jail.conf及说明
    [DEFAULT]               #全局设置
    ignoreip = 127.0.0.1/8       #忽略的IP列表,不受设置限制
    bantime  = 600               #屏蔽时间,单位:秒
    findtime  = 600              #这个时间段内超过规定次数会被ban掉
    maxretry = 3                 #最大尝试次数
    backend = auto               #日志修改检测机制(gamin、polling和auto这三种)

    #单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。

    [sshd]
    enabled  = true              #是否激活此项(true/false)修改成 true
    filter   = sshd              #过滤规则filter的名字,对应filter.d目录下的sshd.conf
    action   = iptables[name=SSH, port=ssh, protocol=tcp]             #动作的相关参数,对应action.d/iptables.conf文件
    sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"]   #触发报警的收件人
    logpath  = /var/log/secure   #检测的系统的登陆日志文件。这里要写sshd服务日志文件。 默认为logpath  = /var/log/sshd.log
    #5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下
    bantime  = 3600     #禁止用户IP访问主机1小时
    findtime  = 300     #在5分钟内内出现规定次数就开始工作
    maxretry = 3        #3次密码验证失败

如果遇到不能发送邮件的首先要确定sendmail可以发送右键,测试代码如下
    echo "Hello World" | mail -s test xxx@xxx.com

如果遇到本机不能远程登陆,那么只需要将ssh的日志文件删除即可   也就是/var/log/secure文件内容清除
    > /var/log/secure

7.启动服务
    service fail2ban start

8.查看服务状态和防火墙是否设置了相关条目
    iptables -L -n
    fail2ban-client status                    #查看该软件是否工作
    #具体看某一项的状态也可以看,如果显示被ban的ip和数目就表示成功了,如果都是0,说明没有成功。相关代码如下
    fail2ban-client status ssh-iptables

xinetd服务

xinetd(eXtended InterNET services daemon)  扩展因特网服务守护进程,是新一代的网络守护进程服务程序,又叫超级Internet服务器
作用: 通过xinetd服务来管理多种轻量级Internet服务。如: telnet、rsync、 tftp服务等。并为这些服务提供安全访问控制功能。
  • CentOS6.8
  • SSH服务
  • oldLinux

展开全文 >>

markdown模板

2017-03-14

我们理解您需要更便捷更高效的工具记录思想,整理笔记、知识,并将其中承载的价值传播给他人,Cmd Markdown 是我们给出的答案 —— 我们为记录思想和分享知识提供更专业的工具。 您可以使用 Cmd Markdown:

  • 整理知识,学习笔记
  • 发布日记,杂文,所见所想
  • 撰写发布技术文稿(代码支持)
  • 撰写发布学术论文(LaTeX 公式支持)

cmd-markdown-logo

除了您现在看到的这个 Cmd Markdown 在线版本,您还可以前往以下网址下载:

Windows/Mac/Linux 全平台客户端

请保留此份 Cmd Markdown 的欢迎稿兼使用说明,如需撰写新稿件,点击顶部工具栏右侧的 新文稿 或者使用快捷键 Ctrl+Alt+N。


什么是 Markdown

Markdown 是一种方便记忆、书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档:譬如您正在阅读的这份文档。它使用简单的符号标记不同的标题,分割不同的段落,粗体 或者 斜体 某些文字,更棒的是,它还可以

1. 制作一份待办事宜 Todo 列表

  • [ ] 支持以 PDF 格式导出文稿
  • [ ] 改进 Cmd 渲染算法,使用局部渲染技术提高渲染效率
  • [x] 新增 Todo 列表功能
  • [x] 修复 LaTex 公式渲染问题
  • [x] 新增 LaTex 公式编号功能

2. 书写一个质能守恒公式[^LaTeX]

$$E=mc^2$$

3. 高亮一段代码[^code]

1
2
3
4
5
6
7
@requires_authorization
class SomeClass:
pass
if __name__ == '__main__':
# A comment
print 'hello world'

4. 高效绘制 流程图

1
2
3
4
5
6
7
8
st=>start: Start
op=>operation: Your Operation
cond=>condition: Yes or No?
e=>end
st->op->cond
cond(yes)->e
cond(no)->op

5. 高效绘制 序列图

1
2
3
Alice->Bob: Hello Bob, how are you?
Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!

6. 高效绘制 甘特图

1
2
3
4
5
6
7
8
9
10
11
12
13
title 项目开发流程
section 项目确定
需求分析 :a1, 2016-06-22, 3d
可行性报告 :after a1, 5d
概念验证 : 5d
section 项目实施
概要设计 :2016-07-05 , 5d
详细设计 :2016-07-08, 10d
编码 :2016-07-15, 10d
测试 :2016-07-22, 5d
section 发布验收
发布: 2d
验收: 3d

7. 绘制表格

项目 价格 数量
计算机 \$1600 5
手机 \$12 12
管线 \$1 234

8. 更详细语法说明

想要查看更详细的语法说明,可以参考我们准备的 Cmd Markdown 简明语法手册,进阶用户可以参考 Cmd Markdown 高阶语法手册 了解更多高级功能。

总而言之,不同于其它 所见即所得 的编辑器:你只需使用键盘专注于书写文本内容,就可以生成印刷级的排版格式,省却在键盘和工具栏之间来回切换,调整内容和格式的麻烦。Markdown 在流畅的书写和印刷级的阅读体验之间找到了平衡。 目前它已经成为世界上最大的技术分享网站 GitHub 和 技术问答网站 StackOverFlow 的御用书写格式。


什么是 Cmd Markdown

您可以使用很多工具书写 Markdown,但是 Cmd Markdown 是这个星球上我们已知的、最好的 Markdown 工具——没有之一 :)因为深信文字的力量,所以我们和你一样,对流畅书写,分享思想和知识,以及阅读体验有极致的追求,我们把对于这些诉求的回应整合在 Cmd Markdown,并且一次,两次,三次,乃至无数次地提升这个工具的体验,最终将它演化成一个 编辑/发布/阅读 Markdown 的在线平台——您可以在任何地方,任何系统/设备上管理这里的文字。

1. 实时同步预览

我们将 Cmd Markdown 的主界面一分为二,左边为编辑区,右边为预览区,在编辑区的操作会实时地渲染到预览区方便查看最终的版面效果,并且如果你在其中一个区拖动滚动条,我们有一个巧妙的算法把另一个区的滚动条同步到等价的位置,超酷!

2. 编辑工具栏

也许您还是一个 Markdown 语法的新手,在您完全熟悉它之前,我们在 编辑区 的顶部放置了一个如下图所示的工具栏,您可以使用鼠标在工具栏上调整格式,不过我们仍旧鼓励你使用键盘标记格式,提高书写的流畅度。

tool-editor

3. 编辑模式

完全心无旁骛的方式编辑文字:点击 编辑工具栏 最右侧的拉伸按钮或者按下 Ctrl + M,将 Cmd Markdown 切换到独立的编辑模式,这是一个极度简洁的写作环境,所有可能会引起分心的元素都已经被挪除,超清爽!

4. 实时的云端文稿

为了保障数据安全,Cmd Markdown 会将您每一次击键的内容保存至云端,同时在 编辑工具栏 的最右侧提示 已保存 的字样。无需担心浏览器崩溃,机器掉电或者地震,海啸——在编辑的过程中随时关闭浏览器或者机器,下一次回到 Cmd Markdown 的时候继续写作。

5. 离线模式

在网络环境不稳定的情况下记录文字一样很安全!在您写作的时候,如果电脑突然失去网络连接,Cmd Markdown 会智能切换至离线模式,将您后续键入的文字保存在本地,直到网络恢复再将他们传送至云端,即使在网络恢复前关闭浏览器或者电脑,一样没有问题,等到下次开启 Cmd Markdown 的时候,她会提醒您将离线保存的文字传送至云端。简而言之,我们尽最大的努力保障您文字的安全。

6. 管理工具栏

为了便于管理您的文稿,在 预览区 的顶部放置了如下所示的 管理工具栏:

tool-manager

通过管理工具栏可以:

发布:将当前的文稿生成固定链接,在网络上发布,分享
新建:开始撰写一篇新的文稿
删除:删除当前的文稿
导出:将当前的文稿转化为 Markdown 文本或者 Html 格式,并导出到本地
列表:所有新增和过往的文稿都可以在这里查看、操作
模式:切换 普通/Vim/Emacs 编辑模式

7. 阅读工具栏

tool-manager

通过 预览区 右上角的 阅读工具栏,可以查看当前文稿的目录并增强阅读体验。

工具栏上的五个图标依次为:

目录:快速导航当前文稿的目录结构以跳转到感兴趣的段落
视图:互换左边编辑区和右边预览区的位置
主题:内置了黑白两种模式的主题,试试 黑色主题,超炫!
阅读:心无旁骛的阅读模式提供超一流的阅读体验
全屏:简洁,简洁,再简洁,一个完全沉浸式的写作和阅读环境

8. 阅读模式

在 阅读工具栏 点击 或者按下 Ctrl+Alt+M 随即进入独立的阅读模式界面,我们在版面渲染上的每一个细节:字体,字号,行间距,前背景色都倾注了大量的时间,努力提升阅读的体验和品质。

9. 标签、分类和搜索

在编辑区任意行首位置输入以下格式的文字可以标签当前文档:

标签: 未分类

标签以后的文稿在【文件列表】(Ctrl+Alt+F)里会按照标签分类,用户可以同时使用键盘或者鼠标浏览查看,或者在【文件列表】的搜索文本框内搜索标题关键字过滤文稿,如下图所示:

file-list

10. 文稿发布和分享

在您使用 Cmd Markdown 记录,创作,整理,阅读文稿的同时,我们不仅希望它是一个有力的工具,更希望您的思想和知识通过这个平台,连同优质的阅读体验,将他们分享给有相同志趣的人,进而鼓励更多的人来到这里记录分享他们的思想和知识,尝试点击 (Ctrl+Alt+P) 发布这份文档给好友吧!


再一次感谢您花费时间阅读这份欢迎稿,点击 (Ctrl+Alt+N) 开始撰写新的文稿吧!祝您在这里记录、阅读、分享愉快!

作者 @ghosert
2016 年 07月 07日

[^LaTeX]: 支持 LaTeX 编辑显示支持,例如:$\sum_{i=1}^n a_i=0$, 访问 MathJax 参考更多使用方法。

[^code]: 代码高亮功能支持包括 Java, Python, JavaScript 在内的,四十一种主流编程语言。

  • markdown
  • 跨平台
  • Linux

展开全文 >>

Centos6.8下源码安装GitLab

2017-03-14

作为本博客的第一次的,也同时作为对网络上博客的抄袭而不加以注意做一次贡献,就网络上源码安装Gitlab教程不多,并且很坑,特此整理一份。还请大家持续关注我的博客,转载请注明出处。谢谢

[来自]:(http://www.cyysu.cn "运维技术")

[TOC]

0.开篇的话

文章依赖
1. 官方博客
2. 配置网络yum仓库 提取密码ak1v
3. centos下安装gitlab
4. centos7下源码安装gitlab

出现错误解决方案依赖

1. 提示没有找不到 Specified ‘mysql2’
2. bundle更换源问题
3. no tmp uploads folder yet

便捷安装

1. Bitnami安装
2. 安装工具 提取密码:xb4e

1.关闭SELINUX和iptables

1
2
[root@localhost ~]# service iptables stop #关闭防火墙
[root@localhost ~]# setenforce 0 #暂时关闭Selinux

2.添加EPEL存储库

1
2
3
4
5
6
7
8
wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 https://getfedora.org/static/0608B895.txt
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
#验证密钥安装成功
rpm -qa gpg*
#安装软件包,不区分32和64位
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

3.添加Remi的RPM存储库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-remi http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
##验证密钥安装成功
rpm -qa gpg*
#安装软件包
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
#查看上述仓库是否启动
yum repolist
repo id repo name status
base CentOS-6 - Base 6696
epel Extra Packages for Enterprise Linux 6 - x86_64 12125
extras CentOS-6 - Extras 61
remi-safe Safe Remi's RPM repository for Enterprise Linux 6 - x86_64 827
updates CentOS-6 - Updates 137
repolist: 19846

4.安装GitLab所需的工具

1
2
3
4
5
6
7
8
yum -y update
#安装需要的开发的工具
yum -y groupinstall 'Development Tools'
yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui redis sudo wget crontabs logwatch logrotate perl-Time-HiRes git cmake libcom_err-devel.i686 libcom_err-devel.x86_64 nodejs
yum -y install python-docutils

5.安装邮件服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#在这里自行可以自行去配置,官方推荐的是postfix。有机会的话,笔者会研究一下,后续更新上来博客
yum install postfix
service postfix restart
chkconfig postfix on
#修改postfix的主配置文件
vim /etc/postfix/main.cf
myhostname = sample.test.com  ← 设置系统的主机名
mydomain = test.com  ← 设置域名(我们将让此处设置将成为E-mail地址“@”后面的部分)
myorigin = $mydomain  ← 将发信地址“@”后面的部分设置为域名(非系统主机名)
inet_interfaces = all  ← 接受来自所有网络的请求
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  ← 指定发给本地邮件的域名
home_mailbox = Maildir/  ← 指定用户邮箱目录
#修改gitlab相关的配置文件 修改内容如下:
vim /home/git/gitlab/config/gitlab.yml
email_enabled: true
email_from: root@cyysu.cn # 发件人的地址
email_display_name: GitLabMaster # 显示的收件人昵称
email_reply_to:
#配置上面的hostname的时候要注意修改一个/etc/hosts文件
vim /etc/hosts
#生效
hostname your_hostname
#配置完成之后记得要重启服务
/etc/init.d/postfix restart
/etc/init.d/gitlab restart
#检查是否配置成功,开启三个shell窗口
tail -f /home/git/gitlab/log/*.log
tail -f /var/log/maillog
#执行命令进入测试
bundle exec rails console production
#接下来就变成下面的界面
#输入以下命令
:sendmail
#显示配置
ActionMailer::Base.smtp_settings
#给自己邮箱发送测试文件
#这里测试最好用163邮箱测试,QQ邮箱测试不是太好使
Notify.test_email('cyysu@163.com', 'Hello World', 'This is a test message').deliver_now

6.源码安装git

1
2
3
4
5
6
7
8
9
10
11
12
13
#必须要确定git的版本高于2.7.4或更高版本。如果系统安装了git那么需要卸载
yum -y remove git
#安装git编译需求的软件
yum install zlib-devel perl-CPAN gettext curl-devel expat-devel gettext-devel openssl-devel
#下载源码并安装
mkdir /tmp/git && cd /tmp/git
curl --progress https://www.kernel.org/pub/software/scm/git/git-2.9.0.tar.gz | tar xz
cd git-2.9.0
./configure
make
make prefix=/usr/local install

7.安装Ruby

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#删除旧的Ruby 1.8软件包(如果存在)。GitLab只支持Ruby 2.1版本系列
yum remove ruby
#下载并编译
mkdir /tmp/ruby && cd /tmp/ruby
curl --progress https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.gz | tar xz
cd ruby-2.1.9
./configure --disable-install-rdoc
make
make prefix=/usr/local install
#安装Bundler Gem
gem install bundler --no-doc
# 检测信息,如果输出信息就代表没错
which ruby
ruby -v

8.安装Go

1
2
#从GitLab 8.0开始,Git HTTP请求由gitlab-workhorse(以前称为gitlab-git-http-server)处理。这是一个在Go写的小守护进程。要安装gitlab-workhorse,我们需要一个Go编译器。
yum install -y golang golang-bin golang-src

9.创建用户

1
2
3
4
5
6
#Gitlab 创建一个用户
adduser --system --shell /bin/bash --comment 'GitLab' --create-home --home-dir /home/git/ git
#修改sudoers文件
visudo
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

10.安装数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#官方推荐用PostgreSQL,这里我们用Mysql来安装
#安装软件
yum install -y mysql-server mysql-devel
chkconfig mysqld on
service mysqld start
#这里Mysql的版本保持这个样子就可以,亲测可用
mysql --version
#mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1
#首先对数据库进行一下设置
mysql_secure_installation
#登陆系统
mysql -u root -p
#为gitlab创建用户
CREATE USER 'git'@'localhost' IDENTIFIED BY 'your passwd';
#添加InnoDB引擎
SET storage_engine=INNODB;
#下面先不创建Gitlab生产数据库,后面有个命令可以创建这里先不创建(不执行)
#CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
#授权
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES, REFERENCES ON `gitlabhq_production`.* TO 'git'@'localhost';
#退出数据库
\q

11.安装Redis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#Gitlab要求Redis版本不低于2.8,系统默认安装版本为2.4.1,卸载当前版本并采用remi源安装最新版本:
#卸载当前redis:
yum -y remove redis
#采用remi源安装最新版本:
yum --enablerepo=remi install redis
#确保redis在启动时启动:
chkconfig redis on
#将redis配置为使用套接字:
cp /etc/redis.conf /etc/redis.conf.orig
#通过将'port'设置为0,禁止在TCP上侦听Redis:
sed 's/^port .*/port 0/' /etc/redis.conf.orig | sudo tee /etc/redis.conf
#为默认CentOS路径启用Redis套接字:
echo 'unixsocket /var/run/redis/redis.sock' | sudo tee -a /etc/redis.conf
echo -e 'unixsocketperm 0770' | sudo tee -a /etc/redis.conf
#创建包含套接字的目录
mkdir /var/run/redis
chown redis:redis /var/run/redis
chmod 755 /var/run/redis
#保留包含套接字的目录(如果适用)
if [ -d /etc/tmpfiles.d ]; then
echo 'd /var/run/redis 0755 redis redis 10d -' | sudo tee -a /etc/tmpfiles.d/redis.conf
fi
#修改配置文件
vim /etc/redis.conf
#bind 127.0.0.1
#重启服务:
service redis restart
#如果遇到以下问题
#>>> 'vm-enabled no'
#Bad directive or wrong number of arguments
[FAILED]
只需要注释以下内容:
#vm-enabled yes
#vm-swap-file /tmp/redis.swap
#vm-max-memory 0
#vm-page-size 32
#vm-pages 134217728
#vm-max-threads 4
#hash-max-zipmap-entries 512
#hash-max-zipmap-value 64
#将git添加到redis组:
usermod -aG redis git

12.安装Gitlab

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#存放gitlab等相关软件集合
cd /home/git
#下载
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 8-9-stable gitlab
#配置,从这里开始直接复制即可,主要就是创建目录,赋予权限
# Go to GitLab installation folder
cd /home/git/gitlab
# Copy the example GitLab config
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
# Update GitLab config file, follow the directions at top of file
sudo -u git -H editor config/gitlab.yml
# Copy the example secrets file
sudo -u git -H cp config/secrets.yml.example config/secrets.yml
sudo -u git -H chmod 0600 config/secrets.yml
# Make sure GitLab can write to the log/ and tmp/ directories
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX tmp/
# Make sure GitLab can write to the tmp/pids/ and tmp/sockets/ directories
sudo chmod -R u+rwX tmp/pids/
sudo chmod -R u+rwX tmp/sockets/
# Create the public/uploads/ directory
sudo -u git -H mkdir public/uploads/
# Make sure only the GitLab user has access to the public/uploads/ directory
# now that files in public/uploads are served by gitlab-workhorse
sudo chmod 0700 public/uploads
sudo chmod ug+rwX,o-rwx /home/git/repositories/
# Change the permissions of the directory where CI build traces are stored
sudo chmod -R u+rwX builds/
# Change the permissions of the directory where CI artifacts are stored
sudo chmod -R u+rwX shared/artifacts/
# Copy the example Unicorn config
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
# 查看核心数
nproc
# Enable cluster mode if you expect to have a high load instance
# Ex. change amount of workers to 3 for 2GB RAM server
# Set the number of workers to at least the number of cores
sudo -u git -H editor config/unicorn.rb
# Copy the example Rack attack config
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
# Configure Git global settings for git user
# 'autocrlf' is needed for the web editor
sudo -u git -H git config --global core.autocrlf input
# Disable 'git gc --auto' because GitLab already runs 'git gc' when needed
sudo -u git -H git config --global gc.auto 0
# Configure Redis connection settings
sudo -u git -H cp config/resque.yml.example config/resque.yml
# 这里保持默认
sudo -u git -H vim config/resque.yml

13.数据库配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#配置数据库文件
sudo -u git cp config/database.yml.mysql config/database.yml
#编辑数据库文件
sudo -u git -H vim config/database.yml
production:
adapter: mysql2
encoding: utf8
collation: utf8_general_ci
reconnect: false
database: gitlabhq_production
pool: 10
username: gitlab
password: "gitlab"
# host: localhost
# socket: /tmp/mysql.sock
#赋予权限
sudo -u git -H chmod o-rwx config/database.yml

14.安装Gems

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
cd /home/git/gitlab
sudo -u git -H bundle config build.pg --with-pg-config=/usr/pgsql-9.3/bin/pg_config
sudo -u git -H bundle install --deployment --without development test mysql aws kerberos
sudo -u git -H bundle install --deployment --without development test postgres aws kerberos
#提示出现这个错误:
#Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
#/usr/local/bin/ruby extconf.rb --with-pg-config=/usr/pgsql-9.3/bin/pg_config
#Using config values from /usr/pgsql-9.3/bin/pg_config
#sh: /usr/pgsql-9.3/bin/pg_config: No such file or directory
#sh: /usr/pgsql-9.3/bin/pg_config: No such file or directory
#解决方法:
#卸载
yum remove postgresql
#安装pgdg仓库:
rpm -Uvh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-2.noarch.rpm
#安装postgresql93-server,postgreqsql93-devel和postgresql93-contrib库:
yum install postgresql93-server postgresql93-devel postgresql93-contrib
#重命名服务脚本:
mv /etc/init.d/{postgresql-9.3,postgresql}
# 服务启动
service postgresql initdb
service postgresql start
chkconfig postgresql on
#这个时候就不会报错了,提示以下信息
#-------------------------------------------------
#Thank you for installing html-pipeline!
#You must bundle Filter gem dependencies.
#See html-pipeline README.md for more details.
#https://github.com/jch/html-pipeline#dependencies
#-------------------------------------------------
#这里我们修改一个Gemfile文件,刚刚编辑的数据库配置文件我们看到了Mysql2,我们执行的上述步骤是没有安装的,检查的方法可以使用如下
#查看mysql2是否安装
bundle show mysql2
#当前目录在Gitlab目录下,编辑Gemfile文件,修改成如下内容
vim Gemfile
gem "mysql2", '~> 0.3.18'
#在执行以下语句
bundle install --no-deployment
#执行时间根据网速和电脑配置而言,下面查看以下结果
[root@localhost gitlab]# bundle show mysql2
/usr/local/lib/ruby/gems/2.1.0/gems/mysql2-0.3.20

15.安装GitLab Shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#安装
sudo -u git -H bundle exec rake gitlab:shell:install[v3.0.0] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production
#编辑文件 这个文件主要就是提供gitlab API 接口的
sudo -u git -H vim /home/git/gitlab-shell/config.yml
#修改内容如下
gitlab_url: "http://localhost:8000/"
#这个文件主要提供ruby的服务端口和ip
[root@localhost gitlab]# vim config/unicorn.rb
#修改内容如下
listen "127.0.0.1:8080", :tcp_nopush => true
#这个文件主要提供gitlab服务的端口,ip
[root@localhost gitlab]# vim config/gitlab.yml
#修改内容如下
gitlab:
host: localhost
port: 8000
git:
bin_path: /usr/local/bin/git
#如果后面的操作会提示git找不到那么需要执行以下操作
ln -s /usr/local/bin/git /usr/bin/git
restorecon -Rv /home/git/.ssh

16.安装gitlab-workhorse

1
2
3
4
5
6
#这个不多说了,很简单
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
cd gitlab-workhorse
sudo -u git -H git checkout v0.7.5
sudo -u git -H make

17.初始化数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
#这里会提示如下“错误”
#Couldn't drop gitlabhq_production
#Access denied for user 'gitlab'@'localhost' (using password: YES)Please provide the root password for your MySQL installation
>输入你设定的mysql密码
#之后就会提示如下内容
# -> 0.0104s
#-- add_foreign_key("u2f_registrations", "users")
# -> 0.0085s
#-- initialize_schema_migrations_table()
# -> 0.0188s
#Adding limits to schema.rb for mysql
#-- change_column(:merge_request_diffs, :st_commits, :text, {:limit=>2147483647})
# -> 0.0218s
#-- change_column(:merge_request_diffs, :st_diffs, :text, {:limit=>2147483647})
# -> 0.0107s
#-- change_column(:snippets, :content, :text, {:limit=>2147483647})
# -> 0.0134s
#-- change_column(:notes, :st_diff, :text, {:limit=>2147483647})
# -> 0.0149s
#-- change_column(:events, :data, :text, {:limit=>2147483647})
# -> 0.0096s
#== Seed from /home/git/gitlab/db/fixtures/production/001_admin.rb
#Administrator account created:
#login: root
#password: You'll be prompted to create one on your first visit.
#当你进行登陆的时候就会提示你更改密码的操作

18.安装启动脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#安装了这么长时间终于快结束了,心情有没有开心!!!!
#当前目录在/home/git/gitlab
cp lib/support/init.d/gitlab /etc/init.d/gitlab
chkconfig gitlab on
cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
#检查程序的版本
#System information
#System: CentOS 6.8
#Current User: git
#Using RVM: no
#Ruby Version: 2.1.9p490
#Bundler Version:1.14.6
#Rake Version: 10.5.0
#Sidekiq Version:4.1.2
#GitLab information
#Version: 8.9.11
#Revision: 9a05855
#Directory: /home/git/gitlab
#DB Adapter: mysql2
#URL: http://localhost:8000
#HTTP Clone URL: http://localhost:8000/some-group/some-project.git
#SSH Clone URL: git@localhost:some-group/some-project.git
#Using LDAP: no
#Using Omniauth: no
#GitLab Shell
#Version: 3.0.0
#Repositories: /home/git/repositories/
#Hooks: /home/git/gitlab-shell/hooks/
#Git: /usr/bin/git
#生成网页需要的资源
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
#启动实例
service gitlab start
#如果看到以下信息,就代表你已经成功安装了Gitlab
#Starting GitLab Unicorn
#Starting GitLab Sidekiq
#Starting Gi充电tLab Workhorse
#The GitLab Unicorn web server with pid 80821 is running.
#The GitLab Sidekiq job dispatcher with pid 80870 is running.
#The GitLab Workhorse with pid 80852 is running.
#GitLab and all its components are up and running.
#下面在浏览器开始c访问
http://localhost:8000
#开始就会弹出让你修改密码的界面,之后就提示登陆界面
#http://localhost:8000/users/password/edit?reset_password_token=DjzQ-AcPsgdkhx4ckUBg
#初始的时候你可以用root和你刚刚设定的密码进行登陆
#http://localhost:8000/users/sign_in
#如果发现不能登陆,请确保服务启动成功,然后在重点检查以下配置文件
#当前目录 /home/git/gitlab
vim config/gitlab.yml
vim config/unicorn.rb
vim ../gitlab-shell/config.yml
#如果提示以下信息,那么需要检测Redis,mysql是否启动
/etc/init.d/gitlab restart
The GitLab Unicorn web server is not running.
#查看/home/git/gitlab/log/unicorn.stderr.log,最新的日志在末尾。
/home/git/gitlab/config/environments/production.rb:82: syntax error
#进入命令模式set nu显示行号,找到82行所在。
#如果发现启动不了服务,可以尝试重新创建一下数据库
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
#检测一下程序状态
#这里可以看出你的版本是否达到要求,不过笔者一切比较正常。
#前几次装的时候出现过版本不对,不过也没有影响使用
#可能这是个bug吧 如果那位大神了解这个还请给我留言,谢谢
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
#Checking GitLab Shell ...
#
#GitLab Shell version >= 3.0.0 ? ... OK (3.0.0)
#Repo base directory exists? ... yes
#Repo base directory is a symlink? ... no
#Repo base owned by git:git? ... yes
#Repo base access is drwxrws---? ... yes
#hooks directories in repos are links: ... can't check, you have no projects
#Running /home/git/gitlab-shell/bin/check
#Check GitLab API access: OK
#Check directories and files:
# /home/git/repositories/: OK
# /home/git/.ssh/authorized_keys: OK
#Send ping to redis server: gitlab-shell self-check successful
#
#Checking GitLab Shell ... Finished
#
#Checking Sidekiq ...
#
#Running? ... yes
#Number of Sidekiq processes ... 1
#
#Checking Sidekiq ... Finished
#
#Checking Reply by email ...
#
#Reply by email is disabled in config/gitlab.yml
#
#Checking Reply by email ... Finished
#
#Checking LDAP ...
#
#LDAP is disabled in config/gitlab.yml
#
#Checking LDAP ... Finished
#
#Checking GitLab ...
#
#Git configured with autocrlf=input? ... yes
#Database config exists? ... yes
#All migrations up? ... yes
#Database contains orphaned GroupMembers? ... no
#GitLab config exists? ... yes
#GitLab config outdated? ... no
#Log directory writable? ... yes
#Tmp directory writable? ... yes
#Uploads directory setup correctly? ... skipped (no tmp uploads folder yet)
#Init script exists? ... yes
#Init script up-to-date? ... yes
#projects have namespace: ... can't check, you have no projects
#Redis version >= 2.8.0? ... yes
#Ruby version >= 2.1.0 ? ... yes (2.1.9)
#Your git bin path is "/usr/local/bin/git"
#Git version >= 2.7.3 ? ... yes (2.9.0)
#Active users: 1
#
#Checking GitLab ... Finished

19. Nginx服务器安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#说在前头: 这里的web服务器可以选择性安装,就是可以通过外网正常访问你的GitLab,这里web服务器可以选择Nginx或这Apache
sudo yum install -y nginx
sudo cp lib/support/nginx/gitlab /etc/nginx/conf.d/gitlab.conf
#这里默认不修改端口 默认是80
vim /etc/nginx/conf.d/gitlab.conf
vim /etc/nginx/conf.d/default.conf
vim /etc/nginx/nginx.conf
#测试语法
sudo nginx -t
#启动服务
sudo service nginx restart
chkconfig nginx on
sudo chmod 775 /home/git
#在本地电脑访问对于的IP。如果以上均配置正确,就会看到登陆页面
http://192.168.223.140:80
  • CentOS6.8
  • Gitlab
  • 源码安装
  • Linux

展开全文 >>

« Prev1…141516
© 2017 lyx
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链
  • 关于我

tag:

  • CentOS6.8
  • SSH服务
  • DHCP服务
  • 自动化部署
  • 互联网资源
  • IT
  • 运维
  • Linux
  • RSYNC服务
  • NTP服务
  • Postfix服务
  • DNS服务
  • NFS服务
  • Samba服务
  • FTP服务
  • Apache服务
  • CentOS7
  • Dokcer
  • Gitlab
  • 源码安装
  • Hadoop
  • 集群
  • Centos6.8
  • 文件共享
  • Haproxy
  • 存储系统
  • 高可用
  • 负载均衡
  • 编程
  • 程序员
  • LAMP
  • LNMP
  • WEB服务器
  • 博客
  • 编译
  • 内核
  • Linux命令
  • Linux基础
  • 笔记
  • 分布式系统
  • NFS
  • 认证服务
  • NIS
  • Nagios
  • 监控
  • 存储
  • RAID
  • WEB架构
  • 远程连接
  • SSH
  • Zabbix
  • 自动化
  • saltstack
  • cobbler
  • Centos7
  • ELKstack
  • Elasticsearch
  • Logstash
  • Heartbeat
  • MySQL
  • Nginx
  • puppet
  • markdown
  • 跨平台
  • Linux服务
  • 大学
  • 版权声明
  • STM32
  • 嵌入式
  • 邮件服务
  • 汉化
  • 网卡错误
  • 虚拟机
  • 分布式存储
  • Corosync
  • Pacemaker
  • DRBD
  • MooseFS

    缺失模块。
    1、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    2、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: true
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 阿里云
  • 鸿鹄论坛
  • 百度云搜索
  • Github搜索
  • PDF转换软件
  • TI公司WEBENCH
  • powershell教程
  • 七牛云
  • 有道云笔记
  • HTML5
  • 小马运维博客
  • 运维知识体系架构图
  • 云栖社区
  • ChinaUnix
<br>热爱技术<br>热爱开源<br> 2017年<br>