阿里云服务

购买

连接

购买域名

域名备案

域名解析

源配置步骤

资源地址

http://learning.happymmall.com/

配置阿里云的yum源

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目录执行重置密码

赋予chen这个用户sudo权限

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

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

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

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

线上环境

安装JDK

首先先看当前版本的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默认安装路径

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

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

  1. 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

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

下面修改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;记得加;

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

然后启动下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

貌似安装过程有些差异,参考

阿里云CentOS7使用yum安装mysql

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

然后配置mysql的自启动,sudo chkconfig mysqld on,执行到这儿出错了

参考帖子:阿里云CentOS 7.1使用yum安装MySql5.6.24

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

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

执行,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,发现出问题了

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

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

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

参考:Mysql yum安装指定版本

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

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

当然了,上面那段不要注释掉哟,然后直接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

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

这就是导入进来的数据,安装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

依赖安装完成之后,解压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

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已经安装,下面进行配置)

  1. vi /etc/sysconfig/iptables #编辑防火墙配置文件
  2. sampleconfiguration for iptables service
  3. you can edit thismanually or use system-config-firewall
  4. please do not askus to add additional ports/services to this default configuration
  5. *filter
  6. :INPUT ACCEPT [0:0]
  7. :FORWARD ACCEPT[0:0]
  8. :OUTPUT ACCEPT[0:0]
  9. -A INPUT -m state--state RELATED,ESTABLISHED -j ACCEPT
  10. -A INPUT -p icmp -jACCEPT
  11. -A INPUT -i lo -jACCEPT
  12. -A INPUT -p tcp -mstate --state NEW -m tcp --dport 22 -j ACCEPT
  13. -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -jACCEPT
  14. -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080-j ACCEPT
  15. -A INPUT -j REJECT--reject-with icmp-host-prohibited
  16. -A FORWARD -jREJECT --reject-with icmp-host-prohibited
  17. COMMIT
  18. :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,防火墙就配置完成了。

自动化发布脚本,

