为了账号安全,请及时绑定邮箱和手机立即绑定

电商项目部署日记

这篇日记就一个目的,记录一下部署的过程,以供大家参考
手记主要是准备分享数据库和负载均衡的部署内容,同时会给一个参考的跨域解决方案。

前置准备:

  1. 仿猫眼后端项目开发完成
  2. 获取仿猫眼前端工程
  3. CentOS主机

温馨提示:

  1. 仿猫眼项目并非必须,只要是前后端分离项目即可参考本章
  2. CentOS主机最好有一个公网IP,如果没有,可以将章节内的IP地址【域名】换成内网地址【hostname】
  3. 这里不会普及基础内容,比如Linux基础命令、如何使用远程ssh工具等,但会贴出所有的命令
  4. 如果对猫眼项目感兴趣,可以查找链接:
    https://coding.imooc.com/class/273.html?mc_marking=c16bc1b1f26c6e1c1a345f89d1c7119f&mc_channel=syb44

废话不多说,let‘s go !!!

看一下目录结构,先有个大致了解,以下目录仅代表我个人习惯:

图片描述

首先,我们把后端代码拷贝到服务器上:


安装MySQL数据库:

由于项目需要MySQL5.6以上版本的数据库,但是CentOS默认的版本过低,所以我们要先安装Mysql的数据源

1、获取数据源安装文件:

wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm

图片描述

2、安装数据源包:

rpm -Uvh mysql57-community-release-el6-9.noarch.rpm

图片描述

更新以后,在/etc/yum.repo.d/目录下会多出MySQL相关的内容

图片描述

3、yum源安装MySQL数据库

命令:yum install -y mysql-community-server

图片描述

4、开启MySQL服务

service mysqld start

图片描述

5、查看MySQL初始密码

grep 'temporary password' /var/log/mysqld.log

此处一定要注意,这个密码查看以后要快点登陆,不然会有失效的可能哦!!!
图片描述

6、登陆数据库

mysql -uroot -p

图片描述

7、修改数据库密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

图片描述

8、修改数据库远程登陆权限

选择库:use mysql;

修改权限标识:update user set host='%' where user='root';

刷新权限:flush privileges;

图片描述

至此数据库已经完成了, 至于导入数据和数据表就是so easy的事了,这里就不啰嗦了


安装JDK

后端工程使用的是Java进行开发,所以需要对JDK进行安装

1、拷贝JDK至服务器

图片描述

2、配置环境变量

vi /etc/profile

图片描述

3、使环境变量生效

图片描述


安装Zookeeper

工程是用的Dubbo进行微服务拆分的,注册中心使用的是Zookeeper,所以我们还需要安装zookeeper使用

1、下载zookeeper

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

图片描述

解压至需要的目录

图片描述

2、修改zookeeper配置文件

进入到zookeeper下的conf目录,并且修改配置文件名称:

mv zoo_sample.cfg zoo.cfg

图片描述

3、启动zookeeper文件
进入zookeeper的bin目录下,执行命令:

./zkServer.sh start

图片描述


安装Openresty

如果大家现在还不知道什么是Openresty的话,那大家真的应该补补这一部分内容。
不过这次还好,我们只是把它当作Nginx在使用,可以Openresty真的应该是大家熟知必会的内容,相信我!

1、下载Openresty的安装包

wget https://openresty.org/download/openresty-1.13.6.2.tar.gz

图片描述

2、解压缩安装包

tar -zxvf openresty-1.13.6.2.tar.gz

3、安装Openresty

进入openresty的目录,展示结构如下:

图片描述

安装基础依赖:

yum install -y pcre-devel openssl-devel gcc curl

执行命令:

./configure --prefix=/opt/install/openresty \
            --with-luajit \
            --without-http_redis2_module \
            --with-http_iconv_module

图片描述

make & make install

这里刷的太快了, 来不及截图了,大家直接执行就可以,执行成功以后就可以在/opt/install/openresty里找到你安装以后的内容了

图片描述

配置文件更新:

进入openresty/nginx/conf目录:
图片描述

打开nginx.conf文件,找到第43行:

图片描述

更新为以下内容:

图片描述

进入Nginx的sbin目录,然后启动Nginx:
图片描述

至此大家已经通过访问80端口来访问工程了

图片描述

但是通过我们的前端工程访问,会出现如下问题:

图片描述

图片地址的问题,我们暂时先不管它,重点是先解决跨域问题【如果对跨域问题不了解,可以参见文章最后】

我们需要在配置文件中加入跨域许可的配置,let’s go!

找到我们刚刚加入配置的地方,加入如下代码:

if ($request_method = 'OPTIONS') {
      add_header 'Access-Control-Allow-Origin' '*';
      add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
      add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';
      add_header 'Access-Control-Max-Age' 1728000;
      add_header 'Content-Type' 'text/plain; charset=utf-8';
      add_header 'Content-Length' 0;
      return 204;
    }
    if ($request_method = 'POST') {
      add_header 'Access-Control-Allow-Origin' '*';
      add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
      add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';
      add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    }
    if ($request_method = 'GET') {
      add_header 'Access-Control-Allow-Origin' '*';
      add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
      add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';
      add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    }

样式如下:
图片描述

配置完成后,进入Nginx的sbin目录,然后重启Nginx,命令如下:

./nginx -s reload

图片描述

再次查看刚刚的问题页面:

图片描述

从图中可以看到,跨域的问题已经解决了, 这个404的错误仅仅只是因为我们的图片服务器没有配置,所以会出现找不到的情况。

其实至此我们已经把整个的安装部署完成了,后面我会把图片服务器配置完成,让大家可以使用前端工程进行访问,构建自己的电影网站。

小贴士:

跨域:

跨域其实就是a.com域名下的js无法操作b.com或是c.a.com域名下的对象
跨域问题其实由来已久,只不过到了前后端分离以后变的越发突出, 前后端分离说白了其实是一个Web应用【前端】访问另外一个Web应用【后端】,前端的作用是负责展示数据,后端是负责提供数据,所以才会出现跨域问题。
我们在文中是一种解决方案。

跨域的解决方案相对比较多,大家可以参考慕课的文章:http://www.imooc.com/article/40074

欢迎关注课程:

点击查看更多内容
12人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消