陈晨辰 · 2020年02月11日

【笔记7-部署发布】从0开始 独立完成企业级Java电商网站开发(服务端)

阿里云服务

file

file

购买

file

连接

file

file

购买域名

file

域名备案

file

域名解析

file

file

源配置步骤

资源地址

http://learning.happymmall.com/

配置阿里云的yum源

file

1、备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/

CentOS 5

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/rep...
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/rep...

CentOS 6

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/rep...
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/rep...

CentOS 7

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/rep...
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/rep...

3、之后运行yum makecache生成缓存

新建一个带有sudo权限的用户

新建一个带有sudo权限的用户,再连接的时候就不用root进行连接了。

执行useradd -d /usr/chen -m chen,这时候用户添加好了,chen是我自己设置的用户名,其中-d,-m是用来为登录名chen产生一个主目录,及/usr/chen这个目录。

然后cd /usr/chen,然后重置下chen的密码,执行passwd chen,因为当前登录的用户是root,所以执行的是passwd chen。

如果当前登录的是chen这个用户,执行passwd就可以了,不需要进入/usr/chen目录执行重置密码

file

赋予chen这个用户sudo权限

Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行,使用权限:在 /etc/sudoers 中有出现的使用者。

这里可以直接修改sudoers,也可以使用sudo visudo,普通用户使用前提是开放了sudo权限,但是不确定时候可以通过修改配置改变这种情况,需要输入密码,里面内容很多,我们通过查找密令查找,输入/,然后输入你要查找的内容

file

查找root这个单词,输入/root,在root 一行下面添加chen,根据你自己的用户名填写,然后强制保存:wq!就可以了,用户退出exit,用chen从新连接服务器,可以直接命令行ssh chen@ip,ip换成真实的ip地址,也可以用客户端工具,

关于sudo权限里面的详细知识点,有想了解了可以看这篇:Linux–sudo权限讲解:https://www.cnblogs.com/wazy/...

线上环境

file

安装JDK

file

首先先看当前版本的Centos有没有安装openjdk,执行rpm -qa| grep jdk,如果安装了直接删除,跳转到根目录cd /,然后创建个目录sudo mkdir developer,在创建sudo mkdir setup,将jdk下载到setup目录下,这个你目录随你自己喜欢,执行sudo wget http://learning.happymmall.co...

下载完之后赋予jdk 777权限,执行sudo chmod 777 jdk-7u80-linux-x64.rpm,然后执行安装sudo rpm -ivh jdk-7u80-linux-x64.rpm,如图所示就是安装完成了,然后cd /usr/java/jdk1.8.0_211-amd64/,这就是jdk默认安装路径

file

然后配置环境变量,执行sudo vim /etc/profile,在文件的最下面配置环境变量就可以了,保存退出:wq,使配置生效source /etc/profile,JDK就安装完毕了。

file

补充:(rpm -qa 表示列出所有被安装的rpm package,q是查询,a是all

rpm -q <rpm package name>

表示查询 rpm package name 的包是否被安装,grep jdk显示名字中包含字符串jdk的包,|表示将输出结果(字符串)转向到后面的命令处理,所以完整的意思是:列出所有已经被安装的,名字中包含jdk字符串的RPM包)

补充:(-rw-r--r--含义,第一位如果是d表示树目录,-是文件,2-4位表示用户的权限,5-7位表示用户组权限,8-10位表示其他人,r=4表示读权限,w=2表示写权限,x=1表示执行权限)

补充:chmod 命令是赋予哪些用户对于此文件哪些权限(读写执行)

安装Tomcat

cd /developer,官网下载tomcat,执行sudo wget http://learning.happymmall.co...

然后解压sudo tar -zxvf apche-tomcat-8.5.40.tar.gz,配置环境变量,使配置生效source /etc/profile,然后将解压的文件夹移动到setup,sudo mv apche-tomcat-8.5.40.tar.gz setup/

