Linux 安装配置Redis

下载安装

wget http://download.redis.io/releases/redis-4.0.1.tar.gz
解压tar zxvf redis-4.0.1.tar.gz
make && make install

用cp命令复制到usr目录下运行

cp redis-server /usr/local/bin/
cp redis-cli /usr/local/bin/

新建目录,存放配置文件

mkdir /etc/redis
mkdir /var/redis
mkdir /var/redis/log
mkdir /var/redis/run
mkdir /var/redis/6379

在redis解压根目录中找到配置文件模板,复制到如下位置。

cp redis.conf /etc/redis/6379.conf

通过vim命令修改

daemonize yes
pidfile /var/redis/run/redis_6379.pid
logfile /var/redis/log/redis_6379.log
dir /var/redis/6379

最后运行redis:

$ redis-server /etc/redis/6379.conf

添加到系统服务并配置开机启动

进入到redis源码的utils目录,执行 ./install_server.sh ,所有选项默认即可。
修改 /etc/init.d/redis_6379 为 redis : mv /etc/init.d/redis_6379 /etc/init.d/redis

添加到系统服务:chkconfig --add redis
开机启动:chkconfig redis on
这样执行 service redis start|restart|stop 就可以控制redis的启动、重启、停止了。

参考:redis安装部署维护备份

Tomcat配置启动脚本和服务

vim /etc/init.d/tomcat

#!/bin/bash
#
# chkconfig: - 95 15
# description: Tomcat start/stop/status script

#Location of JAVA_HOME (bin files)

export JAVA_HOME=/usr/local/jdk.1.8.0_144

#Add Java binary files to PATH
export PATH=$JAVA_HOME/bin:$PATH

#CATALINA_HOME is the location of the configuration files of this instance of Tomcat
CATALINA_HOME=/usr/local/apache-tomcat-8.5.13

#TOMCAT_USER is the default user of tomcat
TOMCAT_USER=www

#TOMCAT_USAGE is the message if this script is called without any options
TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}"

#SHUTDOWN_WAIT is wait time in seconds for java proccess to stop
SHUTDOWN_WAIT=20

tomcat_pid() {
echo `ps -ef | grep $CATALINA_HOME | grep -v grep | tr -s " "|cut -d" " -f2`
}

start() {
pid=$(tomcat_pid)
if [ -n "$pid" ];then
echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m"
else
echo -e "\e[00;32mStarting tomcat\e[00m"
if [ `user_exists $TOMCAT_USER` = "1" ];then
su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh
else
$CATALINA_HOME/bin/startup.sh
fi
status
fi
return 0
}

status(){
pid=$(tomcat_pid)
if [ -n "$pid" ];then
echo -e "\e[00;32mTomcat is running with pid: $pid\e[00m"
else
echo -e "\e[00;31mTomcat is not running\e[00m"
fi
}

加入服务列表

chkconfig --add tomcat

启动停止tomcat

service tomcat start/stop

MySQL忘记root密码

刚在Linux装完MySQL,然而登录的时候发现不知道root密码。更坑爹的是这个版本没有生成my.cnf的文件。所以不知道如何设置登录的时候跳过密码,so google 了一下,发现可以用安全模式登录修改。操作如下:

$mysqld_safe --skip-grant-tables
> mysql
> use mysql
> update user set authentication_string = PASSWORD('123456') where user = 'root';
flush privileges;

然后用exit,重启mysql,用刚才设置的密码重新登录。

$mysql -u root -p
> show database;

发现报错:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

> SET PASSWORD = PASSWORD('123456');

搞定。

Linux系统安装MySQL

Linux版本:CentOS7.3 64位

MySQL官方下载

本文所安装的版本是5.7.19-linux-glibc,也就是说不是编译版的,是直接编译好的,相当于windows的绿色版。而且5.7的新特性中已经不再推荐用执行 mysql_install_db来初始化了。具体请看下面操作:

把下载好的安装包上传到/usr/local目录下并解压。

tar zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz

复制解压后的MySQL目录到系统的本地mysql目录

cp mysql-5.7.19-linux-glibc2.12-x86_64 /usr/local/mysql -r

添加系统mysql组和mysql用户,修改目录拥有者为mysql用户

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd mysql/
chown -R mysql:mysql ./

执行初始化命令

./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data  --initialize-insecure

结果报错:mysqld: Table ‘mysql.plugin’ doesn’t exist

于是换成

./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data  --initialize-insecure

添加mysql开启启动

cp support-files/mysql.server /etc/init.d/mysql
# 赋予可执行权限
chmod +x /etc/init.d/mysql
# 添加服务
chkconfig --add mysql 
# 显示服务列表
chkconfig --list

启动mysql服务

service mysql start

创建软链接

ln -s /usr/local/mysql/bin/mysql /usr/bin

 

Nginx反向代理配置

先说需求。一台服务器上有多个web容器,apache、nginx、tomcat。由于每个容器都需要监听不同的端口。所以为了用户访问方便,带个端口访问是在是太不专业了。使用Nginx来方向代理,至于原理就不说明了,这里只说如何配置:

