终端开发

使用Android Studio开发可独立运行(runnable)混淆过的Jar程序 Android安装包精简系列之资源精简 Android安装包精简系列之图片优化 Android安装包精简系列之为什么要优化精简安装包 Android安装包精简系列(总纲) Android安装包精简系列之图标转字体 gradle相关资料汇总 Android编译常见错误解决 Android编译编译速度提升 终端基于gradle的开源项目运行环境配置指引 制作终端产品演示的gif 一个关于APK Signature Scheme v2签名的神奇bug定位经历 如何随apk一起打包并使用SQLite SDK热更之gradle插件(如何在SDK代码中自动插桩及如何生成补丁包) 关于Android的APK Signature Scheme v2签名相关的资料汇总 封装HttpURLConnection实现的简单的网络请求库 一款基于Java环境的读取应用包名、签名、是否V2签名等基本信息的工具 Android的APK Signature Scheme v2签名及一款基于Java环境的校验工具介绍 如何使用Eclipse开发可执行Jar程序,并生成混淆过的jar程序 Android 相关的学习资料整理(持续更新) macOS(Sierra 10.12)上Android源码(AOSP)的下载、编译与导入到Android Studio Google也看不下去被玩坏的悬浮窗了么? Android开发常用工具资源 SDK热更系列之概述(持续整理编辑中~) SDK热更系列之SDKHotfix待优化点 Android 终端开发相关的一些神图(持续更新) SDK热更系列之Demo项目介绍概述 SDK热更系列之Demo体验方法 SDK热更系列之如何获取应用在当前设备上的so对应的指令集 Gradle Android插件使用的中那些特别注意的点 Experimental Plugin User Guide(From Android Tools Project Site) 基于Android Studio使用gradle构建包含jni以及so的构建实例 基于Instrumentation框架的自动化测试 - Android自动化测试系列(四) Instrumentation框架介绍-Android自动化测试系列(三) 关于终端设备的设备唯一性的那些事之MAC地址 关于终端设备的设备唯一性的那些事之IMEI Android 检查应用是否有root权限 ant常见错误解决方案 Gradle介绍 iMac上Android Studio 相关设置及常见问题 再说adb 再看Android官方文档之分享 再看Android官方文档之Fragment&数据保存 再看Android官方文档之Activity&Intent 再看Android官方文档之ActionBar和兼容性 adb shell input(Android模拟输入)简单总结 再看Android官方文档之建立第一个APP Android开发调试常用工具 ANR(网络资料整理) Java参数引用传递引发的惨案(又一次Java的String的“非对象”特性的踩坑经历) android.view.WindowManager$BadTokenException,Unable to add window Android签名校验机制(数字证书) Robotium二三事-Android自动化测试系列(二) Robotium介绍-Android自动化测试系列(一) Android开发中遇到的那些坑 Eclipse使用中部分经验总结 Android中关于Nativa编译(NDK、JNI)的一些问题 Android简单实现的多线程下载模块 Android内存耗用之VSS/RSS/PSS/USS adb Advanced Command URL编码中的空格(编码以后变为+) Android MD5后 bye数组转化为Hex字符串的坑(记一次为女神排忧解难的经历) Android学习之路 adb Base Command Android Log的那些坑…………

标签

android 46

Android编译常见错误解决 一个关于APK Signature Scheme v2签名的神奇bug定位经历 关于Android的APK Signature Scheme v2签名相关的资料汇总 封装HttpURLConnection实现的简单的网络请求库 一款基于Java环境的读取应用包名、签名、是否V2签名等基本信息的工具 Android的APK Signature Scheme v2签名及一款基于Java环境的校验工具介绍 如何使用Eclipse开发可执行Jar程序,并生成混淆过的jar程序 Android 相关的学习资料整理(持续更新) macOS(Sierra 10.12)上Android源码(AOSP)的下载、编译与导入到Android Studio Android开发常用命令备忘 Google也看不下去被玩坏的悬浮窗了么? Android开发常用工具资源 Android 终端开发相关的一些神图(持续更新) Gradle Android插件使用的中那些特别注意的点 Experimental Plugin User Guide(From Android Tools Project Site) iMac(OS X)搭建私有maven仓库,提供Nexus Responsitory镜像 基于Android Studio使用gradle构建包含jni以及so的构建实例 基于Instrumentation框架的自动化测试 - Android自动化测试系列(四) Instrumentation框架介绍-Android自动化测试系列(三) 关于终端设备的设备唯一性的那些事之MAC地址 关于终端设备的设备唯一性的那些事之IMEI Android 检查应用是否有root权限 iMac(OS X)El Capitan 更新遇到的那些坑 ant常见错误解决方案 Gradle介绍 iMac上Android Studio 相关设置及常见问题 再说adb 再看Android官方文档之分享 再看Android官方文档之Fragment&数据保存 再看Android官方文档之Activity&Intent 再看Android官方文档之ActionBar和兼容性 adb shell input(Android模拟输入)简单总结 再看Android官方文档之建立第一个APP Android开发调试常用工具 ANR(网络资料整理) Java参数引用传递引发的惨案(又一次Java的String的“非对象”特性的踩坑经历) android.view.WindowManager$BadTokenException,Unable to add window Android签名校验机制(数字证书) Eclipse使用中部分经验总结 Android内存耗用之VSS/RSS/PSS/USS adb Advanced Command URL编码中的空格(编码以后变为+) Android MD5后 bye数组转化为Hex字符串的坑(记一次为女神排忧解难的经历) Android学习之路 adb Base Command Android Log的那些坑…………

