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

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


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 www
    HostName www.ttlsa.com
    Port 22
    User root
    IdentityFile  ~/.ssh/id_rsa.pub
    IdentitiesOnly yes

Host bbs
    HostName 115.28.45.104
    User anotheruser
    PubkeyAuthentication 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)确认有没有装这个包和对应的版本
p i p l i s t ∣ g r e p m a t p l o t 2 ) 如 果 已 安 装 , 再 看 装 在 什 么 路 径 下 c e i e c @ t f :   pip list | grep matplot 2)如果已安装,再看装在什么路径下 ceiec@tf:~ piplistgrepmatplot2ceiec@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);
done

for 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腾讯AI架构师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值