1.免密登陆

1.1 原理

ssh协议中用到了对称加密和非对称加密,如果不了解可以百度一下,原理引用一下这篇博客

在ssh中,非对称加密被用来在会话初始化阶段为通信双方进行会话密钥的协商。由于非对称加密的计算量开销比较大,因此一旦双方的会话密钥协商完成,后续的加密都将采用对称加密来进行。

1.2 rsa公钥秘钥生成

linux、mac系统都自带ssh工具,首先生成秘钥。

ssh-keygen -t rsa

系统提示你可以自定义公秘钥文件名字,因为机器上可能需要存多个秘钥来登录不同服务器,比如建立腾讯云的连接

Enter file in which to save the key (~/.ssh/id_rsa): id_rsa_txy

然后提示输入密码,是

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

这里直接如果不设置密码直接两次回车,然后私钥(id_rsa_txy)和公钥(id_rsa_txy.pub)就会在~/.ssh/生成。

因为自己配置了文件名 id_rsa_txy,所以要在~/.ssh/config文件中添加配置,如果没有该文件就touch生成一个

Host tx
HostName 148.70.xx.xx
User ubuntu
IdentityFile ~/.ssh/id_rsa_txy
ForwardAgent yes
ServerAliveInterval 60

1.3 公钥上传到服务器

首先,登录到远程主机

ssh [-l login_name] [-p 22] ip

ssh默认22端口,比如登录命令

ssh -l ubuntu 148.70.xx.xx

然后查看 ~/.ssh/authorized_keys 文件是否存在,如果不存在touch生成一个

touch ~/.ssh/authorized_keys

确保该文件600权限

chmod 600 authorized_keys

接下来复制本地id_rsa_txy.pub内的所有内容,粘贴到服务器的~/.ssh/authorized_keys文件中

1.4 连接测试

ssh tx

2.jdk环境

下载jdk,解压,mv到/usr/lib/jvm/jdk1.8

其实服务器一般只是用来运行程序,装jre就可以了,如果需要build项目,就需要jdk了。

vi ~/.bashrc,追加参数如下:
export JAVA_HOME=/usr/lib/jvm/jdk1.8(解压后的jdk文件夹路径)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

3.pip安装

发现ubuntu server原生提供python 2.7,但是没有pip

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
pip -V  #查看pip版本

4.设置root密码

ubuntu不提倡设置root用户,系统安装成功后,root密码是随机的,那么在这种情况下如何得到root权限呢,具体方法如下,终端中输入:

sudo passwd root

此时重新设置原登录用户的密码。(输入两次密码确认)

设置成功后在终端继续输入:

su root

则出现#号,原用户名得到root权限。此时可以进行超级用户操作。

5.supervisor安装

使用pip安装supervisor

sudo pip install supervisor

sudo echo_supervisord_conf > /etc/supervisord.conf

但生成默认配置文件/etc/权限问题,由于上一步已经设置了root密码,直接提权。

su -

修改/etc/supervisord.conf,在最后[include]中,修改files路径,supervisor会维护该路径下所有配置文件中的项目(这里需要注意,;是注释符!!!这两行默认是被注释的,要删掉;)

