分类 软件安装 下的文章

推荐一款 MySQL 定时备份脚本

数据库的备份是非常重要的。我在使用数据库时,写了一个 Shell 脚本,利用 Linux 的 crond 实现每天自动备份数据库,保留近期的备份数据(删除更旧的数据)。

脚本其实是用 mysqldump 命令导出数据到指定目录,对于中小型数据量已经够用。但当数据量超过 1G 时,导出的时间明显加长,而且恢复数据也会很费时间。还有一个缺点是,备份期间,会锁表,其它用户无法写数据库。因此建议在用户使用低峰期备份数据库。

对于大数据量,建议使用开源软件 XtraBackup 进行备份。后面我也会将这个备份程序集成到备份脚本中。

要使用的话,请克隆源代码,参考说明文件即可。

SVN 使用入门

svn 是一个文件版本控制管理系统,可用于团队代码管理、文档共享。

1.svn 地址与账号

一般会提供两种协议的使用方式:svn, http。比如 svn 管理员提供的使用地址是

http://192.168.1.1/svn/repo1/
svn://192.168.1.1/repo1

同时管理员会为你创建账号和密码。两种协议使用两套账号,如果管理员设置为相同,则使用时就像一套账号。一般 http 协议使用公共的账号即可,只可浏览文件。svn 协议则使用管理员分配的账号。

http 方式,只要在浏览器上打开上面的 http 地址,输入账号、密码,即可访问。

2. 客户端使用

2.1 Windows

使用 TortoiseSVN,这是目前使用最广泛的 svn 客户端。到官网下载、安装。

检出仓库

右键点击 SVN 检出(SVN Checkout...),打开如下界面,输入 svn 协议地址

svn_checkout.png

点击确定,会弹出账号密码输入界面,正确输入后即可。顺利的话,会在当前目录创建 repo1 文件夹,并且下载这个仓库中全部的文件。

提交文件

如果修改了文件,或者增加、删除了文件,可以将它提交到服务器,这样别人就能看到你的改动。

右键点击 SVN 提交(SVN Commit...),打开如下界面,勾选要提交的改动,填写修改备注(非必填),提交即可。

svn_commit.png