Nginx默认监听80端口,假设apache监听81、tomcat监听82端口。那么我们要跳转的域名是apache.06peng.com,tomcat.06peng.com。

server {
        listen       80;
        server_name  apache.06peng.com;

        location / {
        	proxy_redirect off;
   		proxy_set_header Host $host;
    		proxy_set_header X-Real-IP $remote_addr;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://127.0.0.1:81;
        }        
    }
    
    server {
        listen       80;
        server_name  tomcat.06peng.com;
        location / {
        	proxy_redirect off;
   		proxy_set_header Host $host;
    		proxy_set_header X-Real-IP $remote_addr;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://127.0.0.1:82;
        }     
    }

 

 

Tomcat 跨域问题处理方案

1、允许Tomcat所有域访问,需要新建文件clientaccesspolicy.xml和crossdomain.xml加入%TOMCAT_HOME%\webapps\ROOT 目录下

clientaccesspolicy.xml

<?xml version=”1.0″ encoding=”utf-8″ ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers=”*”>
<domain uri=”*”/>
</allow-from>
<grant-to>
<resource path=”/” include-subpaths=”true”/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>

crossdomain.xml

<?xml version=”1.0″?>
<cross-domain-policy>
<allow-access-from domain=”*” />
</cross-domain-policy>

2、maven配置

<dependency>
    <groupId>com.thetransactioncompany</groupId>
    <artifactId>cors-filter</artifactId>
    <version>2.4</version>
</dependency>
<dependency>
    <groupId>com.thetransactioncompany</groupId>
    <artifactId>java-property-utils</artifactId>
    <version>1.9.1</version>
</dependency>
3、ROOT下的web.xml
<!--解决tomcat部署跨域问题  -->
<filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    <init-param>
        <param-name>cors.allowOrigin</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportedMethods</param-name>
        <param-value>GET, POST, HEAD, PUT, DELETE</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportedHeaders</param-name>
        <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
    </init-param>
    <init-param>
        <param-name>cors.exposedHeaders</param-name>
        <param-value>Set-Cookie</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportsCredentials</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CORS</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

windows 安装 redis

Redis本地环境搭建

Windows 下环境搭建

1. 设置hosts

set duapphosts=127.0.0.1        sqld.duapp.com
set redisduapphosts=127.0.0.1        redis.duapp.com
echo %duapphosts% >> C:\Windows\System32\drivers\etc\hosts
echo %redisduapphosts% >> C:\Windows\System32\drivers\etc\hosts

2. 下载Redis-Windows版本

Redis官网下载页面: http://redis.io/download

Windows下Redis项目: https://github.com/MSOpenTech/redis

在releases页面找到并下载最新的ZIP包: https://github.com/MSOpenTech/redis/releases

3. 解压安装

加压下载后的文件 redis-2.8.17.zip 到 redis-2.8.17 目录. 例如:D:\DevlopPrograms\redis-2.8.17.

如果需要简单测试一下, 鼠标双击 redis-server.exe即可,如果没错, 稍后会弹出命令行窗口显示执行状态.

如果不是 Administrator用户,则可能需要以管理员身份运行. 或者参考 Windows 7 启用超级管理员administrator账户的N种方法

简单测试,则使用 redis-cli.exe 即可, 打开后会自动连接上本机服务器. 可以输入 info 查看服务器信息.

如果要进行基准测试,可以启动服务器后,在cmd中运行 redis-benchmark.exe 程序.

4. 启动与注册服务

如果准备长期使用,则需要注册为系统服务.

进入CMD,切换目录:

D:
cd D:\DevlopPrograms\redis-2.8.17

注册服务,可以保存为 service-install.bat 文件:

redis-server.exe --service-install redis.windows.conf --loglevel verbose
redis-server --service-start

卸载服务, 可以保存为 uninstall-service.bat 文件.:

redis-server --service-stop
redis-server --service-uninstall

可以在注册服务时,通过 –service-name redisService1 参数直接指定服务名,适合安装多个实例的情况,卸载也是同样的道理.

启动redis服务器时也可以直接指定配置文件,可以保存为 startup.bat 文件:

redis-server.exe redis.windows.conf

当然,指定了配置文件以后,可能会碰到启动失败的问题.此时,请修改配置文件,指定maxheap 参数.

5. 修改配置文件

修改配置文件redis.windows.conf,如果有中文,请另存为UTF-8编码.

# 修改端口号
# port 6379
port 80

# 指定访问密码
# requirepass foobared
requirepass 6EhSiGpsmSMRyZieglUImkTr-eoNRNBgRk397mVyu66MHYuZDsepCeZ8A-MHdLBQwQQVQiHBufZbPa

# 设置最大堆内存限制,两者设置一个即可
# maxheap <bytes>
maxheap 512000000

# 设置最大内存限制, 两者设置一个即可
# maxmemory <bytes>
# maxmemory 512000000

此时,如果用客户端来访问,使用如下cmd命令,可以保存为 client.bat 文件:

redis-cli.exe -h redis.duapp.com -p 80 -a 6EhSiGpsmSMRyZieglUImkTr-eoNRNBgRk397mVyu66MHYuZDsepCeZ8A-MHdLBQwQQVQiHBufZbPa