[include]
files = /etc/supervisor/conf.d/*.conf

好,现在在/etc/supervisor/conf.d/ 目录下创建一个 test.conf 文件,内容如下

[program:test] 		 			  ; 程序名称,在 supervisorctl 中通过这个值来对程序进行一系列的操作
autorestart=True ; 程序异常退出后自动重启
autostart=True ; 在 supervisord 启动的时候也自动启动
redirect_stderr=True ; 把 stderr 重定向到 stdout,默认 false
command=java -jar -Dserver.port=23432 test_deploy.jar ; 启动命令
user=cj ; 用哪个用户启动
directory=/Users/cj/git/test/ ; 程序的启动目录
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 10 ; stdout 日志文件备份数
stdout_logfile=/Users/cj/logs/test_stdout.log ; stdout日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录

supervisor手动启动:

supervisord [-c /etc/supervisor.conf]

supervisor手动关闭:

supervisorctl stop all  #先关闭supervisor启动脚本,之后再关闭supervisord服务
kill [pid]

supervisorctl命令

status # 查看程序状态
stop program_name # 关闭 指定的程序
start program_name # 启动 指定的程序
restart program_name # 重启 指定的程序
tail -f program_name # 查看 该程序的日志
update # 重启配置文件修改过的程序

ubuntu系统快速搭建开发环境的更多相关文章

  1. 烂泥:学习ubuntu之快速搭建LNMP环境

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 现在公司使用的都是ubuntu系统,这几天由于个别项目需要,需要搭建一个LNMP环境.为了快速搭建这个环境,我使用是apt-get方式进行安装.具体的操作 ...

  2. Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. The ...

  3. React + webpack 快速搭建开发环境

    因网上大多React + webpack快速搭建的运行不起来,便自行写了一个.在搭建开发环境的前需安装nodejs,npm. 新建一个工作目录,比如叫reactdome,在reactdome目录中运行 ...

  4. CH01基于Ubuntu系统的ZYNQ-7000开发环境的搭建

    1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx 2017.4 实验内容: 国内Window ...

  5. ubuntu环境下快速搭建开发环境

    接触ubuntu已经半年了,虽然游戏啊qq啊在linux下配置稍微麻烦一些,但是作为开发环境,ubuntu真的是好东西,无论是c啊还是php and etc 看到官网上文档开发环境建议wamp,如果是 ...

  6. 重装Ubuntu系统并配置开发环境

    安装 Ubuntu 并配置开发环境 写一篇文章详细记录下来所有的过程,以便以后参考. 安装前的准备 备份所有代码和配置文件 备份下载的各类文件 Ubuntu 安装 下载安装 Ubuntu14.04,下 ...

  7. Sublime Text3下如何快速搭建开发环境

    安装好Sublime Text3之后,简单几步就可以搭建一个好用的开发环境. sublime的设置包括自定义设置以及插件系统. 打开菜单Preferences -> Settings,编辑自定义 ...

  8. Linux Ubuntu系统下Java开发环境搭建

    操作系统:Linux x64 / Ubuntu 14.04 Java JDK版本:jdk-8u65-linux-x64.tar.gz 声明:转载请注明出处及本文链接 1. 前往ORACLE官网下载最新 ...

  9. ubuntu系统中java开发环境的搭建

    Java环境可选择 Oracle 的 JDK,或是 OpenJDK,按http://wiki.apache.org/hadoop/HadoopJavaVersions中说的,新版本在 OpenJDK ...

随机推荐

  1. 洛谷P1351 联合权值(树形dp)

    题意 题目链接 Sol 一道很简单的树形dp,然而被我写的这么长 分别记录下距离为\(1/2\)的点数,权值和,最大值.以及相邻儿子之间的贡献. 树形dp一波.. #include<bits/s ...

  2. JavaScript数组常见操作

    JavaScript数组常见操作 Tip: 右键在新标签中打开查看清晰大图 下面介绍JavaScript中的数组对象遍历.读写.排序等操作以及与数组相关的字符串处理操作 创建数组 一般使用数组字面量[ ...

  3. 分享一个好东西(一天精通MongoDB数据库)

    https://pan.baidu.com/s/1o7V5e8U 总共几个小时的视频,看了之后醍醐灌顶.分享出来.

  4. Oracle 数据库异机恢复(归档模式)

    操作必须在服务器上进行(在192.168.12.71上执行) 0.按需要恢复的日期,把距恢复日期最近的全部备份和全部备份日期后的日志备份一同拷贝到需要恢复的机器上: 1.用RMAN登陆 C:\User ...

  5. Android学习——Fragment动态加载

    动态加载原理 利用FragmentManager来添加一套Fragment事务,最后通过commit提交该事务来执行对Fragment的相关操作. FragmentManager fragmentma ...

  6. mongodb 3.4 学习 (六)监控

    mongostat mongotop db.currentOp db.serverStatus() db.stats() db.collection.stats() # 复制集监控 rs.status ...

  7. checkpoint(sqlserver数据库检查点)

    关于检查点的解释:   出于性能方面的考虑,数据库引擎对内存(缓冲区缓存)中的数据库页进行修改,但在每次更改后不将这些页写入磁盘.相反,数据库引擎定期发出对每个数据库的检查点命令.“检查点”将当前内存 ...

  8. 学习笔记-java 集合

    背景: 看的是<java核心技术 第8版>,覆盖jdk1.6.主要是对集合全局和细节进行全面掌握,较深入的理解集合.本人对java比较熟悉,但是对于细节的理解不深,知识点还不全,这是知识的 ...

  9. Facebook 新开源了 2 个东西,一个语音识别系统(wav2letter++)和一个机器学习库(flashlight)

    Open sourcing wav2letter++, the fastest state-of-the-art speech system, and flashlight, an ML librar ...

  10. dedecms 去掉栏目页的预览功能

    首先找到include/typeunit.class.admin.php 再找到 ListAllType 方法,该方法的功能是“读出所有分类” 找到并将该方法内的所以以下代码注释或者删除”<a ...