【Gitlab+Jenkins+Ansible】构建自动化部署
说明: Gitlab、Jenkins、生产服务器、测试服务器上都需要安装Git.
一、安装Gitlab
1.主机配置
IP: 10.10.10.105
OS: CentOs7.
Gitlab版本:gitlab-ce-10.0.-ce..el6.x86_64
2.关闭防火墙
systemctl stop firewalld
3.下载Gitlab
清华大学开源镜像站:
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/
4.安装依赖项(可根据情况选择性操作)
yum install -y curl policycoreutils-python openssh-server openssh-clients cronie
lokkit -s http -s ssh
yum install postfix
systemctl start postfix
chkconfig postfix on
5.安装Gitlab
rpm -ivh gitlab-ce-10.0.-ce..el6.x86_64.rpm
6.配置Gitlab
- 将
external_url 'http://gitlab.example.com'
修改为
external_url 'http://10.10.10.102:11000'
- 将
unicorn['port'] =
修改为
unicorn['port'] =
- 将
prometheus['listen_address'] = '10.10.10.102:8081'
修改为
prometheus['listen_address'] = '10.10.10.102:11002'
每次重新配置,都需要执行gitlab-ctl reconfigure使之生效。
7.启动Gitlab
载入配置信息:
gitlab-ctl reconfigure
启动Gitlab:
gitlab-ctl start
常用管理命令:
gitlab-ctl start
gitlab-ctl restart
gitlab-ctl stop
gitlab-ctl status
8.访问Gitlab
http://10.10.10.105:11000
访问上述地址即可打开Gitlab页面。首次登录时,需要修改root密码。
9.Gitlab其他信息
gitlab-ctl tail #查看所有日志
gitlab-ctl tail nginx/gitlab_access.log #查看nginx访问日志
Gitlab仓库位置:
/var/opt/gitlab/git-data/repositories
查看Gitlab版本信息:
gitlab-rake gitlab:env:info
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
10.重置root密码
gitlab-rails console production irb(main)::> user = User.where(id: 1).first
=> #<User id: , email: "admin@example.com", ...
irb(main)::> user.password=12345678
=>
irb(main)::> user.password_confirmation=12345678
=>
irb(main)::> user.save!
=> true
irb(main)::> quit
二、Gitlab汉化
1.停止Gitlab服务
gitlab-ctl stop
2.查看Gitlab版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
10.0.
yum -y install git
3.克隆获取汉化版本库
cd /root
git clone https://gitlab.com/xhang/gitlab.git
4.查看汉化版本
cat gitlab/VERSION
10.2.
cd /root/gitlab/
git diff v10.0.0 v10.0.0-zh >/tmp/10.0.-zh.diff
yum install patch -y
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < /tmp/10.0.-zh.diff
5.启动和重新配置Gitlab
gitlab-ctl start
gitlab-ctl reconfigure
三、升级Gitlab
1.关闭部分Gitlab服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl stop nginx
2.升级
rpm -Uvh gitlab-ce-10.0.-ce..el6.x86_64.rpm
3.重新配置Gitlab
gitlab-ctl reconfigure
4.重启Gitlab
gitlab-ctl restart
四、安装Jenkins
参见:https://www.cnblogs.com/xialiaoliao0911/p/8638495.html
五、安装Gitlab插件
1.首先登录Jenkins,点击“系统管理”>"插件管理"。在插件管理中可以看到“可更新”、“可选插件”、“已安装”插件。
2.我们切换到“可选插件”选项卡,在搜索框中输入gitlab,找到gitlab pulgin。选中点击安装。如下是已经安装好的Gitlab插件。
六、配置Gitlab插件
1.打开Gitlab,点击右上角头像下拉框中的“Setting”>"Account",复制“Private token”备用。
2.打开Jenkins,点击“系统管理”>"系统设置。
3.点击“配置”下拉框,选择Gitlab选项。
4.配置Gitlab.
Connection name: 填写一个有意义的名字
Gitlab host URL : 填写Gitlab的实际地址
然后点击“Add”>Jenkins.
在弹出框里,“类型” 选择“Gitlab API token”, API token 中输入之前复制的Private token.然后点击“添加”。
在选择刚才新建的Credentials:
设置完成后,点击“Test Connection” 来测试一下是否可以成功连接。显示“Success” 则说明测试成功。
之后点击“应用”后,再点击“保存”。
七、配置Git插件
1.打开Jenkins,点击“系统管理”>“系统设置”。
2.点击“配置”下拉框,选择“Git plugin”.
然后设置Git插件的全局配置。然后点击“应用”并“保存”。
注: 关于git的全局配置,这里说明一下。首先在git安装完成后,可以对git进行一些全局设置。刚才的user.name和user.email就是在git中设置的。
设置方法就是执行如下两条命令:
[root@CentOS7 ~]# git config --global user.name "Sakura"
[root@CentOS7 ~]# git config --global user.email "122480579@qq.com"
查看配置信息:
[root@CentOS7 ~]# git config --list
user.name=Sakura
user.email=122480579@qq.com
core.repositoryformatversion=
core.filemode=true
core.bare=false
core.logallrefupdates=true
八、创建一个Jenkins Job
在Jenkins里,一个任务叫做一个job。一般我们的项目会有多个分支,比如开发分支和产品分支,我们可以对每一个分支都新建一个job.
比如,我们对开发分支创建一个测试的job,每次有代码提交就自动运行一次测试,对产品分支创建一个打包的job,每次有代码提交就运行打包任务。
不过在这里,我们只是单纯的创建一个job,来演示jenkins自动运行任务的过程。首先,点击“创建一个新任务”.
任务名称:根据任务内容起一个见名知意的名字。
然后选择“构建一个自由风格的软件项目”。之后点击“确定”。
九、生成访问Gitlab的ssh密钥
1.在Linux下生成ssh密钥
在Jenkins服务器的命令行输入如下命令来生成公钥和私钥。
[root@CentOS7 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:XsMCl46+G81iIrIGR75xI8m0yElOLHESQmVNwcROS2E root@CentOS7.-
The key's randomart image is:
+---[RSA ]----+
|+o.o*Eo |
|+ o .* . |
|.+ + o o |
|.+o o = . |
|**.o . S + |
|o+O o. + o . |
|o..=..= + |
| +.. o + |
|o o. |
+----[SHA256]-----+
记录下私钥的存放路径以备用。
2. 复制公钥文件里的全部内容,然后打开Gitlab,找到SSH Keys. 然后将刚才复制的公钥文件内容粘贴进Key中。
Title : 自定义,起一个见名知意的名字。
然后点击“Add Key”。填写成功后,会在下方的“Your SSH keys”中显示已添加的Key.
添加后的结果:
十、配置Job
1.打开Jenkins,点击刚刚创建的Job的名称“deployfrontend”.
2.然后点击“配置”
3.配置Job的“源码管理”
(1)首先打开GitLab,新建一个Project,命名为monkey.
点击扳手图标,即可看到新建按钮。
新建成功后,效果如下:
(2)再在GitLab中,新建用户coldplay. 并设置密码为coldplay.
(3)在新建的Project加入成员coldplay.
首先点击扳手图标,查看所有Project.
然后点击需要添加的Project,这里是Administrator/monkey.
进入如下页面后,点击后边的Manage access.
添加成员用户,并设置角色权限。点击“Add to project”加入到Project.
(4)复制刚才在Gitlab中新建的Project的地址。
(5)在Jenkins中,选择“源码管理”>Git. 将Gitlab的项目地址填写到Repository URL中。然后点击“credentials”后面的“Add”按钮。
这里的Credentials后选择coldplay,并输入它的密码。
如果没报错,说明成功了,点击页面底部的“应用”。如果出错了,会在“Repository URL”和“Credentials”之间显示红色的错误信息。
Jenkins job默认对master分支进行构建,你也可以自定义分支。这要求你的Gitlab代码仓库中要存在这个分支,一般来说,就是要向代码仓库提交一次更改,请 自行完成(Gitlab项目刚创建时是空的,一个分支也没有,这样的话,自动构建时会出错)。
4.配置Job的构建触发器
点击“构建触发器”,然后选择“轮询”SCM。这里我们可以设置每十五分钟轮询一次。
其他选项,大家可以根据实际情况设置。
5.配置Job的构建脚本
点击“构建”,然后选择“执行shell”(可根据实际情况选择)
之后,我们就可以设置我们需要执行的shell命令了。
6.配置构建后操作
根据实际情况可选择相应的操作。例如:邮件通知
十一、实例演示
1.需求说明
【服务器说明】
10.10.10.102:Gitlab服务器,这里记作A。
10.10.10.103:Jenkins服务器,这里记作B。
10.10.10.104:生产服务器,即需要部署程序的机器,这里记作C。
10.10.10.105:测试服务器,在该台服务器编写代码,这里记作D。
注:上述4台机器都需要安装Git.
Gitlab-->Jenkins ,Gitlab-->生产服务器,都做免密登录。
【需求】
在D机器上编写好的代码,可以push到A机器上。然后通过Jenkins自动将代码发布到C上。
2.操作步骤
(1)首先在Gitlab(10.10.10.102)上新建用户coldplay,新建项目monkey. 并将coldplay用户加入到monkey项目中;
Gitlab中新建的项目名称要和生产服务器上的项目名称保持一致,这里都叫monkey.
(2)然后打开Jenkins(10.10.10.103),新建任务monkey,并配置monkey项目地址;
(3)在生产服务器上(10.10.10.104)安装tomcat,并设置一个默认页。
- 在/usr/local/apache-tomcat-9.0.8/conf/server.xml中的如下位置新添加如下内容(红色字体部分):
注意docBase的位置要和你实际的地址相同。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"> <!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
--> <!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" /> #############################################add by guanyy#################################################
<Context path="" docBase="/usr/local/apache-tomcat-9.0.8/webapps/monkey" debug="0" reloadable="true" />
########################################################################################################### </Host>
- 在/usr/local/apache-tomcat-9.0.8/conf/web.xml中检查默认页设置(注意要和项目中的名字相同);
如下红色字体部分是设置多个默认页,你需要保证你的默认页的名字是如下文件的一个
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
- 在/usr/local/apache-tomcat-9.0.8/conf/server.xml中修改端口为8090
<Connector port="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort="" />
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
port="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort="" />
(4)设置默认页(10.10.10.104)
在如下目录新建一个文件index.html(和前一步的名字保持一致),monkey可能不存在,需要新建;
/usr/local/apache-tomcat-9.0./webapps/monkey/index.html
index.html的内容如下:
[root@CentOS7 monkey]# more index.html
<html>
<H1>
Hello World!<br>
<H1>
</html>
设置完成后,启动tomcat,在浏览器输入http://10.10.10.104:8090会看到Hello World!
(5)在生产服务器上(10.10.10.104)生成公钥和私钥,并将公钥文件的内容粘贴到Gitlab(10.10.10.102)中的SSH Keys中.
(6)在测试服务器(10.10.10.105)上添加并push代码到Gitlab(10.10.10.102);
测试服务器上现有文件index.html。
#添加远程仓库到本地
git remote add origin http://10.10.10.102:11000/root/monkey.git
注:http://10.10.10.102:11000/root/monkey.git为远程仓库地址 #添加文件
git add index.html #提交文件
git commit -m "the first commit" #将提交的代码push到远程仓库上
git push -u origin master
注意:提交代码到远程仓库时,需要输入远程仓库的用户名和密码。同理,从远程仓库拉取代码到本地也需要用户名和密码。可以通过如下方式设置免密登录:
例如:本地测试服务器拉取的代码存放在/root目录下
#切换到/root目录
cd /root #初始化git仓库
git init #从远程拉取代码
git clone http://10.10.10.102:11000/root/monkey.git #拉取代码后会在本地目录下生成一个隐藏文件夹.git #进入到.git目录并新建空文件.git-credentials
cd /root/.git
touch .git-credentials #在.git-credentials中填入如下内容并保存:
[root@CentOS7 .git]# more .git-credentials
http://{coldplay}:{coldplay}@10.10.10.102:8090 第一个coldplay表示的是gitlab的用户;
第二个coldplay表示的是gitlab中coldplay用户的密码;
@后面的10.10.10.102是Gitlab服务器的IP,8090是Gitlab使用的端口号; #在命令行执行如下命令:
git config --global credential.helper store #至此,免密登录设置完毕!下次提交时还需要输入一次用户名和密码。下下次就不用输入用户名和密码啦!!!
(7)在生产服务器(10.10.10.104)添加Gitlab地址并拉取代码
#添加gitlab远程仓库地址
git remote add origin http://10.10.10.102:11000/root/monkey.git #为保证拉取代码时不报冲突错误,建议将/usr/local/apache-tomcat-9.0./webapps下的monkey目录删除后再拉取 #从远程仓库拉取代码
git clone http://10.10.10.102:11000/root/monkey.git #拉取成功后,会在/usr/local/apache-tomcat-9.0./webapps目录下生成一个monkey目录 #此时,生产服务器上的代码就变成最新的了!!
(8)配置Jenkins自动拉取
首先在生产服务器(10.10.10.104)上编写一个部署脚本deploy.sh
[root@CentOS7 script]# more /root/script/deploy.sh
#!/bin/bash cd /usr/local/apache-tomcat-9.0./webapps/monkey
git pull
然后在Jenkins(10.10.10.103)的构建中输入如下命令,然后“应用”并“保存”。
ssh root@10.10.10.104 "sh -c /root/script/deploy.sh"
(9)至此,Jenkins每隔2分钟都会检查一下Gitlab,当有新代码提交到Gitlab中时,Jenkins就会调取deploy.sh将代码自动发布到生产服务器上。
3. 其他的触发构建方式
(1)使用在浏览器输入URL来触发构建,这里设置的token为StartDeploy.
当用户在浏览器中输入地址http://10.10.10.103:8080/jenkins/job/monkey/build?token=StartDeploy并回车后(刷新也可以)就开始构建!
(2)使用webhook,当Gitlab有更新时,就触发构建
- 首先打开Jenkins,将如下红框中的URL地址进行复制;
- 打开Gitlab找到需要操作的项目monkey,点击Settings>Integrations,将上一步复制的URL粘贴到框中,然后点击“Add webhook”.
- 添加完成后,会在下面显示已经添加的webhook. 我们点击Test>Push events进行验证。
上述验证过程中,可能会报403错误。
403错误解决方法可参考文档:http://doc.okbase.net/saysmy/archive/296681.html
================分割线===============================
下面我们换另一种webhook方式。
- 打开Jenkins,点击右上角的用户(这里是guanyy),然后点击“设置”
- 点击“Add new Token”,然后输入当前Jenkins用户的密码,然后点击后面的Generate。这里就生成了一个api_token
- 然后根据如下格式填写webhook的URL,把URL粘贴到Gitlab上,并Add webhook.
http://{username}:{api_token}@jenkins_ip:port/jenkins/project/项目名称
例如:
http://admin:11f3d0a5fdb7cdae3bfe6b28e8dc99ead1@10.10.10.103:8080/jenkins/project/monkey
- 找到添加好的webhook,点击Test>Push events,如果显示200,则说明测试成功。
- 此时,我们向Gitlab提交新代码后,Jenkins就会自动进行构建操作!
十二、常见错误
1. Jenkins构建任务时报错:Host key verification failed.
说明:使用yum方式安装jenkins时,会自动创建jenkins用户和jenkins组。
如果从Jenkins向生产服务器做了免密登录,且可以使用ssh root@product_ip成功登录服务器。但构建时仍提示上述错误。就是和这个jenkins用户和组有关系。
【错误1】
在Jenkins中构建任务报错:
Started by user admin
Building in workspace /var/lib/jenkins/workspace/DeployWebSite
> git rev-parse --is-inside-work-tree # timeout=
Fetching changes from the remote Git repository
> git config remote.origin.url http://192.168.10.189:8081/root/web.git # timeout=10
Fetching upstream changes from http://192.168.10.189:8081/root/web.git
> git --version # timeout=
using GIT_ASKPASS to set credentials
> git fetch --tags --progress http://192.168.10.189:8081/root/web.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse refs/remotes/origin/master^{commit} # timeout=
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=
Checking out Revision 734d97bbb476e9265fa533d12aae2f2a68a6d64a (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=
> git checkout -f 734d97bbb476e9265fa533d12aae2f2a68a6d64a
Commit message: "txt"
> git rev-list --no-walk 734d97bbb476e9265fa533d12aae2f2a68a6d64a # timeout=
[DeployWebSite] $ /bin/sh -xe /tmp/jenkins8632079384544272773.sh
+ ssh root@192.168.10.112 'sh -c /root/scripts/deployweb.sh'
Host key verification failed.
Build step 'Execute shell' marked build as failure
Finished: FAILURE
【解决方法】
默认做了免密登录之后,会在/root/.ssh目录下生成公钥和私钥!
我们需要将/root/.ssh下的文件全部复制到/var/lib/jenkins/.ssh目录下(一般yum方式的安装的jenkins会有该目录)。
【错误2】
将/root/.ssh下的文件全部复制到/var/lib/jenkins/.ssh目录下后,报错:
Started by user admin
Building in workspace /var/lib/jenkins/workspace/DeployWebSite
> git rev-parse --is-inside-work-tree # timeout=
Fetching changes from the remote Git repository
> git config remote.origin.url http://192.168.10.189:8081/root/web.git # timeout=10
Fetching upstream changes from http://192.168.10.189:8081/root/web.git
> git --version # timeout=
using GIT_ASKPASS to set credentials
> git fetch --tags --progress http://192.168.10.189:8081/root/web.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse refs/remotes/origin/master^{commit} # timeout=
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=
Checking out Revision 734d97bbb476e9265fa533d12aae2f2a68a6d64a (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=
> git checkout -f 734d97bbb476e9265fa533d12aae2f2a68a6d64a
Commit message: "txt"
> git rev-list --no-walk 734d97bbb476e9265fa533d12aae2f2a68a6d64a # timeout=
[DeployWebSite] $ /bin/sh -xe /tmp/jenkins4724191024465664565.sh
+ ssh root@192.168.10.112 'sh -c /root/scripts/deployweb.sh'
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Build step 'Execute shell' marked build as failure
Finished: FAILURE
【解决方法】
出现上述错误是由于没有将/var/lib/jenkins/.ssh目录下的文件属主用户和组修改为jenkins。修改一下即可。修改后的结果如下:
[root@web02 .ssh]# pwd
/var/lib/jenkins/.ssh
[root@web02 .ssh]# ll
-rw------- root root Jul : anaconda-ks.cfg
-rw------- jenkins jenkins Aug : authorized_keys
-rw------- jenkins jenkins Aug : id_rsa
-rw-r--r-- jenkins jenkins Aug : id_rsa.pub
-rw-r--r-- jenkins jenkins Aug : known_hosts
2.在Gitlab中配置了webhook,且可以测试成功,显示:Hook Successfully executed. 手动构建也可以成功。但提交新代码到Gitlab上后却不触发webhook.
【解决方法】
这个可能和Gitlab版本有关系。我之前使用Gitlab7.10.4配置webhook,始终无法触发webhook. 之后将Gitlab版本升级到8.6.7后。再次提交新代码到Gitlab后webhook就能自动触发了。
【Gitlab+Jenkins+Ansible】构建自动化部署的更多相关文章
- CentOS 7 Gitlab+Jenkins持续集成+自动化部署
基于上次的环境<部署Gitlab+Jenkins持续集成环境> 来实现自动化部署 系统管理–>插件管理–>安装以下插件: Credentials Plugin(默认已经安装) ...
- jenkins + pipeline构建自动化部署
一.引言 Jenkins 2.x的精髓是Pipeline as Code,那为什么要用Pipeline呢?jenkins1.0也能实现自动化构建,但Pipeline能够将以前project中的配置信息 ...
- Linux-GitLab+Jenkins持续集成+自动化部署
GitLab+Jenkins持续集成+自动化部署 什么是持续集成? (1)Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个 ...
- Windows+.Net Framework+svn+IIS在Jenkins上的自动化部署入门
关于Jenkins的使用及安装,上一篇文章我已经介绍过了,Windows+.NetCore+git+IIS在Jenkins上的自动化部署入门.这篇主要是在jenkins如何安装SVN和MSBuild. ...
- Jenkins+Docker+Git 自动化部署
Jenkins+Docker+Git 自动化部署图文教程 https://blog.csdn.net/qq_38252039/article/details/89791247 前言: 通过几天的学习和 ...
- Jenkins+PMD构建自动化静态代码检测
前言:软件缺陷是不可避免的,要尽量减少错误并提高软件质量,主要有两在类技术,即缺陷预防和缺陷检测 缺陷预防包括编写更好的设计规范.实施代码审核制度.运行代码静态分析工具.运行单元测试等 PMD是一种开 ...
- hexo-next-travis-ci 构建自动化部署博客
构建效果如上面视频所示,如果浏览器不支持请戳一下链接: 自动化部署构建效果 .只要将编辑的 .md 文件推送到 github 上,博客网站就可以更新这篇文章. 其实差不多半年前也构建过一次,由于安装 ...
- 【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot 实现自动化部署
==================================================================================================== ...
- gitlab+jenkins自动构建jar包并发布
一.背景介绍: 公司软件都是java开发的,一般都会将java代码打包成jar包发布:为了减轻运维部署的工作量,合理偷懒,就需要自动化流程一条龙服务:开发将代码提交到gitlab--->jenk ...
随机推荐
- httpclient通过post提交到webapi
var client = new HttpClient(); var url = BASConfig.Instance.SiteSettingsModule.SyncWorkLogAppUrl; va ...
- 移植mavlink协议到STM32详细教程
1准备材料, 首先准备一个带串口的stm32程序(这里选用整点原子的官方串口例程这里自己去找不讲)作者:恒久力行 QQ:624668529,然后去mavlink官网下载mavlink源码,这里重点讲解 ...
- 常用的Homebrew命令
一些常用的Homebrew命令: 更新:brew update 安装包信息检索:brew info 安装包搜索:brew search foo 安装包列表:brew list 过时信息:brew ou ...
- 转:WPF中ListBox的创建和多种绑定用法
先从最容易的开始演示ListBox控件的创建. Adding ListBox Items下面的代码是向ListBox控件中添加多项ListBoxItem集合.XAML代码如下:<ListBox ...
- https验证新发现-老知识
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier); 可以设置https全局的域名校验规则 HttpsURLConnecti ...
- Linux让Apache支持中文URL图片/文件名
需要用到iconv_hook和mod_encoding Apache(32位): 安装环境:CentOS 5.6 + Apache 2.2.15 (Apache2.4同样适用) 安装结果:安装后支持“ ...
- Python 随笔之Redis
Python学习记录 ——redis 2018-03-07 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从 ...
- 使用AirDroid控制百度影棒
十一假期的时候看到有促销活动买了一个百度影棒2S+.话说这东西当做普通家庭客厅的电视盒子还差点火候,不论是操作还是内容用起来都有点折腾.(当然,有些是形势所迫,大家都懂.) 不过,如果就把它看作是普通 ...
- Linux基础精华(转)
Linux基础精华 (继续跟新中...) 常用命令: Linux shell 环境 让你提升命令行效 率的 Bash 快捷键 [完整版] 设置你自己的liux alias Linux的Find使用 L ...
- BSGS算法初探
前言 \(BSGS\)算法,全称\(Baby\ Step\ Giant\ Step\),即大小步算法.某些奆佬也称其为拔(Ba)山(Shan)盖(Gai)世(Shi)算法. 它的主要作用是求解形式如\ ...