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 # 重启配置文件修改过的程序