大学时候想搞一套云主机部署自己项目,奈何资源匮乏导致兴趣大减。工作半年恰逢疫情最近感觉有点荒废,摸鱼之余想起以前的壮志豪情,不禁感触。动手吧~
现在云主机都对大学生极大优惠,还是能搞一搞的。话不多说,上云--
部署在线个人网站无非是购买云主机、申请域名、购买DNS解析服务(有的购买域名赠送)、搭建项目环境、部署项目、访问测试。
1、云主机
提供云服务的有阿里、腾讯、百度、华为云等,比较后发现配置价格优惠都差不多,毕竟有市场在。毫不犹豫选了阿里。
购买后得到以下服务:
登录:之前想着服务器可能远程连接需要虚拟机,操作时发现可以线上连接,有workbench和VNC两种方式。
2、域名
域名是最便宜的,搭建不需要数据库服务的个人静态网站博客之类的可以只申请域名,代码挂载github或gitee,直接链接就可以。将来搞套自己的工作台极好。
3、DNS解析
阿里域名购买后提供了免费基本款DNS服务,可以直接使用。
4、环境
数据库mysql,容器tomcat,项目SSM框架。
上传云服务文件可以wget、xftp。 云服务控制台有上传操作,没找到。
xftp远程连接可能需要开放远程root用户登录:
修改配置文件:/etc/ssh/sshd_config,
将 PermitRootLogin no 修改为 PermitRootLogin yes
重启 SSHD 服务
rz、sz方式: yum -y install lrzsz
Mysql
远程yum资源顺手贴了:wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
安装:(1)sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
如果与之前版本冲突:rpm -e mysql-5.0.77-4.el5_6.6.x86_64 --nodeps (其中版本为已安装冲突版本,安装之前最好把之前安装无用的清理掉 yum -y remove MySQL-* 、find / -name mysql )
安装完成会生成两个包:
/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo
(2)sudo yum install mysql-server
设密码:service mysql start
mysql -u root
use mysql
update user set password=password('123456') where user='root';
service mysql restart
登录:mysql -uroot -p 输入密码
(运行命令:systemctl start mysqld (开启数据库) systemctl enable mysqld (开机自启数据库)
)
Tomcat:
安装tomcat前需 java -version 检查java环境。
(1)安装jdk yum install java-1.8.0-openjdk (会自动安装到目录 /usr/lib/jvm/ 其他jdk版本: yum search java|grep jdk)
配置环境变量: vi /etc/profile
#java
export JAVA_HOME=/usr/java/jdk1.8.0_181/jre (写到bin/java目录前)
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
生效: source /etc/profile
(2)下载tomcat tar包 : https://tomcat.apache.org/download-80.cgi 安装: tar -zxvf ***.tar 重命名:mv *** xx
(3)进入/bin 目录 ,./startup.sh 启动成功后,http://云ip:8080 访问。
启动失败则:查看进程: ps -ef | grep tomcat
查看运行端口: netstat -tunlp
查看指定端口:netstat -lnp|grep 8080
查看日志: ./catalina.sh run
查看端口被占用情况 netstat -anp
查看进程详细情况 ps -ef|grep PID
杀掉进程 kill pid
重启tomcat.
实在不行重新下载
(4) java 占用tomcat 8080 端口情况:
[root@izbp109iqt20o2h63tpcuvz java]# netstat -lnp|grep 8080
tcp6 0 0 :::8080 :::* LISTEN 4486/java
16 /usr/local/java/jdk1.8.0_152/jre/bin/java-Djava.util.logging.config.file=/usr/local/java
(5) 防火墙开放8080端口
/etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp --dport 8080 -j ACCEPT
service iptables save 保存策略
systemctl restart iptables.service 重启防火墙
没有iptables则需安装 :
systemctl stop firewalld
systemctl mask firewalld
yum install -y iptables
yum install iptables-services
systemctl start iptables.service
systemctl restart iptables.service // 重启防火墙使配置生效
systemctl enable iptables.service // 设置防火墙开机启动
#相关命令
service iptables status #检查是否安装了iptables
yum install -y iptables #安装iptables
yum update iptables #升级iptables
yum install iptables-services #安装iptables-services
systemctl disable iptables #禁止iptables服务
systemctl stop iptables #暂停服务
systemctl enable iptables #解除禁止iptables
systemctl start iptables #开启服务
#专业关闭firewall操作
systemctl stop firewalld.service
systemctl disable firewalld.service (禁止开机自启动)
firewall-cmd --state (查看状态 not running则已关闭)
#安全配置规则
[root@localhost ~]# #开放9200端口
[root@localhost ~]# iptables -A INPUT -p tcp --dport 9200 -j ACCEPT
[root@localhost ~]# #1.查看iptables现有规则
[root@localhost ~]# iptables -L -n
[root@localhost ~]# #清空所有自定义规则
[root@localhost ~]# iptables -X
[root@localhost ~]# #添加内网ip信任(接受其所有TCP请求)
[root@localhost ~]# iptables -A INPUT -p tcp -s 192.168.24.151 -j ACCEPT
[root@localhost ~]# #过滤所有非以上规则的请求
[root@localhost ~]# iptables -P INPUT DROP
[root@localhost ~]# #封停一个IP
[root@localhost ~]# iptables -I INPUT -s 192.168.24.153 -j DROP
[root@localhost ~]# #要解封一IP
[root@localhost ~]# iptables -D INPUT -s 192.168.24.153 -j DROP
[root@localhost ~]# #保存上述规则
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ 确定 ]
查看是否有监听8080端口: netstat -lput 没有则iptables -F清空规则重新添加。
启动报firewall错,centos6以上防火墙默认使用firewall ,firewall开放端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
systemctl start firewalld (启动)
systemctl enable firewalld (自启动)
[怀疑]
1>openJDK冲突,卸载openJDK
查出: rpm -qa | grep java, 卸载:sudo rpm -e --nodeps 加卸载
全部卸载java相关:rpm -e `rpm -qa | grep java` --allmatches --nodeps
官网下载linux版jdk,安装。
2>防止启动时计算随机数的时候阻塞,启动之前造成shutdown.sh
$JAVA_HOME/jre/lib/security/java.security
将:securerandom.source=file:/dev/random
改为: securerandom.source=file:/dev/urandom
[解决]
1>由于一直只查看日志,部分日志报错并不影响正常服务,经过下载终端命令下的web浏览器进行测试:
安装: yum install links ,y继续 访问:links localhost:8080 , 方向键滑动 ,q键退出
页面显现。 服务防火墙已开放,到此原因只能是云服务器安全规则,配置安全规则即访问成功。
2>通过域名访问还需进行域名备案。
5、部署
(1)导入sql文件
create database ***;
use ***;
set names utf8;
source /../**.sql;
(2) war包部署tomcat
我这里以SSM(无maven以及springboot)web项目为例,选择相应模组
Facets必选web,如下图
选择导出:
然后build war包,导出后war包名可重命名。
(3)配置tomcat项目访问
war包扔进webApp下即可,访问时需加war包名。
修改配置文件:
server.xml: 端口改为80
设置虚拟路径:
<host>...</host>的标签之间添加 <Context docBase="E:\Tomcat 6.0\webapps\uploadPicture" path="" reloadable="true" debug="0" />
docbase: 项目的绝对路径
path: 访问该项目的路径 因为我们是想不输入项目名来访问这个项目,所以这个就为空
reloadable: 是否自动检测项目的变化。如果为true,则tomcat会自动检测项目的/WEB-INF/lib 和/WEB-INF/classes目 录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序。如果是false 就不检测 (推荐在开发的时候使用true 虽能debug消耗资源,但不用每次修改程序就重启tomcat,发布的时候用false)
6、访问
域名访问需要过审,阿里云备案会先对提交材料进行审核,无纰漏后会提交给备案机构审核(这一步就得漫长的等待了)审核通过访问域名即可进入网站了。