6. 其他附加

管理工具: RedisStudio: https://github.com/cinience/RedisStudio

当然,目录里面也有一些word文档, 有兴趣可以读一读.

更多信息,请参考: renfufei的专栏-Redis: http://blog.csdn.net/renfufei/article/category/2470713

Retrofit Call 获取数据

关于的说明和用法可以详细查看官网

Call<List<Repo>> call = service.listRepos("octocat");

如何得到List<Repo>,请看下面的代码:

call.enqueue(new Callback<List<Repo>>() {  
    @Override
    public void onResponse(Call<List<Repo>> call, Response<List<Repo>> response) {
        
    }

    @Override
    public void onFailure(Call<List<Repo>> call, Throwable t) {
        
    }
});

 

 

git 命令说明

1、用命令进行配置
$ git config –global user.name “Your Name” $ git config –global user.email “email@example.com”
注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
2、用命令git clone克隆一个本地库
3、查看当前状态
$ git status
git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
4、添加到仓库
用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
5、提交仓库
用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m “wrote a readme file”
git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
6、查看历史记录
历史记录,在Git中,我们用git log命令查看:
$ git log commit 3628164fb26d48395383f8f31179f24e0882e1e0 Author: 06peng <linlepeng@06peng.com> Date: Tue Aug 20 15:11:49 2013 +0800 append GPL commit ea34578d5496d7dd233c827ed32a8cd576c5ee85 Author: 06peng <linlepeng@06peng.com> Date: Tue Aug 20 14:53:12 2013 +0800 add distributed 或者 $ git log –pretty=oneline 3628164fb26d48395383f8f31179f24e0882e1e0 append GPL ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
7、回滚
回退到上一个版本
$ git reset –hard 3628164
8、恢复
恢复到新版本怎么办?找不到新版本的commit id
$ git reflog ea34578 HEAD@{0}: reset: moving to HEAD^ 3628164 HEAD@{1}: commit: append GPL ea34578 HEAD@{2}: commit: add distributed cb926e7 HEAD@{3}: commit (initial): wrote a readme file
9、暂存代码
git stash 可用来暂存当前正在进行的工作
$ git stash save “work in progress for foo feature”
10、取出暂存区代码
$ git stash list 命令可以将当前的Git栈信息打印出来
git stash apply stash@{0} 就可以将你指定版本号为stash@{1}的工作取出来
当你将所有的栈都应用回来的时候,可以使用 git stash clear 来将栈清空。
11、分支管理
创建dev分支,然后切换到dev分支:
$ git checkout -b dev
用git branch命令查看当前分支:
$ git branch
换回master分支:
$ git checkout master
分支的工作成果合并到master分支上:
$ git merge dev
12、更新 & 提交
更新
git pull –rebase
如果有冲突,会提示你。冲突分为两种,一种是在不同地方的冲突,通常情况下,git是可以自己合并的。另外一种是因为可能是同一个文件的编辑,git没法自动合并,需要二选一,这时候打开冲突的文件,手动编辑文件到可用的版本。然后。。
git rebase –continue
git push
13、缓存密码
.gitconfig 文件中添加
[credential]
helper = store
或者
$ git config –global credential.helper store
14、.gitignore文件说明
*.iml
*.idea
*/.classpath
*/.launch
*/.project
*/.settings
/*.launch
/*.tmproj
*/ivy*
*/eclipse
!.gitignore
*/target
*/outputLocation_IS_UNDEFINED
15、客户端工具介绍
windows 的github软件
1.source tree
2.Git Extensions.
3.msysGit
4.Cmder
5.乌龟 tortoise git
6.twilight
16、
一、 提交时
假设修改ABC.java为Abc.java。
1.1 如果使用git命令进行仅涉及大小写的重命名
1.1.1 设置git库为大小写敏感(不建议)
$ git config core.ignorecase false
用这种方法进行重命名,用git status就可以识别出修改了,但是不推荐用这种方式,因为在更新这种修改的时候会有麻烦。
1.1.2 使用git mv命令(仅当core.ignorecase为true时可用)
$ git mv ABC.java Abc.java
$ git status
……
renamed: ABC.java -> Abc.java
此时的状态是renamed,git commit即可。
1.2 如果使用Eclipse进行仅涉及大小写的重命名
无论core.ignorecase设置为true还是false或者没有设置该项,修改之后均可正常提交,在进行Commit的时候,对话框中显示的修改文件列表有:
即删除ABC.java并增加Abc.java,直接commit然后push即可。
偶尔会出现在Eclipse端修改完之后右键commit为灰色的情况,这时候如果使用git status发现有renamed状态的修改的话,也可以直接在git bash上commit并push。
17、
比如我现在有两个分支,分别是master和develop
按照官方的说法,在.gitattributes文件中如下设置
database.xml merge=ours
两个分支中都有database.xml文件,但是内容不同,我不想在master合并develop分支的时候,把database.xml也合并了。
还需设置如下:
git config –global merge.ours.driver true
当我修改了develop分支中的database.xml,切换到master分支进行合并
git merge develop