说明一下,setup/文件夹是自己放置一些安装包,压缩包的,你可以随便放,然后进入tomcat,编辑sudo vim /conf/server.xml,目的是为了修改字符集,加入URIEncoding="UTF-8",保存退出:wq

file

cd bin,执行sudo ./startup.sh,tomcat 就启动了,通过公网ip和8080就可以访问tomcat首页了

如果tomcat启动成功,但是连接不上,目前想到两种1.环境变量有没有配置,2.阿里云安全组没有开放8080端口

tomcat到此就安装完成了。

安装Maven

同样官网下载到/developer目录(http://learning.happymmall.co...

下载完解压,移动压缩包到setup,配置环境变量(关于环境变量的配置,JDK图片都中给出来了),使配置生效source /etc/profile,验证mvn -version,显示版本信息就安装成功了,到此Maven就安装ok了。

安装Vsftpd

http://learning.happymmall.co...

直接执行sudo yum -y install vsftpd,安装完之后创建ftpuser,他没有登录云服务器的权限,但是呢他有ftp的权限,cd /,创建product文件夹(线上的意思),然后里面再创建ftpfile(ftp相关的文件)

sudo mkdir product , cd product, sudo mkdir ftpfile,然后执行useradd ftpuser -d /product/ftpfile -s /sbin/nologin

修改一下ftpfile文件夹权限 sudo chown -R ftpuser.ftpuser ./ftpfile/

然后重置ftpuser的密码,sudo passwd ftpuser

然后跳转到cd /etc/vsftpd,编辑sudo vim chroot_list,将我们刚刚的匿名用户添加到里面,然后修改安全策略sudo vim /etc/selinux/config ,修改成disabled ,也可以sudo setsebool -p ftp_home_dir 1

file

下面修改conf文件,你可以配置,也可以下载上面链接提供的下载文件支付覆盖,我这儿直接覆盖了,先备份一 下自己的sudo mv vsftpd.conf vsftpd.conf.bak,然后执行 sudo wget http://learning.happymmall.co... ,上面命令是正确的,还要修改防火墙,防火墙最后一起修改。

安装nginx

cd setup/, 因为nginx 是需要编译的,下载到哪里都可以,不像maven,tomcat是绿色的,直接解压就可以了

执行sudo wget http://learning.happymmall.co...

安装nginx 之前需要安装一些依赖,执行sudo yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

然后解压nginx,sudo tar -zxvf linux-nginx-1.10.2.tar.gz

进入nginx目录,执行sudo ./configure编译,再执行 sudo make,然后执行sudo make install,nginx 同样需要配置防火墙,后面一起

输入whereis nginx 查找nginx 默认安装目录/usr/local/nginx,进入nginx/conf,然后编辑sudo vim nginx.conf,添加include vhost/*.conf;记得加;

file

然后再conf/文件夹下面创建sudo mkdir vhost,然后从上面提供的地址下载配置,也可以自己配置

file

然后启动下nginx,测试连接,直接浏览器打开公网ip就可以了,如果没链接成功,可能是阿里云安全组策略没有开放80端口,修改一下就可以了,到此nginx 就安装完成了。

安装Mysql

先查看一下又没有安装Mysql,sudo rpm -qa | grep mysql-server,如果没有就安装sudo yum -y install mysql-server,but,出问题了,不加-server成功了,也就是执行sudo yum -y install mysql

file

貌似安装过程有些差异,参考
阿里云CentOS7使用yum安装mysql

然后编辑my.cnf,sudo vim /etc/my.cnf,修改mysql字符集

file

然后配置mysql的自启动,sudo chkconfig mysqld on,执行到这儿出错了
参考帖子:阿里云CentOS 7.1使用yum安装MySql5.6.24

由于上面已经安装了MariaDB,所以应该先卸载,检查mariadb是否已安装,执行yum list installed | grep mariadb

file

发现已经安装了,下面开始卸载,执行sudo yum -y remove mariadb*,可以再执行上面的查看是否卸载成功,然后下载mysql的yum源(这里注意一下,下载并不是mysql,而是mysql yum repo , 地址:https://dev.mysql.com/downloa...

file

执行,sudo wget https://repo.mysql.com//mysql... ,版本自己选择自己的

我下载到了/developer/setup·mu目录下面,然后执行安装这个源 sudo rpm -ivh mysql80-community-release-el7-2.noarch.rpm ,然后执行yum update,然后执行sudo yum -y install mysql-server,等待下载安装就可以了

安装完之后,从新去配置字符集,执行sudo vim /etc/my.conf,配置mysql的自启动,执行sudo systemctl enable mysqld.service,执行sudo chkconfig mysqld on 也是可以的,他会自动指向上面哪个指令来执行,执行chkconfig --list mysqld,发现没有找到mysqld,应该centos 7的原因
参考:Centos7下chkconfig设置MySql自动启动

查看mysql状态执行sudo systemctl status mysqld,发现出问题了

file

我们可以通过执行cat /var/log/mysqld.log,查看错误日志

file

说明刚才配置的my.conf文件,这行是有问题的,应该是这行代码识别不了,所以注释掉,然后重启mysql,就启动成功了。

file

登录Mysql,第一次登录时不需要密码的mysql -u root ,先查看用户 ,又出现问题了,找不到mysql.user表,发现安装的mysql是8.0 然后又没找到怎么解决这个问题,所以卸载,安装mysql5.7
参考:Mysql yum安装指定版本

过了一段时间装完,又有问题,启动不了其实是上一个版本的数据没删除掉,注释了下图这段,然后重启就可以了

file

重启完之后再把注释回来,再重启,我是这么操作的,然后mysql 启动成功,登录mysql,又遇见问题,应该是mysql的密码错误,我显示跳过验证

file

当然了,上面那段不要注释掉哟,然后直接mysql 进入里面,重置密码

重置密码这块需要注意的是update user set password=password("你的新密码") where user="root"

对于5.7版本执行时又问题的,password 字段已经没有了,换成了authentication_string,所以完整的是 update mysql.user set authentication_string=password('') where user='';

就修改成功了,然后quit,把上面添加的跳过验证注释,再登录就没问题了

登录完还有问题,总是提示,You must reset your password using ALTER USER statement before executing this statement

执行下这个mysql> ALTER USER USER() IDENTIFIED BY 'Xiaoming250';引号里面是你的密码,然后FLUSH PRIVILEGES;,然后quit,重新登录就可以了。

参考:密码策略

下面添加用户,因为用root操作太危险了,GRANT USAGE ON . TO 'user01'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;

上面添加 用户名 user01 ,host 为localhost,密码 123456,不需要开放外网权限,因为程序也是运行在阿里云都是属于本地操作,防火墙3306也不要设置

然后创建数据库,grant all privileges on mmall. to chen@localhost identified by '';,然后倒入sql文件,先退出mysql,将sql文件下载到阿里云,然后登录mysql

导入之前要进入mmall database; 输入use mmall; 然后输入 source /developer/mmall.sql

file

就导入进来了,可以使用 select * from mmall_user\G; ,\G 表示格式化

file

这就是导入进来的数据,安装Mysql出现了这么多问题,总算完成了。

安装Git

cd /developer/setup 下载到这儿,wget http://learning.happymmall.co...

然后安装git 依赖,执行sudo yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils- MakeMaker

file

依赖安装完成之后,解压git,tar -zxvf git-v2.8.0.tar.gz ,cd git ,然后执行 make prefix=/user/local/git all 命令,prefix 指向编译之后存放的目录,然后执行make prefix=/user/local/git install ,执行完之后查看下版本 git -version

file

git config --global user.name "username"

git config --global user.email "1111111111@qq.com"

git config --global core.autocrlf false 让git不要管windows 和linux 换行符转换的事情

git config --global core.quotepath off 避免中文乱码

git config --global gui.encoding utf-8 gui编码配置,这个可以不用配置

ssh-keygen -t rsa -C "394722003@qq.com" 配置ssh ,然后一路回车

ssh-add ~/.ssh/id_rsa 出现这个错误,面向的是认证代理,执行
eval ssh-agent 其中ssh-agent 要键盘tab 上面的斜点,然后再执行 ssh-add ~/.ssh/id_rsa

查看id_rsa公钥,cat ~/.ssh/id_rsa.pub ,将公钥复制添加到github上就可以了,然后git安装就完成了。

配置防火墙

cd /etc/sysconfig/ , 查找iptables,执行 ll | grep ipt,发现只有iptables-config,以前这儿就困惑过,CentOS 7.0默认使用的是firewall作为防火墙,改为iptables防火墙步骤如下

a.
关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

b.
yum install iptables-services -y 安装iptables

c.
iptables防火墙(这里iptables已经安装,下面进行配置)

vi /etc/sysconfig/iptables #编辑防火墙配置文件
sampleconfiguration for iptables service
you can edit thismanually or use system-config-firewall
please do not askus to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT[0:0]
:OUTPUT ACCEPT[0:0]
-A INPUT -m state--state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -jACCEPT
-A INPUT -i lo -jACCEPT
-A INPUT -p tcp -mstate --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -jACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080-j ACCEPT
-A INPUT -j REJECT--reject-with icmp-host-prohibited
-A FORWARD -jREJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出

备注:这里使用80和8080端口为例。一般添加到“-A INPUT -p tcp -m state --state NEW -m tcp–dport 22 -j ACCEPT”行的上面或者下面,切记不要添加到最后一行,否则防火墙重启后不生效。

systemctlrestart iptables.service #最后重启防火墙使配置生效
systemctlenable iptables.service #设置防火墙开机启动

然后将线上的iptables 直接下载下来覆盖,当然你可以自己写 ,先备份mv iptables iptables.bak,然后下载wget http://learning.happymmall.co...

然后修改,vim iptables ,将图中的三个注视掉,不需要开放,保存退出,重启防火墙systemctl restart iptables,防火墙就配置完成了。

file

自动化发布脚本,

下载 wget http://learning.happymmall.co... 到/developer文件下面,

echo "===========进入git项目happymmall目录============="
cd /developer/git-repository/mmall


echo "==========git切换分之到mmall-v1.0==============="
git checkout mmall-v1.0

echo "==================git fetch======================"
git fetch

echo "==================git pull======================"
git pull


echo "===========编译并跳过单元测试===================="
mvn clean package -Dmaven.test.skip=true


echo "============删除旧的ROOT.war==================="
rm /developer/apache-tomcat-7.0.73/webapps/ROOT.war


echo "======拷贝编译出来的war包到tomcat下-ROOT.war======="
cp /developer/git-repository/mmall/target/mmall.war  /developer/apache-tomcat-7.0.73/webapps/ROOT.war


echo "============删除tomcat下旧的ROOT文件夹============="
rm -rf /developer/apache-tomcat-7.0.73/webapps/ROOT



echo "====================关闭tomcat====================="
/developer/apache-tomcat-7.0.73/bin/shutdown.sh


echo "================sleep 10s========================="
for i in {1..10}
do
        echo $i"s"
        sleep 1s
done


echo "====================启动tomcat====================="
/developer/apache-tomcat-7.0.73/bin/startup.sh

git clone 项目,然后脚本编译执行 cd /developer,mkdir git-repository

cd git-repository ,sudo chown -R chen /developer/ 赋予用户chen 操作/developer的权限

修改脚本的路径,要跟项目一致,执行./deploy.sh,就会上线了

参考:
https://blog.csdn.net/zc_2016...

推荐阅读
关注数
2
文章数
95
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息