diff --git a/项目部署文档.md b/项目部署文档.md new file mode 100644 index 0000000..06aa449 --- /dev/null +++ b/项目部署文档.md @@ -0,0 +1,392 @@ +## 1.docker的安装 + +1. 下载工具 + + ```shell + yum install -y yum-utils + ``` + +2. 设置镜像的仓库 + + ```shell + yum-config-manager \ + --add-repo \ + https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #配置阿里云的镜像 + ``` + +3. 更新yum软件包索引 + + ```shell + yum makecache fast + ``` + +4. 安装docker相关配置 + + ```shell + yum install docker-ce docker-ce-cli containerd.io + ``` + +5. 启动docker + + ```shell + systemctl start docker + # 查看当前版本号,是否启动成功 + docker version + # 设置开机自启动 + systemctl enable docker + ``` + +## 2.安装mysql + +```shell +docker pull mysql //下载MySQL镜像 +docker run --name mysql --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=密码 -d mysql //启动MySQL +``` + +## 3.安装redis + +```shell +docker pull redis //下载Redis镜像 +docker run --name redis --restart=always -p 6379:6379 -d redis --requirepass "密码" //启动Redis +``` + +## 4.安装rabbitmq + +```shell +docker pull rabbitmq:management //下载RabbitMQ镜像 +docker run --name rabbit --restart=always -p 15672:15672 -p 5672:5672 -d rabbitmq:management //启动RabbitMQ,默认guest用户,密码也是guest。 +``` + +## 5.安装elasticsearch + +```shell +docker pull elasticsearch:7.9.2 +``` + +```shell +mkdir -p /home/elasticsearch/data/ +mkdir -p /home/elasticsearch/config/ +``` + +编写配置文件 + +```shell +echo 'http.host: 0.0.0.0 +http.cors.enabled: true +http.cors.allow-origin: "*" '>>/home/elasticsearch/config/elasticsearch.yml +``` + +修改文件夹权限 + +```shell +chmod -R 777 /home/elasticsearch/ +ls -l # 查看文件权限 +``` + +启动elasticseach镜像 + +```shell +docker run --name elasticsearch -p 9200:9200 \ + -p 9300:9300 \ + -e "discovery.type=single-node" \ + -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \ + -v /home/elasticsearch/config/elasticsearch.yml:/usr/shellare/elasticsearch/config/elasticsearch.yml \ + -v /home/elasticsearch/data:/usr/shellare/elasticsearch/data \ + -v /home/elasticsearch/plugins:/usr/shellare/elasticsearch/plugins \ + -d elasticsearch:7.9.2 +``` + +接下来我们就是拿浏览器访问啦。 + +在浏览器上输入:服务器IP地址:9200 + +可能出现的问题: + +1. 启动成功,但是访问失败的话,查看一下安全组中映射端口是否已经打开。如果是本地虚拟机,可能与防火墙相关(我用的云服务器,没有测试,如果有问题,还是需要大家自行去百度||谷歌一下)。 + +2. -e ES_JAVA_OPTS="-Xms64m -Xmx128m":配置内存大小出现了问题。(可试着调一下,docker玩不坏的,莫慌) + +3. 最后就还有可能是配置文件中出现了问题。 + + ```shell + echo 'http.host: 0.0.0.0 + http.cors.enabled: true + http.cors.allow-origin: "*" '>>/home/elasticsearch/config/elasticsearch.yml + ``` + + `http.host: 0.0.0.0` 在冒号后面有一个空格的,这里的配置文件是`yml`格式,所以一定要严格按照`yml`格式来书写。 + +安装ik分词器 + +进入已经启动成功的elasticsearch容器。 + +```shell +docker exec -it elasticsearch /bin/bashell +``` + +```shell +./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.9.2.zip +``` + +ps: `安装的ik分词器的版本一定要与elasticsearch的版本保持一致` + +下载过程中如果遇到选择,直接输入 y回车就可以了。 + +下载完成之后,退出去,重新启动elasticsearch容器。 + +```shell +docker restart elasticsearch # <容器名o容器id> 重启容器命令 +``` + +测试ik分词器是否安装成功 + +安装完成后,我们再来进行测试遍,看看有什么样的变化。 + +postman post请求分词测试:`http://服务器IP地址:9200/_analyze` + +```json +{ + "tokenizer":"ik_smart",// 分词器不同,这个地方也会有变化 具体的可能还需要去学习。 + "text":"我爱技术" +} +``` + +结果 + +```shell +{ + "tokens": [ + { + "token": "我", + "start_offset": 0, + "end_offset": 1, + "type": "CN_CHAR", + "position": 0 + }, + { + "token": "爱", + "start_offset": 1, + "end_offset": 2, + "type": "CN_CHAR", + "position": 1 + }, + { + "token": "技术", + "start_offset": 2, + "end_offset": 4, + "type": "CN_WORD", + "position": 2 + } + ] +} +``` + +## 6.安装MaxWell (ElasticSearch同步数据) + +```sh +docker pull zendesk/maxwell //下载MaxWell镜像 +docker run --name maxwell --restart=always -d zendesk/maxwell bin/maxwell --user='数据库用户名' --password='数据库密码' --host='IP地址' --producer=rabbitmq --rabbitmq_user='MQ用户名' --rabbitmq_pass='MQ密码' --rabbitmq_host='IP地址' --rabbitmq_port='5672' --rabbitmq_exchange='maxwell_exchange' --rabbitmq_exchange_type='fanout' --rabbitmq_exchange_durable='true' --filter='exclude: *.*, include: aurora.t_article.article_title = *, include: aurora.t_article.article_content = *, include: aurora.t_article.is_delete = *, include: aurora.t_article.status = *' //运行MaxWell +``` + +注意:上述命令中aurora为数据库名称 + +## 7.填写aurora-springboot中的yml文件 + +此处省略,操作比较简单,就是配置一些简单的ip+端口+用户名+密码,前提是服务器上对应的端口已经打开 + +阿里云oss具体情况详见百度 + +QQ互联具体情况详见百度 + +这里就不赘述了 + +## 8.打包运行后端项目 + +1. 使用idea右侧Maven的package命令 + +2. 在服务器的/usr/local/下面创建名为docker的文件夹 + +3. 将打包好的jar包传到服务器上面的/usr/local/docker下面 + +4. 编写Dockerfile,同时将编写好的Dockerfile传输到服务器的/usr/local/docker下面 + +```dockerfile +FROM java:8 +VOLUME /tmp +ADD aurora-springboot-0.0.1.jar blog.jar +ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/blog.jar"] +``` + +5. 编写aurora-start.sh,同时将编写好的aurora-start.sh上传到服务器的/usr/local/docker下面 + +```shell +#源jar路径 +SOURCE_PATH=/usr/local/docker +#docker 镜像/容器名字或者jar名字 这里都命名为这个 +SERVER_NAME=aurora-springboot-0.0.1.jar +TAG=latest +SERVER_PORT=8080 +#容器id +CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}') +#镜像id +IID=$(docker images | grep "$SERVER_NAME:$TAG" | awk '{print $3}') +if [ -n "$CID" ]; then + echo "存在容器$SERVER_NAME, CID-$CID" + docker stop $CID + docker rm $CID +fi +# 构建docker镜像 +if [ -n "$IID" ]; then + echo "存在$SERVER_NAME:$TAG镜像,IID=$IID" + docker rmi $IID +else + echo "不存在$SERVER_NAME:$TAG镜像,开始构建镜像" + cd $SOURCE_PATH + docker build -t $SERVER_NAME:$TAG . +fi +echo "$SERVER_NAME容器创建完成" +``` + +**注意事项:sh文件需要用notepad++转为Unix格式** + +具体操作:点开notepad++中的编辑 ---> 文档格式转换 --->转为Unix + +6. cd到/usr/local/docker下面 ,执行如下命令打包docker镜像文件 + +```shell +sh aurora-start.sh +``` + +7. 启动容器 + +```sh +docker run --name aurora-springboot-0.0.1.jar -d -p 8080:8080 aurora-springboot-0.0.1.jar:latest +``` + +8. 这样后端项目就可以在服务器上跑起来了 + +9. 访问测试(浏览器上访问) + + ```shell + ip:8080/ + ``` + +## 9.打包运行前端项目 + +1. aurora-blog项目中,更改src/config/config.ts + + ```typescript + captcha: { + TENCENT_CAPTCHA: '你自己的天御验证码'//用我的也行,但是防止我的使用量过多,导致无法验证,推荐使用自己的,毕竟我也没有充钱 + }, + qqLogin: { + QQ_APP_ID: '你自己的APP_ID', + QQ_REDIRECT_URI: 'https://你的前台域名/oauth/login/qq' + }, + ``` + +2. aurora-blog项目中,更改public/index.html + + ```html + + ``` + +3. 分别到aurora-blog和aurora-admin下面执行如下命令 (推荐关闭vscode的Eslint,本项目没有遵循Eslint的规范) + +```sh +npm install +npm run build +``` + +4. 在服务器的/usr/local/下面创建名为vue的文件夹, + +5. 将打包好的前台代码重命名为blog, 并传输到服务器的/usr/local/vue下面 + +6. 将打包好的后台代码重命名为admin, 并传输到服务器的/usr/local/vue下面 + +## 10.安装并启动nginx(没有开启https) + +tip: 在这之前,需要到域名提供商那里配置好域名,个人认为没有必要开启https,http完全够,并且省事儿 + +1. 拉取nginx镜像 + +```shell +docker pull nginx +``` + +2. 在/usr/local/nginx下创建nginx.conf文件,格式如下 + +```shell +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/octet-stream; + sendfile on; + keepalive_timeout 65; + + client_max_body_size 50m; + client_body_buffer_size 10m; + client_header_timeout 1m; + client_body_timeout 1m; + + gzip on; + gzip_min_length 1k; + gzip_buffers 4 16k; + gzip_comp_level 4; + gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; + gzip_vary on; + +server { + listen 80; + server_name 前台域名; + + location / { + root /usr/local/vue/blog; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + + location ^~ /api/ { + proxy_pass http://你的ip:8080/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + } + +server { + listen 80; + server_name 后台子域名; + + location / { + root /usr/local/vue/admin; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + + location ^~ /api/ { + proxy_pass http://你的ip:8080/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + } + } +``` + +3. 启动nginx + +```shell +docker run --name nginx --restart=always -p 80:80 -d -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/vue:/usr/local/vue nginx +``` + + +