Web项目远程部署
(文章较长,建议需要哪一部分点击左侧目录跳转)
获取云主机,安装系统
购买云服务器
腾讯云,1核,2G,50G
安装系统
-
Linux主要分类
- Debian:Ubuntu,Debian
- Red hat:Red Hat ,Centos
-
具体分类
-
Debian:用的deb包,使用APT包管理系统。同时Debian提供了大多数软件比较新的版本,并且提供了更多的软件包(相对于原版Red Hat)。Debian的优点在于更新迅速,软件包完善(Ubuntu尤其),操作便利。缺点是部分时候稳定性欠佳,跟进最新软件有可能存在Bug。
Ubuntu是基于Debian所开发,可以简单地认为Ubuntu是Debian的功能加强版。与Debian相比,Ubuntu提供了更人性化系统配置,更强大的系统操作以及比Debian更激进的软件更新。Ubuntu与Debian比较,可以认为Debian更趋向于保守一些,Ubuntu对新手友好度更高,上手更容易。
-
Red Hat:用rpm包,使用yum包管理系统。相对于Debian来说,Red Hat的一大特点就是慢。大部分软件停留在稳定版本,而且相距最新版版本也差较多。而且某些新版软件的一些新特性支持也比较慢,比如php-fpm。因为Red Hat是面向企业用户提供的操作系统,所以在稳定性上十分突出,一般在新功能或稳定性的选择上更倾向于后者。只有当某个功能完全确定稳定了,才会加入到系统里。优点是系统稳定,技术文档完善,如果付费的话能得到企业级别的技术支持。缺点是软件包比较老旧,而且一些较新功能会欠缺。
-
Red Hat
Red Hat是付费操作系统,你可以免费使用,但是如果要使用Red Hat的软件源并且想得到技术支持的话,是要像Windows那样掏钱的,所以大家可以理解为Linux中的Windows。这么做符合开源精神,免费使用,服务收费。
-
Centos
Centos是Red Hat的开源版本。一般在Red Hat更新之后,Centos会把代码中含有Red Hat专利的部分去掉,同时Red Hat中包含的种种服务器设置工具也一起干掉,然后重新编译就是Centos。
-
-
-
总结
如果你喜欢尝鲜,喜欢用最新的功能或喜欢折腾系统,那么Debian是个更好的选择。
如果你追求稳定,不想经常升级系统软件不爱折腾,那么Red Hat是你更好的选择。
上手难度 Ubunt<Debian<Redhat=Centos。
我安装了centOS,本文所有命令操作基于centOS7
关于系统
系统目录结构
-
登录后所在目录
刚刚远程登录后显示的是这个:
[root@VM-0-7-centos ~]#
那
~
代表什么路径呢?[root@VM-0-7-centos ~]# pwd /root
即代表着
/
根目录下的root目录,该目录为系统管理员,也称作超级权限者的用户主目录 -
/usr
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。/usr/bin: 系统用户使用的应用程序 /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序 /usr/src: 内核源代码默认的放置目录
-
/etc
这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动
-
/home
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve -
/bin
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令
远程连接操作服务器
远程连接服务器
-
选择工具
对于Windows,使用第三方软件会更方便,例如Xshell;对于Mac来说,可直接使用终端ssh进行连接centos服务器
SSH是什么?
SSH 为 (Secure Shell),专为远程登录会话和其他网络服务提供安全性的协议,如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露,目前已经成为Linux系统的标准配置。
-
使用SSH账号密码连接远程主机
-
登录命令
ssh <username>@<hostname or IP address>
user为默认的用户名,host为上面腾讯云提供给你的公网IP,SSH的默认端口是22,所以上述命令的默认连接端口为22,可以使用如下命令修改端口
$ ssh -p 2222 user@host
如图命令表示,ssh直接连接远程主机的2222端口
- 问题:密码输错三场后,提示如下错误
user@49.232.68.5's password: user@49.232.68.5: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
解决:
去腾讯云控制台改一下密码
-
登出命令
-
logout
-
exit
-
直接关闭终端
-
-
示例
wujunnan@wujunnandeMacBook-Pro ~ % ssh root@wujunnan.net root@wujunnan.net's password: Last login: Tue Nov 24 22:16:27 2020 from 120.244.160.103
-
-
使用SSH密钥登录远程主机
-
先去控制台获取密钥
-
执行以下命令,赋予私钥文件仅本人可读权限
chmod 400 <下载的与云服务器关联的私钥的绝对路径>
-
执行以下命令,进行远程登录(第一次会让输入密码)
ssh -i <下载的与云服务器关联的私钥的绝对路径> <username>@<hostname or IP address>
-
示例
wujunnan@wujunnandeMacBook-Pro ~ % ssh -i /Users/wujunnan/develop/important/wujunnan.pem root@wujunnan.net Last login: Fri Nov 20 23:52:28 2020 from 120.244.160.103
-
连接中出现的问题
-
Mac远程连接窗口会经常中断,出现send disconnect: Broken pipe
原理:
为了保证服务器的资源不被浪费,系统会对SSH的连接定期进行自动回收(即自动断开),其回收原则为:一个连接在规定的限制时间内没有数据传输就认定为超时,然后就会主动断开连接。 基于这个原则,如果想要保持连接,只需要在超时前发送一个空数据包即可。
编辑
sudo vim /etc/ssh/ssh_config
添加以下设置可解决这个问题# 断开时重试连接的次数 ServerAliveCountMax 5 # 每隔5秒自动发送一个空的请求以保持连接 ServerAliveInterval 5
修改之后需要重启远程主机,使配置生效
防火墙
腾讯云安全组
安全组是一种虚拟防火墙,可以通过配置安全组规则,允许或禁止安全组内的实例的出流量和入流量。
新建安全组时,可以选择腾讯云提供的两种安全组模板:
- 放通全部端口模板:将会放通所有出入站流量。
- 放通常用端口模板:将会放通 TCP 22端口(Linux SSH 登录),80、443端口(Web 服务),3389端口(Windows 远程登录)、 ICMP 协议(Ping)、放通内网。
所以我们可以使用腾讯云组的虚拟防火墙或者在centOS中自己开启防火墙
系统防火墙
开启防火墙后,会拦截所有端口,并设置一些白名单,我们需要把我们使用的端口加入防护墙白名单
相关命令
-
查看防火墙状态
systemctl status firewalld
下面表示未开启防火墙
Active: inactive (dead)
-
开启防火墙
systemctl start firewalld
-
开启端口
firewall-cmd --permanent --zone=public --add-port=8080/tcp --permanent
-
查看端口
firewall-cmd --permanent --query-port=8080/tcp
提示yes,即查询成功
-
重启防火墙
firewall-cmd --reload
-
查看已经开放的端口
firewall-cmd --list-ports
-
关闭防火墙端口
firewall-cmd --zone=public --remove-port=3338/tcp --permanent
-
设置防火墙开机自动启动
systemctl enable firewalld
-
开机禁用防火墙
systemctl disable firewalld
上传文件到远程服务器
scp
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令
上传命令
scp local_file remote_ip:remote_folder
默认使用22端口
上传到哪里
本地安装的软件和其他文件放在这里
/usr/local
实际使用
-
上传Tomcat压缩包(不写目的目录会默认放在roo