注意:如果无法提交文件(例如报错Can't open file '/home/svn/repo1/db/txn-current-lock': Permission denied),请确保上一步检出的地址,是 svn 协议地址,并且(与管理员确认)账号拥有写权限。http 协议的地址,只能查看。

撤销本地修改

如果修改了文件,还未提交,想撤销。

右键 -> TortoiseSVN -> 回滚(Revert...),可以回退到上一个版本。

Gitlab 使用入门

1.简介

Gitlab是一个基于Ruby on Rails的开源的版本管理系统,实现一个自托管的Git项目仓库,可以通过Web界面访问代码仓库。它和Github拥有类似的功能,上手比较容易。
Gitlab的使用要求用户掌握基础的Git技能。以下文档按用户角色(普通用户和管理员),分别介绍使用方法。

2.普通用户

通过Gitlab管理员给的网址访问。如果是 https,可能服务器的SSL证书没有认证,浏览器会提示不安全。请忽略,点击继续浏览网站。

2.1 创建账号与加入项目

一般地,由管理员分配账号。管理员会将你加入到指定的项目。创建账号后,会收到系统发送的邮件,按提示设置密码。(收到的邮件有可能存在垃圾箱中,注意查看。)

2.2 拉取和推送代码

2.2.1 通过 SSH 协议
推荐使用这种方式!
首先需要在本地机器中生成公私钥密钥对。确保系统已安装好Git客户端,在Git Bash(或命令行)中运行如下命令,几个回车之后即可
ssh-keygen -t rsa -C "your_email@example.com" -b 4096
参数说明:
-t 密钥类型
-C 备注,填自己的账号邮箱
-b 密钥长度
密钥对默认保存在用户主目录(或者Git安装目录下./homepath/)的.ssh/下,.ssh 目录是隐藏目录。默认的名称为id_rsa和id_rsa.pub,后者为公钥。(Windows系统的目录为C:\Users\Administrator\.ssh)。若没有找到,可在硬盘中,搜索id_rsa。
然后打开Gitlab网站,点击右上角头像,弹出下拉菜单,点设置(Settings),打开设置界面。再点击SSH Keys,可以看到如下界面
gitlab-ssh-settings.png
将上一步生成的公钥(id_rsa.pub),用文本编辑器打开,复制其中文本内容,粘贴到Key文本框,点击添加Key即可。

测试配置是否成功(其中 domain 是 Git 仓库的域名):

ssh -T git@domain

返回欢迎语,则表示配置成功,如:

Welcome to GitLab, Zhangsan!

总结下来,就是在本地生成公私钥对,将公钥复制到服务器。完成以上两步,即可通过SSH方式免密码访问代码仓库,包括pull和push。
注意,由于Gitlab系统的安全限制,不允许通过master分支推送代码,请在开发分支(develop)提交和推送代码。如果是对已有的代码创建一个仓库,可先将用户设置为 Master 级别,此时添加远程仓库不会被拒绝。将本地生成的仓库,推送到服务端后,再将用户的等级改回 developer。同时在网页上修改仓库的配置,Settings -> Repository -> Protected branch,新增一个保护配置,设置相应的用户等级。

2.2.2 通过 http 协议
这种方式,拉取与推送时,需要填写账号和密码。一般地Git客户端工具可以记住密码。
第一次使用,可能会提示,仓库地址不是一个有效的地址,详细信息是SSL certificate problem: Invalid。原因是https证书没有认证,可以在客户端取消安全验证。在Git Bash(或命令行)中执行以下命令:
git config --global http.sslVerify false

3.管理员

3.1 账号与权限

默认的管理员账号为root。

管理员主要是创建组(group)、创建项目、创建用户。
一个组是几个项目的集合,组内项目的URL会以组名作为命名空间。可以将已有的项目移到某个组。

组的可见级别分为3种:

gitlab-group-permissions.png

私有(Private):该组和组内项目,只有组内成员可见。
内部(Internal):该组和任何内部项目对所有登录用户可见。
公开(Public):该组和任何公开项目无需权限,完全可见。

项目的可见级别也分为3种:

gitlab-project-permissions.png

私有(Private):授权用户才能访问
内部(Internal):任何登录用户均可访问
公开(Public):完全公开,无需任何授权

用户对于项目或组的角色有5种,等级依次从低到高:
Guest - 游客,只能查看项目,不能pull或者下载代码及其它
Reporter - 报告者,只能pull或者下载代码,不能提交和推送代码及其它
Developer - 开发者,可以pull和push代码,不能添加新成员
Master - 管理者,可以添加新成员等管理性权限
Owner - 拥有者,几乎拥有全部权限
一般地,项目开发者,赋予Developer权限;项目管理者赋予Master权限。组的管理者赋予Owner权限。详细说明请参考文档:https://domain/help/user/permissions。(domain为Gitlab的域名或IP地址)

3.2 将已有的用户添加到某个组

打开组的Members列表,可以将用户添加到该组。打开项目的Members列表,可以将用户添加到该项目。

3.3 给用户重置密码

点击顶部工具栏,进入管理界面,点击用户(Users),可以查看到全部用户列表。然后点击相应用户行的编辑(Edit)按钮,进入用户编辑界面,可以设置新的密码。用户使用新的密码登录后,会要求重置密码。(一般让用户自动助找回密码,点击登录界面的“忘记你的密码?”链接,输入账号创建时的邮箱地址,提交后会收到重置密码的邮件,按提示操作即可。)

虚拟机搭建 Gitlab 服务器

1.部署过程

1.1方案

Gitlab是一款基于Ruby on Rails的开源的代码仓库管理程序,依赖的服务较多(如Nginx,Redis,PostgreSQL等),安装和配置非常麻烦。因此采用Bitnami提供的虚拟机镜像文件安装,该镜像文件包含了一个最小化的操作系统和完整配置好的全部程序,通过VMware或者VirtualBox运行即可。以下是简单的架构图,以及镜像安装方式的详细步骤。

virtualbox-gitlab.png

1.2 下载安装VirtualBox

下载地址:https://www.virtualbox.org/wiki/Downloads
选择相应操作系统的安装包。公司内网服务器是Windows Server 2016,下载Windows hosts版本的安装包。安装过程很简单,不详述。

1.3 下载Bitnami镜像文件

下载地址:https://bitnami.com/stack/gitlab/virtual-machine
该镜像包当前的版本是Gitlab Community Edition 9.4.4-0(64-bit),大约718M,.ova格式,支持VirtualBox和VMware等虚拟机软件。Bitnami的镜像文件更新较快,这点值得称赞。

1.4 导入镜像虚拟机

启动VirtualBox,点击菜单“管理”->“导入虚拟电脑”,选择刚刚下载的镜像文件。可以看到一个新虚拟机的配置,建议修改虚拟硬盘文件的路径,放到空间较大的盘(默认放在C盘)。启动这个虚拟机,就成功了!但这只是开始,请继续往下看。

1.5 账号

虚拟机的操作系统是Debian 8,默认的登录账号和密码都是bitnami(强烈建议修改默认密码),系统的root权限使用sudo获得。
部署好的Gitlab的访问地址是虚拟机的IP地址。启动虚拟机会看到提示说明,或者登录虚拟机后,通过命令ip addr查看IP地址。通过浏览器打开这个IP地址,即可使用Gitlab。管理员账号为root,默认密码为bitnami1。请务必修改该密码,确保安全。

1.6 配置邮件服务

Gitlab添加新账号、找回密码需要发送邮件。按如下配置好,才能正常使用。
修改配置文件 /etc/gitlab/gitlab.rb,将USERNAME和PASSWORD修改为能发送邮件的账号,修改相应的 SMTP 配置,下面以Gmail账号为例:

### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'USERNAME@gamil.com'
gitlab_rails['gitlab_email_display_name'] = 'admin' 

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "USERNAME@gmail.com"
gitlab_rails['smtp_password'] = "PASSWORD"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'peer' 

运行以下命令使修改生效:

sudo gitlab-ctl reconfigure

测试邮件服务是否生效(将下面红色部分的邮箱账号改为能收到邮件的账号):

gitlab-rails console
irb(main):003:0> Notify.test_email('test@qq.com', 'Message Subject', 'Message Body').deliver_now

1.7 开启SSH

Bitnami虚拟机的SSH默认未开启,而Git的SSH方式依赖于它。开启命令如下:
sudo rm -f /etc/ssh/sshd_not_to_be_run
sudo systemctl enable ssh
sudo systemctl start ssh

1.8 修改Gitlab的访问地址为域名

Gitlab默认的访问地址为虚拟机的IP地址,要改为域名访问,请运行如下命令,其中NAME是将要使用的域名,如code.xin3wei.com:
sudo /opt/bitnami/apps/gitlab/bnconfig --machine_hostname NAME
修改大约需要一分钟。
注意:修改成功后,务必重命名或者删除 /opt/bitnami/apps/gitlab/bnconfig 文件。避免重启虚拟机,导致修改失效。

2.注意事项

2.1 虚拟机的IP地址可能会变

当虚拟机或者宿主重启时,可能会分配到新的IP地址。当无法访问Gitlab时,可能是这个原因。可以在路由上配置固定的IP。

2.2 数据的安全

确保虚拟机硬盘文件(.vmdk格式)的安全,所有Gitlab的应用程序文件都存储在这个文件中,避免被误删。在VirtualBox的设置中,查看“存储”选项,可以看到该文件的在宿主机上的位置,注意保护好它。

2.3 Gitlab所依赖的服务

使用如下命令可以查看到Gitlab所依赖的全部服务

sudo /opt/bitnami/ctlscript.sh help

Logrotate - 日志截断工具
Nginx - Web服务器
PostgreSQL - 数据库
Redis - 缓存服务
Sidekiq - 基于Ruby的后台任务处理程序
Unicorn - Ruby Http Server

3.常见问题

3.1 如何从虚拟机界面呼出鼠标?

当点击虚拟机的窗口,鼠标将进入虚拟机系统,无法移动出来。使用键盘上右边的Ctrl键可以将鼠标呼出。

3.2 如何启动和停止虚拟机上的服务?

通过Bitnami的控制脚本来启动和停止相关服务:
/opt/bitnami/ctlscript.sh
不加任何服务名是启动所有的服务:
sudo /opt/bitnami/ctlscript.sh start
通过传递服务名来重启单个服务:
sudo /opt/bitnami/ctlscript.sh restart nginx

3.3 如何排错?

主要通过日志文件排查错误。当Gitlab使用过程中出现异常时,查看以下相关日志文件。
Gitlab日志:
/opt/gitlab/embedded/service/gitlab-rails/log/production.log
Sidekiq日志:
/var/log/gitlab/gitlab-rails/sidekiq.log
Gitlab-shell日志:
/var/log/gitlab/gitlab-shell/gitlab-shell.log
Nginx日志:
/var/log/gitlab/nginx/gitlab_error.log

4.参考资料

Bitnami Gitlab文档(英):https://docs.bitnami.com/virtual-machine/apps/gitlab/
Bitnami虚拟机常见问题(英):https://docs.bitnami.com/virtual-machine/faq/
如何升级Gitlab(英):https://docs.gitlab.com/omnibus/update/README.html

安装FFmpeg

编译安装

0.环境

CentOS Linux release 7.3.1611 (Core)

1.下载安装文件,解压
下载地址 http://ffmpeg.org/download.html

wget http://ffmpeg.org/releases/ffmpeg-3.4.tar.bz2
tar -xvf ffmpeg-3.4.tar.bz2

2.安装

cd ffmpeg-3.4
./configure

此时可能报错:

nasm/yasm not found or too old. Use --disable-x86asm for a crippled
build.

发现本机没有安装 yasm,那么安装它
yum install yasm

make

时间略长,需要好几分钟时间

make install