下载 wget http://learning.happymmall.com/deploy/deploy.sh 到/developer文件下面,

  1. echo "===========进入git项目happymmall目录============="
  2. cd /developer/git-repository/mmall
  3. echo "==========git切换分之到mmall-v1.0==============="
  4. git checkout mmall-v1.0
  5. echo "==================git fetch======================"
  6. git fetch
  7. echo "==================git pull======================"
  8. git pull
  9. echo "===========编译并跳过单元测试===================="
  10. mvn clean package -Dmaven.test.skip=true
  11. echo "============删除旧的ROOT.war==================="
  12. rm /developer/apache-tomcat-7.0.73/webapps/ROOT.war
  13. echo "======拷贝编译出来的war包到tomcat下-ROOT.war======="
  14. cp /developer/git-repository/mmall/target/mmall.war /developer/apache-tomcat-7.0.73/webapps/ROOT.war
  15. echo "============删除tomcat下旧的ROOT文件夹============="
  16. rm -rf /developer/apache-tomcat-7.0.73/webapps/ROOT
  17. echo "====================关闭tomcat====================="
  18. /developer/apache-tomcat-7.0.73/bin/shutdown.sh
  19. echo "================sleep 10s========================="
  20. for i in {1..10}
  21. do
  22. echo $i"s"
  23. sleep 1s
  24. done
  25. echo "====================启动tomcat====================="
  26. /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电商网站开发(服务端)的更多相关文章

  1. 【笔记6-支付及订单模块】从0开始 独立完成企业级Java电商网站开发(服务端)

    支付模块 实际开发工作中经常会遇见如下场景,一个支付模块,一个订单模块,有一定依赖,一个同事负责支付模块,另一个同事负责订单模块,但是开发支付模块的时候要依赖订单模块的相关类 ,方法,或者工具类,这些 ...

  2. 【笔记2-环境配置及初始化】从0开始 独立完成企业级Java电商网站开发(服务端)

    准备工作 Linux系统安装 云服务器部署 概要 申请和配置 域名的购买.解析.配置.绑定流程 用户创建实操 环境安装及部署 JDK.Tomcat.Maven下载安装及配置 vsftpd下载安装及配置 ...

  3. 【笔记8-Redis分布式锁】从0开始 独立完成企业级Java电商网站开发(服务端)

    Redis分布式锁 Redis分布式锁命令 setnx当且仅当 key 不存在.若给定的 key 已经存在,则 setnx不做任何动作.setnx 是『set if not exists』(如果不存在 ...

  4. 【笔记5-购物车及地址模块】从0开始 独立完成企业级Java电商网站开发(服务端)

    购物车模块 数据库表设计 购物车表 CREATE TABLE mmall_ cart ( 'id' int(11) NOT NULL AUTO_ INCREMENT, 'user_ id' int(1 ...

  5. 【笔记4-商品模块】从0开始 独立完成企业级Java电商网站开发(服务端)

    分类管理模块 数据表结构设计 分类表 CREATE TABLE.mmall_ category' ( 'id' int(11) NOT NULL AUTO_ INCREMENT COMMENT ' 类 ...

  6. 【笔记3-用户模块】从0开始 独立完成企业级Java电商网站开发(服务端)

    数据表结构设计 关系设计 为什么不用外键? 分库分表有外键会非常麻烦,清洗数据也很麻烦.数据库内置触发器也不适合采用. 查业务问题的后悔药--时间戳 create_time 数据创建时间 update ...

  7. 从0开始独立完成企业级Java电商网站开发(服务端)

    数据表结构设计 唯一索引unique,保证数据唯一性 CREATE TABLE `mmall_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ...

  8. PHP实现日志处理类库 - 【微信开发之微电商网站】技术笔记之二

    继上篇文章[微信开发之微电商网站]技术笔记之一,昨日做了日志处理的功能. 对于现在的应用程序来说,日志的重要性是不言而喻的.很难想象没有任何日志记录功能的应用程序运行在生产环境中.日志所能提供的功能是 ...

  9. 搭建LAMP环境部署Ecshop电商网站

    实战-部署Ecshop电商网站 实验环境 Centos7 ip:192.168.121.17 一.关闭防火墙和selinux [root@localhost ~]# systemctl stop fi ...

随机推荐

  1. JS高级---bind方法

    bind方法 复制了一份的时候, 把参数传入到了f1函数中, x===>10, y===>20, null就是this, 默认就是window bind方法是复制的意思, 参数可以在复制的 ...

  2. 麦子html基础

    一.基础语法 1.基本结构

  3. input如何上传文件

    1)绑定input[type='file']的change事件 <input @change="uploadPhoto($event)" type="file&qu ...

  4. BZOJ1015[JSOI2008]星球大战starwar题解报告

    题目链接 考虑正序去除点去掉其所有连边十分复杂,可以倒序离线处理,每次新建一个点,连接其连边,用并查集统计联通块的个数. 附代码 #include<iostream> #include&l ...

  5. sudo用户找不到环境变量 sudo找不到/usr/local/bin 下的执行文件,

    出于安全方面的考虑,使用sudo执行命令将在一个最小化的环境中执行,环境变量都重置成默认状态. 所以PATH这个变量不包括用户自定义设置的内容,如找不到/usr/local/bin/下面的命令在sud ...

  6. 解决linux 中文乱码

    解决办法是在文件/etc/profile末尾添加一行 echo 'export LC_ALL="en_US.UTF-8"' >> /etc/profile source ...

  7. Rabbitmq consumer端超时报错

    0x01 应用场景: 使用rabbitmq的exchange模式,type为direct,消费端不需要向生产端返回结果no_ack=True 其中某个consumer任务耗时较长(5min以上),结果 ...

  8. Bugku - 好多压缩包 - Writeup

    bugku - 好多压缩包 - Writeup M4x原创,转载请注明出处 这道题前前后后做了好几天,这里记录一下 题目 文件下载 分析 解压下载后的文件,发现有68个压缩文件,并且每个压缩文件里都有 ...

  9. webpack: webpack简单打包后的代码(1)

    源码 本文研究的源码地址为:https://github.com/collect-webpack/practice/tree/master/webpack-01 在本研究的前提是 entry 的配置为 ...

  10. 7_4 素数环(UVa524)<回溯法和生成-测试法的比较>

    有一个环(ring)是由n个圈圈所组成的(在这里n一定是个偶数),我们想要把1到n的自然数各放到一个圈圈中,使得相邻2个圈圈中的数的和一定是素数.下图为n=6的情形.请注意:第1个圈圈中的数一定是1. ...