美文网首页
【笔记7-部署发布】从0开始 独立完成企业级Java电商网站开发

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

作者: chen_chen_chen_ | 来源:发表于2020-02-11 15:34 被阅读0次

    阿里云服务

    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/repo/Centos-5.repo
    或者
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo

    CentOS 6

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

    CentOS 7

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

    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/p/8352369.html

    线上环境

    file

    安装JDK

    file

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

    下载完之后赋予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.com/tomcat/apache-tomcat-7.0.73.tar.gz

    然后解压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.com/maven/apache-maven-3.0.5-bin.tar.gz

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

    安装Vsftpd

    http://learning.happymmall.com/vsftpdconfig/

    直接执行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.com/vsftpdconfig/vsftpd.conf ,上面命令是正确的,还要修改防火墙,防火墙最后一起修改。

    安装nginx

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

    执行sudo wget http://learning.happymmall.com/nginx/linux-nginx-1.10.2.tar.gz

    安装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/downloads/repo/yum/

    file

    执行,sudo wget https://repo.mysql.com//mysql80-community-release-el7-2.noarch.rpm ,版本自己选择自己的

    我下载到了/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.com/git/git-v2.8.0.tar.gz

    然后安装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.com/env/iptables

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

    file

    自动化发布脚本,

    下载 wget http://learning.happymmall.com/deploy/deploy.sh 到/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/article/details/89361565

    相关文章

      网友评论

          本文标题:【笔记7-部署发布】从0开始 独立完成企业级Java电商网站开发

          本文链接:https://www.haomeiwen.com/subject/buexfhtx.html