全栈工程师开发手册 (作者:栾鹏)
架构系列文章


git

工作中,我们常常需要链接远程git仓库。所以需要在本地安装使用git工具。

安装依赖包:

sudo apt-get install curl openssh-server ca-certificates

安装Git

sudo apt-get install git

设置本地ssh公钥和私钥

ssh-keygen

一路回车使用默认设置。

查看公钥

cat .ssh/id_rsa.pub

可以看到自己的公钥为以下类似字符串

ssh-rsa AAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx5R

登录git账户,打开git账户settings,在SSH key中添加上面查到的本地公钥

克隆分支到本地仓库

git clone -b 分知名 git@网址/仓库名
例如:git clone -b master git@github.com:626626cdllp/sklearn.git   # 克隆到当前目录

克隆远程仓库到本地

git clone git@网址/仓库名

这个样可以在git仓库的主页看到

例如:git@github.com:626626cdllp/sklearn.git

github

gitlab

ssh

常用命令

sudo apt-get install openssh-server  # 安装ssh服务器可以让别人的电脑访问你的电脑
ssh-keygen   # 生成密钥(公钥和私钥),生成的文件在   根目录的   .ssh/目录下
ssh-copy-id root@127.0.0.1  将本机的公钥追加到目标机器上
sudo service ssh start      # 启动
sudo systemctl restart ssh.service   # 重启ssh服务
sudo service ssh status    # 查看ssh状态

连接远程服务器

ssh IP地址     # 例如  ssh 192.168.156.25
ssh 用户名@IP地址   # 例如  ssh username@192.168.156.25
ssh 用户名@IP地址 -p 端口号

注意:要想将文件传输到远程服务器,必须先讲公钥通过ssh-copy-id username@127.0.0.1 将本机的公钥追加到目标机器上

ssh上传(下载)文件到(从)远程主机

1、上传本地文件到远程服务器或主机

scp 本地文件路径 username@servername:远程主机目录

例如:scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中

例如:scp /etc/lp/file1 zhangbin@192.168.2.156:~/ # 上传文件到远程主机根目录

2、从远程服务器或主机下载文件

下载文件我们经常使用wget,但是如果没有http服务,如何从服务器上下载文件呢?

scp username@servername:远程主机文件路径 本地目录

例如

scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)

3、从远程服务器或主机下载整个目录

scp -r username@servername:远程目录  本地目录

例如:scp -r root@192.168.0.101:/var/www/test /var/www/

4、上传目录到服务器

scp -r 本地目录 username@servername:远程目录

例如:scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录

ssh 相关参数

-1:强制使用ssh协议版本1;
-2:强制使用ssh协议版本2;
-4:强制使用IPv4地址;
-6:强制使用IPv6地址;
-A:开启认证代理连接转发功能;
-a:关闭认证代理连接转发功能;
-b:使用本机指定地址作为对应连接的源ip地址;
-C:请求压缩所有数据;
-F:指定ssh指令的配置文件;
-f:后台执行ssh指令;
-g:允许远程主机连接主机的转发端口;
-i:指定身份文件;
-l:指定连接远程服务器登录用户名;
-N:不执行远程指令;
-o:指定配置选项;
-p:指定远程服务器上的端口;
-q:静默模式;
-X:开启X11转发功能;
-x:关闭X11转发功能;
-y:开启信任X11转发功能。

ssh 别名登录小技巧

可以创建~/.ssh/config 文件并为每台服务器指定登录信息和验证方法,如下所示:

$ vim ~/.ssh/config
Host wwwHostName www.ttlsa.comPort 22User rootIdentityFile  ~/.ssh/id_rsa.pubIdentitiesOnly yesHost bbsHostName 115.28.45.104User anotheruserPubkeyAuthentication no

然后直接指定别名进行登录

ssh www

选项注释:

