300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 开发环境ubuntu16.04常用工具和设置(git ssh python sh java Maven mysql postgresql)

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

时间:2018-11-18 16:31:07

相关推荐

开发环境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 AAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5R

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

克隆分支到本地仓库

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

克隆远程仓库到本地

git clone git@网址/仓库名

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

例如:git@: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.25ssh 用户名@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 Port 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-propertiessudo add-apt-repository ppa:jonathonf/python-3.6sudo apt-get updatesudo apt-get install python3.6

离线安装python3.6

# wget /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/binrm python # 删除原链接ln -s python3.6m python # 建立新链接

安装pip和相关包

sudo apt-get install python-pip python-dev build-essential sudo pip install --upgrade virtualenvsudo 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 = index-url = /pypi/simple或豆瓣云镜像[global]trusted-host=index-url = /simple/

相关命令

pip list # 列出pip已安装的所有包pip freeze or pip list# 列出已安装的包pip freeze > <目录>/requirements.txt # 导出requirements.txtpip 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.6bleach==1.4.3click==6.6dominate==2.2.1Flask==0.11.1Flask-Bootstrap==3.3.6.0Flask-Login==0.3.2Flask-Migrate==1.8.1Flask-Moment==0.5.1Flask-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编程可以参考:/luanpeng825485697/article/details/80387819

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

#!/bin/bash sh文件必须以这个开头,才能用命令行去解释执行bash命令变量声明直接使用a=123a=" 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.6sudo update-alternatives --config javasudo 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

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

修改环境变量

sudo vi ~/.bashrc

在最末尾添加如下配置:

#set Java environmentexport JAVA_HOME=/usr/lib/jvm/java-8-oracleexport JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport 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_HOMEecho $PATH

1.6 验证Maven配置是否成功

mvn -v

mysql

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

sudo apt-get updatesudo 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/f文件,在mysqld配置项下面增加skip-grant-tables

重启mysql服务

service mysqld restart

无密码登陆mysql

$ su root# mysqlmysql> 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再看。

下载地址:/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 = onlog_directory = 'pg_log'log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'log_rotation_age = 1dlog_rotation_size = 100MBlog_min_messages = info

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。