在Linux服务器(ubuntu 16)上部署并配置git

2016年11月16日

近期终于忍痛将所有的代码从SAE切换到了个人的vps,为方便代码管理,需要在服务器上部署git。为了方便后续查看,把过程简单整理总结一下。本教程基于:

  • 服务器:

      $ cat /proc/version
      Linux version 4.8.3-x86_64-linode76 (maker@build) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP Thu Oct 20 19:05:39 EDT 2016
      $ lsb_release -a
      No LSB modules are available.
      Distributor ID:	Ubuntu
      Description:	Ubuntu 16.04.1 LTS
      Release:	16.04
      Codename:	xenial
    
  • 客户端:macOS(10.12.1)

描述过程中,所有没有特别说明的操作都是在服务器上操作,客户端相关的操作会特别说明。

安装git

准备:切换到sudo权限账号

首先确保你当前的账号有sudo权限,如果没有,请切换到有sudo权限的账号

第一步:安装git

$ sudo apt-get install git

配置用户

​接下来我们将模拟在服务器上创建一个名gituser的用户,后续所有的仓库操作都是使用这个用户。 ​

第一步:创建git用户

$ sudo adduser gituser

第二步:禁用git用户的shell登录

为了安全考虑,我们的git用户不允许登录shell,修改方法如下。

  • 打开系统的/etc/passwd文件

      $ sudo vi /etc/passwd
    
  • 找到git用户gituser的权限信息,类似下面这行

      gituser:x:1001:1001:,,,:/home/git:/bin/bash
    
  • 修改gituser的权限,禁用shell登录,改为下面这样

      gituser:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
    

管理公钥

为了方便我们使用git,不用每次提交时都输入密码,我们可以在服务器添加客户端的ssh证书。

第一步:在客户端生成ssh公钥

默认情况下,用户的ssh密钥存储在其 ~/.ssh 目录下。进入该目录并列出其中内容,你便可以快速确认自己是否已拥有密钥:

➜  /  cd ~/.ssh
➜  .ssh  ls
github_rsa	github_rsa.pub	id_rsa	id_rsa.pub  

如果没有的话,可以用下面的命令ssh-keygen生成,在生成过程中ssh-keygen会确认密钥的存储位置,要求你输入两次密钥口令(如果你不想在使用密钥时输入口令,将其留空即可)等,如果没有特别操作,一路点击回车确认即可。操作结束以后 ~/.ssh 目录下便会存在对应的文件,具体命令如下:

➜ .ssh  ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/test/.ssh/id_rsa):
/Users/test/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/test/.ssh/id_rsa.
Your public key has been saved in /Users/test/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:dfitE9e2zsYBu9e2zsYja9e2zsYEZI9e2zsY1c9e2zs test@iMac.local

第二步:在服务端找到公钥配置文件

首先检查git用户是否存在.ssh目录及authorized_keys文件:

$ sudo cat /home/gituser/.ssh/authorized_keys

如果提示文件不存在,则运行touch命令创建,如下

$ sudo cat /home/gituser/.ssh/authorized_keys
cat: /home/gituser/.ssh/authorized_keys: No such file or directory
$ sudo touch /home/gituser/.ssh/authorized_keys

authorized_keys保存了所有的ssh连接的公钥证书

第三步: 在服务器端配置客户端的公钥文件

使用vi打开上一步生成的authorized_keys文件,然后在文末追加插入客户端的公钥文件的文本内容。建议不同的客户端的公钥用一个空行隔开

配置仓库

接下来我们将模拟在服务器test目录下创建一个名为test的git仓库。

第一步:初始化Git仓库

切换到仓库存放目录,并使用下面的命令初始化git仓库:

$ sudo git init --bare test.git
Initialized empty Git repository in ~/test/test.git/

此时已经初始化了一个空的git仓库。然后需要修改文件权限:

sudo chown -R gituser:gituser test.git

这样通过git用户gituser就可以访问这个仓库了

第二步:客户端克隆Git仓库

在上一步配置OK以后,就可以在客户端运行git clone来获取远程仓库了,例如

git clone gituser@HOST:PATH/test.git

其中HOST为对应的ip或者域名,PATH为对应的文件完整路径。接下来就可以在自己的git仓库正常的修改和提交代码修改了~

其他

默认端口修改

由于安全或者其它原因,我们可能会修改默认的SSH服务端口号,默认情况下,已有的git项目在pull或者push的时候会报错,不存在的项目在clone时会报错,例如:

➜  git push
ssh: connect to host 1.1.1.1 port 22: Connection refused
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

现在假设将服务器SSH默认端口修改为3022后,我们怎么操作:

  • 无法pull或者push

      ➜ git remote set-url origin ssh://gituser@HOST:PORT/PATH/test.git
    

    例如:

      ➜ git remote set-url origin ssh://gituser@1.1.1.1:3022/User/gituser/test/test.git
    
  • clone出错

      ➜ git clone ssh://gituser@HOST:PORT/PATH/test.git
    

    例如:

      ➜ git clone ssh://gituser@1.1.1.1:3022/User/gituser/test/test.git
    


PS:我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=10zhijuy24v4f

赞赏

取消
微信扫一扫,赞赏子勰
扫码支持
屌丝程序猿,鸡血攻城狮!努力学技术,潜心做精品!