HostName 指定登录的主机名或IP地址
Port 指定登录的端口号
User 登录用户名
IdentityFile 登录的公钥文件
IdentitiesOnly 只接受SSH key 登录
PubkeyAuthentication

ssh 断点续传

类似scp拷贝的另一个命令 rsync就可以实现意外中断后,下次继续传,命令如下:

rsync -P --rsh=ssh home.tar 192.168.205.34:/home/home.tar

-P: 是包含了 “–partial --progress`”, 部分传送和显示进度

-rsh=ssh 表示使用ssh协议传送数据

如果不想每次都使用 rsync -P rsh=ssh 之类的,可以写成alias scpr="rsync -P --rsh=ssh"

那么下次就可以直接使用 scpr home.tar 192.168.205.34:/home/home.tar 来拷贝数据了。

python-pip

安装python3.6

为python 3.6 新版没有发布到ubuntu的正式仓库中,咱们通过第3方仓库来做

sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

离线安装python3.6

# wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
# tar -xvf Python-3.6.2.tar.xz
# cd Python-3.6.2
# ./configure
# make
# make install

如果出现错误:
can’t decompress data; zlib not available
说明缺少依赖:zlib。

# 安装依赖zlib、zlib-devel
# 在ubuntu里,zlib叫zlib1g,相应的zlib-devel叫zlib1g-dev
$ sudo apt-get install zlib1g
$ sudo apt-get install zlib1g-dev

当安装完成后,使用它来验证主二进制文件的位置:

# which python3
# python3 -V

更换python链接版本

/etc/bin/python链接转为python3.6,(原链接指向python2.7)

cd /user/bin
rm python    # 删除原链接
ln -s python3.6m python   # 建立新链接

安装pip和相关包

sudo apt-get install python-pip python-dev build-essential
sudo pip install --upgrade virtualenv
sudo pip install --upgrade pip    # 升级pip后,pip不能再使用,可以通过下面的方法修复gedit /usr/bin/pip 修改对应部分
from pip import __main__
if __name__ == '__main__':sys.exit(__main__._main())

如果不能使用就安装

sudo apt-get install python3-pip

pip更换镜像源提升下载速度

创建或打开/etc/pip.conf文件,设置如下内容更换为阿里云镜像

[global]
trusted-host = mirrors.aliyun.com
index-url = http://mirrors.aliyun.com/pypi/simple或豆瓣云镜像
[global]
trusted-host=pypi.douban.com
index-url = http://pypi.douban.com/simple/

相关命令

pip list    # 列出pip已安装的所有包
pip freeze or pip list     #   列出已安装的包
pip freeze > <目录>/requirements.txt   # 导出requirements.txt
pip install <包名> 或 pip install -r requirements.txt  # 在线安装
pip install --no-index --find-links=D:\python27\packages pandas        #  安装离线包
pip install --no-index --find-links=/home/backup    #   直接安装整个文件夹
pip download \home\lp -r requirements.txt  将需求包或环境放在txt文件中,再通过pip下载离线包
pip download \home\lp pandas    # 下载whl文件

其中requirements.txt格式如下:

alembic==0.8.6
bleach==1.4.3
click==6.6
dominate==2.2.1
Flask==0.11.1
Flask-Bootstrap==3.3.6.0
Flask-Login==0.3.2
Flask-Migrate==1.8.1
Flask-Moment==0.5.1
Flask-PageDown==0.2.1

如果已经通过pip安装了包,但是在py文件中import就是找不到,那就是说并没有把包的本地地址加载到环境变量中。

以matplot为例
1)确认有没有装这个包和对应的版本
piplist∣grepmatplot2)如果已安装,再看装在什么路径下ceiec@tf:pip list | grep matplot 2)如果已安装,再看装在什么路径下 ceiec@tf:~piplist∣grepmatplot2)如果已安装,再看装在什么路径下ceiec@tf:  pip install matplotlib
Requirement already satisfied: pyparsing in ./anaconda2/lib/python2.7/site-packages
3)把路径加入PYTHONPATH环境变量
例如,在~/.bashrc中最后一行加入
sudo vim ~/.bashrc
export PYTHONPATH=$PYTHONPATH:/home/luanpeng/.local/lib/python3.6/site-packages/
如果有多个路径,需要以冒号分隔。
然后,在bash中
source ~/.bashrc之后,python就能找到包了

shell

当我们有多个命令行时,我们需要写到sh文件中,然后调用sh命令来执行一批的命令行。
shell编程可以参考:https://blog.csdn.net/luanpeng825485697/article/details/80387819

这里写一个简单的demo可以参考

#!/bin/bash  sh文件必须以这个开头,才能用命令行去解释执行bash命令变量声明直接使用
a=123
a=" 123" 有空格需要加引号
set查看所有环境和普通变量
unset a去除变量
echo "$bb"   打印变量,注意$变量名要放在""内才有效
echo '$'   原样打出
dd=$(ls)  将命令的执行结果赋值给变量
echo $(expr $var1 \* 3 + 1);  打印表达式是输出结果
echo "$bb"456   变量拼接变量声明
declare -r var1   声明一个只读变量
declare -i number   声明一个整数
declare -a arr   声明一个数组
declare -a arr(1 2 4)   声明一个数组并初始化
unset array[1] # 删除数组中第一个元素
echo ${arr[0]}     输出变量
declare -f function_name    列出指定函数
declare -f   列出前面所有前面定义的函数
declare -x var3    声明一个环境变量向shell文件传输变量
sh test.sh zhang 20  shell命令shell文件读取传来的变量
$# 获取参数的个数
$*  获取全部参数
$@  获取全部参数name=$1    读取第一个变量
age=$2     读取第二个变量
echo "name is ${name} & age is ${age}" for循环for((i=1;i<=10;i++));
do
echo $(expr $i \* 3 + 1);
donefor i in $(seq 1 10)
for i in {1..10}
for i in `ls`;
for i in $* ;

java

安装 java jdk1.8

sudo apt-get install openjdk-8-jdk

其他方式安装

sudo add-apt-repository ppa:webupd8team/java     # 添加软件源
sudo apt-get update   #  更新软件源
sudo apt-get install oracle-java8-installer   # 安装 jdk1.8,也可以同时安装jdk1.7和jdk1.6
sudo update-alternatives --config java
sudo update-alternatives --config javac   #  查看 java 安装路径
java -version   # 查看 java 安装后的版本
sudo update-java-alternatives -l     #  查看所有 jdk 安装版本。因为可以同时安装多个jdk版本

通过-s参数可以方便的切换到其它的java版本

sudo update-java-alternatives -s java-7-oracle

当然也可以离线安装,安装包地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

修改环境变量

sudo vi ~/.bashrc

在最末尾添加如下配置:

#set Java environment
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

保存并退出,使用source命令使之生效

source ~/.bashrc

Maven

首先下载Maven的压缩包

下载apache-maven-3.3.9.bin.tar.gz

1.2 解压到目标目录,我这里解压到了/home/luanpeng/soft/apache-maven-3.3.9

1.3 在/etc/profile下添加环境变量

建立Maven的HOME目录变量:

export M2_HOME=/home/luanpeng/soft/apache-maven-3.3.9

将Maven的bin目录添加到path路径

PATH=$M2_HOME/bin:$PATH

1.4 重新启动系统,或者在终端下输入

source /etc/profile

1.5 验证环境变量是否存在

echo $M2_HOME
echo $PATH

1.6 验证Maven配置是否成功

mvn -v

mysql

建议使用docker 安装 方便卸载和清理

sudo apt-get update
sudo apt-get install mysql-server  # 安装mysql服务器,中间会提示输入密码
sudo mysql_secure_installation   # 运行安全脚本
sudo systemctl mysql start   # 启动mysql服务
systemctl status mysql.service  # 查看服务状态
sudo apt-get install mysql-workbench   # 安装可视化工具

第一次登录设置root密码

修改/etc/my.cnf文件,在mysqld配置项下面增加skip-grant-tables

重启mysql服务

service mysqld restart

无密码登陆mysql

$ su root
# mysql
mysql> use mysql;
mysql> update user set authentication_string=password("123456") where user="root";
mysql> flush privileges;
mysql> quit;

改好之后,再修改一下my.ini这个文件,把我们刚才加入的”skip-grant-tables”这行删除,保存退出再重启mysql就可以了。

4、进入mysql命令行:mysql -u root -p   (root是账户,不是必须root) 输入新密码,回车即完成访问mysql;

执行到这里可以输入几个mysql命令来进行测试一下:

显示数据库: show databases;

使用数据库: use mysql;

显示表: show tables;

安装mysql客户端

安装可视化的客户端

sudo apt-get install mysql-workbench

然后输入mysql-workbench 就可以启动了, 启动后进入edit -> preferneces -> appearance-> configure
front for 选中简体中文.

下载汉化版的main_menu.xml文件, 替换/usr/share/mysql-workbench/data/main_menu.xml文件, 然后重启workbench再看。

下载地址:https://github.com/626626cdllp/linux/blob/master/mysql/main_menu.xml

postgresql

建议使用docker安装, 方便卸载和清理

习惯性升级apt-update: sudo apt update

apt无脑安装postgresql:sudo apt install postgresql (安装以后psql会默认一个用户“postgres”,密码是随机的,不用担心,下面会教如何修改密码)

登录到postgresql里:sudo -u postgres psql

你会看到“postgres=#” 这个就是代表已经进入pg数据库了,可以输入各种命令了

FAQ:一定要注意单引号还是双引号,postgres中每个sql语句都要有分号结尾!!

修改psql的密码:ALTER USER postgres WITH PASSWORD 'xxxx'; (其中’xxxx’为用户’postgres’的密码,目前postgres的密码修改完毕)

退出数据库,修改数据库的配置文件 :\q

sudo vim /etc/postgresql/9.3/main/postgresql.conf 需要修改的内容如下:

#listen_addresses = 'localhost' 改为 listen_addresses = '*'   # 监听任何地址访问,修改连接权限
#password_encryption = on 改为 password_encryption = on    # 启用密码验证

sudo vim /etc/postgresql/9.3/main/pg_hba.conf 需要修改的内容如下

host all all 0.0.0.0 0.0.0.0 md5

重启pgsql:/etc/init.d/postgresql restart

干掉防火墙:
5432为postgreSQL默认的端口

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5432 -j ACCEPT

登录postgre SQL数据库:psql -U postgres -h 127.0.0.1

创建新用户hotpot,但不给建数据库的权限 :postgres=# create user "hotpot" with password '123456' nocreatedb; 用户名处是双引号

建立数据库,并指定所有者:postgres=# create database "testdb" with owner = "hotpot";

基本命令

\password:设置密码
\q:退出
\h:查看SQL命令的解释,比如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。

postgres的 日志目录, /var/lib/postgresql/9.6/main

如果不修改日志目录,则应该在/var/log/postgresql

在目录/etc/postgresql/9.6/main/postgresql.conf
可以修改日志,重新定向目录为/var/lib/postgresql/9.6/main

log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d
log_rotation_size = 100MB
log_min_messages = info

开发环境ubuntu16.04常用工具和设置(git、ssh、python、sh、java、Maven、mysql、postgresql)相关推荐

  1. 【centos8服务器的开发环境配置及常用工具安装】

    centos8服务器的开发环境配置及常用工具安装(不定时更新) 文章目录 centos8服务器的开发环境配置及常用工具安装(不定时更新) 一.安装yum 二.安装unzip命令 三.安装jdk8 四. ...

  2. 开发环境ubuntu16.04(ubuntu18.04)安装以后的初始化设置

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 办公室需要ubuntu系统作为linux开发环境,目前大家用的多的是ubuntu16.04/ubuntu18.04.所以这里也以ubuntu16.4/ ...

  3. Ubuntu16.04安装后开发环境配置和常用软件安装

    Ubuntu16.04安装后1.安装常用软件搜狗输入法+编辑器Atom+浏览器Chome+视频播放器vlc+图像编辑器GIMP Image Editor安装+视频录制软件RcordMyDesktop安 ...

  4. 【安卓开发系列 -- 开发环境】Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具)

    [安卓开发系列 -- 开发环境]Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具) [1]Unbuntu ...

  5. 深度学习环境 Ubuntu16.04 LTS + GTX750Ti + CUDA9.0 + cudnn7.0 + python3.6.5 + tensorflow1.6搭建

    从0搭建Ubuntu深度学习环境 Ubuntu16.04 LTS + GTX750Ti + CUDA9.0 + cudnn7.0 + python3.6.5 + tensorflow1.6 之前仅仅在 ...

  6. C51单片机学习笔记(一)——搭建开发环境及烧写工具

    C51单片机学习笔记(一)--搭建开发环境及烧写工具 文章目录 C51单片机学习笔记(一)--搭建开发环境及烧写工具 1.搭建软件开发环境及使用(Keil uVision) 2.将程序下载到单片机(烧 ...

  7. python自带的集成开发环境是什么-常用的几款Python集成开发环境或者编辑器详解...

    Python3开发常用工具一:为什么使用开发工具? 在Python3教程之<安装>中,我们已经安装了Python开发环境,但是在终端里执行相关命令始终是不能开发大型项目的,并且对写过的代码 ...

  8. php连接mysql开发环境_PHP开发环境搭建及常用的数据库操作

    PHP开发环境搭建及常用的数据库操作 常见的web服务器: httpd(Apache).nginx+PHP Tomcat:jsp+html win:IIS 客户端:IE.firefox.chrome. ...

  9. Linux命令行及各常用工具代理设置

    Linux命令行及各常用工具代理设置 命令行代理设置 1 通过命令行指定 直接为当前命令行设置代理 对当前终端的全部工具(apt.curl.wget.git 等全都有效) 以下仅以 http 代理为例 ...

最新文章

  1. 如何定制一款12306抢票浏览器——实现自动查询和预订功能
  2. 西工大开源拥挤人群数据集生成工具,大幅提升算法精度 | CVPR 2019
  3. 学习OpenGL ES之透明和混合
  4. skype linux 安装,如何在Ubuntu 18.04上安装Skype
  5. Use Case 和User Story
  6. 给 ABAP ALV 报表的数据行增添颜色效果试读版
  7. 封装instanceof
  8. css3 Gradient 背景渐变
  9. 深度学习——卷积神经网络CNN
  10. socket接口多线程数据传输
  11. 产品体验报告-美团APP
  12. Google Chrome 浏览器离线安装包下载方法
  13. Git下载并安装(完整、详细教程)
  14. 知乎运营怎么搞?开展知乎营销的流程和形式
  15. python中的Pickle文件和npy文件
  16. Python练习册,每天一个小程序(二)
  17. 程序员是如何买房的?
  18. iOS模块化灰度 A/BTest
  19. jQuery漂浮横幅图片广告代码
  20. Qt 添加 QtNetwork 库文件(包括vs中和qt中)

热门文章

  1. android语音识别 android.speech 包分析
  2. 如何在Unity项目中添加语音识别?
  3. 软件定制开发的7大好处
  4. vue前端动态分页模板(记录)
  5. line-height在安卓机位置靠上
  6. LeetCode 53最大子序和
  7. python类的继承代码_python--类的继承
  8. epoll边缘触发_epoll事件通知机制详解,水平触发和边沿触发的区别
  9. mysql主从错误1007_mysql主从错误:1032
  10. 自由幻想java_新手学习Java之面对对象-----继承