一.介紹
-
歡迎大家參觀(guān)我的博客,本博客使用github開(kāi)源項(xiàng)目Aurora搭建,如果覺(jué)得還可以的話(huà)忍疾,大家也可以試著自己搭建一個(gè)個(gè)人博客问窃。
Aurora
是一個(gè)前后端分離的博客系統(tǒng)峰髓,采用-
前端技術(shù)
- 基礎(chǔ)框架:vue3(前臺(tái)) vue2(后臺(tái))
- 狀態(tài)管理:pinia(前臺(tái)) vuex(后臺(tái))
- 路由組件:vue-router
- 網(wǎng)絡(luò)請(qǐng)求:axios
- 其他技術(shù):詳見(jiàn)前端項(xiàng)目的package.json
-
后端
- 基礎(chǔ)框架:springboot
- ORM框架:mybatisplus
- 權(quán)限框架:springsecurity
- 緩存中間件:redis
- 消息中間件:rabbitmq
- 搜索引擎:elasticsearch
- 對(duì)象存儲(chǔ):minio
- 定時(shí)任務(wù):quartz
- 其他技術(shù):詳見(jiàn)后端項(xiàng)目的pom.xml
-
下面是博客的部署教程:
1. 服務(wù)器配置
- 2 核 4G(使用 ES 搜索策略)
- 2 核 2G(使用 MySQL 搜素策略挣菲,關(guān)閉 ES尉间、Canal)
2. 服務(wù)器安裝 Docker
官方網(wǎng)站上有各種環(huán)境下的 安裝指南弥激,這里主要介紹 Docker CE 在 CentOS 上的安裝民泵。
2.1 卸載(可選)
如果之前安裝過(guò)舊版本的 Docker认境,可以使用下面命令卸載:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.2 安裝 Docker
-
安裝 yum 工具
yum install -y yum-utils
-
設(shè)置鏡像倉(cāng)庫(kù)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
更新 yum 軟件包索引
yum makecache fast
-
安裝 Docker CE
yum install docker-ce docker-ce-cli containerd.io
2.3 啟動(dòng) Docker
-
啟動(dòng) Docker
systemctl start docker
-
查看 Docker 版本
docker version
-
設(shè)置開(kāi)機(jī)自啟動(dòng)
systemctl enable docker
3. 安裝mysql
3.1 數(shù)據(jù)卷掛載模式
執(zhí)行以下命令進(jìn)行安裝芦拿,修改密碼為自己的密碼
docker run --name mysql --restart=always -p 3306:3306 -v /mnt/aurora/mysql/log:/var/log/mysql -v /mnt/aurora/mysql/data:/var/lib/mysql -v /mnt/aurora/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=密碼 -d mysql
4.安裝redis
docker pull redis //下載Redis鏡像
docker run --name redis --restart=always -p 6379:6379 -d redis --requirepass "密碼" //啟動(dòng)Redis
5.安裝rabbitmq
docker pull rabbitmq:management //下載RabbitMQ鏡像
docker run --name rabbit --restart=always -p 15672:15672 -p 5672:5672 -d rabbitmq:management //啟動(dòng)RabbitMQ,默認(rèn)guest用戶(hù)谭确,密碼也是guest宽档。
6.安裝elasticsearch
docker pull elasticsearch:7.9.2
mkdir -p /home/elasticsearch/data/
mkdir -p /home/elasticsearch/config/
-
編寫(xiě)配置文件
echo 'http.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*" '>>/home/elasticsearch/config/elasticsearch.yml
-
修改文件夾權(quán)限
chmod -R 777 /home/elasticsearch/ ls -l # 查看文件權(quán)限
-
啟動(dòng)elasticseach鏡像
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
接下來(lái)在瀏覽器上輸入:服務(wù)器IP地址:9200(記得先打開(kāi)服務(wù)器防火墻端口)
4.安裝ik分詞器
進(jìn)入已經(jīng)啟動(dòng)成功的elasticsearch容器炭懊。
docker exec -it elasticsearch /bin/bash
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.2/elasticsearch-analysis-ik-7.9.2.zip
ps: 安裝的ik分詞器的版本一定要與elasticsearch的版本保持一致
下載過(guò)程中如果遇到選擇并级,直接輸入 y回車(chē)就可以了。
下載完成之后凛虽,退出去死遭,重新啟動(dòng)elasticsearch容器。
docker restart elasticsearch
測(cè)試ik分詞器是否安裝成功
安裝完成后凯旋,我們?cè)賮?lái)進(jìn)行測(cè)試遍呀潭,看看有什么樣的變化。
postman post請(qǐng)求分詞測(cè)試:http://服務(wù)器IP地址:9200/_analyze
{
"tokenizer":"ik_smart",
"text":"我愛(ài)技術(shù)"
}
結(jié)果
{
"tokens": [
{
"token": "我",
"start_offset": 0,
"end_offset": 1,
"type": "CN_CHAR",
"position": 0
},
{
"token": "愛(ài)",
"start_offset": 1,
"end_offset": 2,
"type": "CN_CHAR",
"position": 1
},
{
"token": "技術(shù)",
"start_offset": 2,
"end_offset": 4,
"type": "CN_WORD",
"position": 2
}
]
}
7.安裝MaxWell
docker pull zendesk/maxwell //下載MaxWell鏡像
docker run --name maxwell --restart=always -d zendesk/maxwell bin/maxwell --user='數(shù)據(jù)庫(kù)用戶(hù)名' --password='數(shù)據(jù)庫(kù)密碼' --host='IP地址' --producer=rabbitmq --rabbitmq_user='MQ用戶(hù)名' --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 = *' //運(yùn)行MaxWell
注意:上述命令中aurora為數(shù)據(jù)庫(kù)名稱(chēng)至非。
8.修改yml文件和打包后端項(xiàng)目
1.使用idea打開(kāi)Aurora的后端項(xiàng)目代碼钠署,修改application.yaml的配置
1.1 修改mysql配置
把數(shù)據(jù)庫(kù)地址修改為自己服務(wù)器地址,數(shù)據(jù)庫(kù)名荒椭、密碼也同樣修改
1.2 修改redis配置
1.3 修改rabbitmq配置
rabbitmq默認(rèn)用戶(hù)名和密碼都是guest
1.4 修改elasticsearch地址為服務(wù)器地址
1.5 修改郵箱
username修改為自己的163郵箱
電腦搜索打開(kāi)163郵箱谐鼎,打開(kāi)設(shè)置下的SMTP服務(wù)
- 如果沒(méi)有開(kāi)啟服務(wù),點(diǎn)擊開(kāi)啟會(huì)發(fā)送短信驗(yàn)證趣惠,驗(yàn)證成功后就會(huì)得到一個(gè)密碼
- 如果開(kāi)啟過(guò)服務(wù)狸棍,下面也可以選擇新的授權(quán)碼
- 獲得授權(quán)碼之后填入下面的password里即可
1.6 修改阿里云OSS配置
可以自行搜索阿里云OSS開(kāi)通教程,把下面幾個(gè)修改成 自己的OSS
1.7 綁定自己的博客鏈接
需要提前購(gòu)買(mǎi)域名
1.8 綁定QQ互聯(lián)
綁定之后可以使用QQ登錄味悄,需要提前在官網(wǎng)注冊(cè)開(kāi)發(fā)者和創(chuàng)建網(wǎng)站草戈,由于本人也沒(méi)有綁定QQ互聯(lián),這里就暫時(shí)不進(jìn)行演示
1.9 修改博客網(wǎng)站信息
打開(kāi)這兩個(gè)文件,根據(jù)自己需求修改侍瑟,主要把Aurora作者的名字替換成自己的
2.0 打包
執(zhí)行 maven 的 package 命令選擇 jar 方式打包
-
編寫(xiě)Dockerfile,同時(shí)將編寫(xiě)好的Dockerfile傳輸?shù)椒?wù)器的/usr/local/docker下面
FROM openjdk:8 VOLUME /tmp ADD aurora-springboot-0.0.1.jar blog.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/blog.jar"]
-
編寫(xiě)aurora-start.sh,同時(shí)將編寫(xiě)好的aurora-start.sh上傳到服務(wù)器的/usr/local/docker下面
SOURCE_PATH=/usr/local/aurora-springboot SERVER_NAME=aurora-springboot-0.0.1.jar TAG=latest SERVER_PORT=8080 CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}') IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}') if [ -n "$CID" ]; then echo "存在容器$SERVER_NAME,CID-$CID" docker stop $CID echo "成功停止容器$SERVER_NAME,CID-$CID" docker rm $CID echo "成功刪除容器$SERVER_NAME,CID-$CID" fi if [ -n "$IID" ]; then echo "存在鏡像$SERVER_NAME:$TAG,IID=$IID" docker rmi $IID echo "成功刪除鏡像$SERVER_NAME:$TAG,IID=$IID" fi echo "開(kāi)始構(gòu)建鏡像$SERVER_NAME:$TAG" cd $SOURCE_PATH docker build -t $SERVER_NAME:$TAG . echo "成功構(gòu)建鏡像$SERVER_NAME:$TAG" docker run --restart=always --name aurora-springboot-0.0.1.jar -d -p 8080:8080 aurora-springboot-0.0.1.jar:latest echo "成功創(chuàng)建并運(yùn)行容器$SERVER_NAME"
- 把打包好的后端jar包上傳到服務(wù)器的/usr/local/docker下面
- cd到/usr/local/docker下面 唐片,執(zhí)行如下命令打包docker鏡像文件
sh aurora-start.sh
- 啟動(dòng)容器
docker run --name aurora-springboot-0.0.1.jar -d -p 8080:8080 aurora-springboot-0.0.1.jar:latest
這樣后端項(xiàng)目就可以在服務(wù)器上跑起來(lái)了
-
訪(fǎng)問(wèn)測(cè)試(瀏覽器上訪(fǎng)問(wèn))
ip:8080
出現(xiàn)下面類(lèi)似數(shù)據(jù)就說(shuō)明后端項(xiàng)目啟動(dòng)成功
image-20230413005415788
9. 打包前端項(xiàng)目
使用VSCode打開(kāi)博客后臺(tái)項(xiàng)目和前端項(xiàng)目
-
aurora-blog項(xiàng)目中,更改src/config/config.ts
captcha: { TENCENT_CAPTCHA: '你自己的天御驗(yàn)證碼' }, qqLogin: { QQ_APP_ID: '你自己的APP_ID', QQ_REDIRECT_URI: 'https://你的前臺(tái)域名/oauth/login/qq' },
-
aurora-blog項(xiàng)目中涨颜,更改public/index.html
<script src="http://connect.qq.com/qc_jssdk.js" data-appid="你自己的APP_ID" data-redirecturi="https://你的前臺(tái)域名/oauth/login/qq"></script>
-
如果你的網(wǎng)站沒(méi)有打算使用https,將aurora-blog/public/index.html和aurora-admin/public/index.html中下面這一行代碼給注釋掉
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
-
分別到aurora-blog和aurora-admin下面執(zhí)行如下命令 (推薦關(guān)閉vscode的Eslint,本項(xiàng)目沒(méi)有遵循Eslint的規(guī)范)
npm install npm run build
-
在服務(wù)器的/usr/local/下面創(chuàng)建名為vue的文件夾
image-20230413004559528 將打包好的前臺(tái)代碼重命名為blog, 并傳輸?shù)椒?wù)器的/usr/local/vue下面
-
將打包好的后臺(tái)代碼重命名為admin, 并傳輸?shù)椒?wù)器的/usr/local/vue下面
image-20230413004641673
10.安裝并啟動(dòng)nginx
關(guān)于nginx配置和服務(wù)器ssl證書(shū)申請(qǐng)等可以觀(guān)看B站Up主視頻操作(使用的是騰訊云服務(wù)器)
方式1: http
-
拉取nginx鏡像
docker pull nginx
-
在/usr/local/nginx下創(chuàng)建nginx.conf文件费韭,格式如下
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 前臺(tái)域名; location / { root /usr/local/vue/blog; index index.html index.htm; try_files $uri $uri/ /index.html; } location ^~ /api/ { proxy_pass http://服務(wù)器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 后臺(tái)子域名; location / { root /usr/local/vue/admin; index index.html index.htm; try_files $uri $uri/ /index.html; } location ^~ /api/ { proxy_pass http://服務(wù)器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; } } }
-
啟動(dòng)nginx
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
方式2: https
-
拉取nginx鏡像
docker pull nginx
-
修改配置文件
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 443 ssl; server_name 前臺(tái)域名; ssl on; ssl_certificate ssl證書(shū)文件位置; ssl_certificate_key ssl證書(shū)文件位置; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root /usr/local/vue/blog; index index.html index.htm; try_files $uri $uri/ /index.html; } location ^~ /api/ { proxy_pass http://服務(wù)器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 443 ssl; server_name 后臺(tái)域名; ssl on; ssl_certificate ssl證書(shū)文件位置; ssl_certificate_key ssl文件位置; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root /usr/local/vue/admin; index index.html index.htm; try_files $uri $uri/ /index.html; } location ^~ /api/ { proxy_pass http://服務(wù)器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 前臺(tái)域名; rewrite ^(.*)$ https://$host$1 permanent; } server { listen 80; server_name 后臺(tái)域名; rewrite ^(.*)$ https://$host$1 permanent; } }
-
啟動(dòng)nginx
docker run --name nginx --restart=always -p 443:443 -p 80:80 -d -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/cert:/e
11.結(jié)語(yǔ)
以上就是使用Aurora開(kāi)源項(xiàng)目搭建個(gè)人博客的教程,同時(shí)感謝作者開(kāi)源庭瑰,覺(jué)得本文有用的可以點(diǎn)個(gè)贊或者收藏
原創(chuàng)不易星持,覺(jué)得文章還不錯(cuò)或者感興趣可以點(diǎn)贊或者收藏一下哦!歡迎留言評(píng)論和關(guān)注一下弹灭!