赞
踩
目前是部署在Docker环境中的,查看部署命令
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock cucker/get_command_4_run_container 9592
docker run -d \
--name dreamy_pike \
--env DB_DATABASE=webstackpage \
--env DB_USERNAME=webstackpage \
--env DB_PASSWORD=xxxxxx \
--env DB_HOST=xxxxx \
--env APP_URL=http://172.31.120.16:8000 \
--ipc shareable \
-p 8000:8000/tcp \
-v /home/ops/data/webstack-laravel/uploads/:/opt/navi/public/uploads/ \
-w /opt/navi \
arvon2014/webstack-laravel:v1.2.1
关键信息
打包容器原始文件,uploads,images
cd /opt/navi/public
zip -r uploads.zip uploads
解压到NAS文件系统中
sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport xxxxxxx-xxxxx.cn-zhangjiakou.nas.aliyuncs.com:/ /tmp/nas
[2138][root@logstash-ops-1a-nx-aws nas]# ls /tmp/nas
dev html mvn qa
mkdir -p /tmp/nas/ops/portal/uploads
cd /tmp/nas/ops/portal/
unzip uploads.zip
1 uploads-pv.yaml
--- apiVersion: v1 kind: PersistentVolume metadata: name: portal-uploads-pv labels: alicloud-pvname: portal-uploads-pv spec: accessModes: - ReadWriteMany capacity: storage: 8Gi csi: driver: nasplugin.csi.alibabacloud.com volumeAttributes: path: /ops/portal/uploads server: xxxxxx-xxxxx.cn-zhangjiakou.nas.aliyuncs.com vers: "3.0" volumeHandle: portal-uploads-pv mountOptions: - nolock,tcp,noresvport - vers=3 --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: portal-uploads-pvc namespace: portal spec: accessModes: - ReadWriteMany resources: requests: storage: 8Gi selector: matchLabels: alicloud-pvname: portal-uploads-pv storageClassName: "" volumeMode: Filesystem volumeName: portal-uploads-pv
在nas传入
2 deployment.yaml
注意APP_KEY,这个是给网页进行加密的,需要查看/opt/navi/.env中的APP_KEY 并传入这个参数,不然容器无法启动
apiVersion: apps/v1 kind: Deployment metadata: name: "portal" namespace: "portal" spec: replicas: 1 selector: matchLabels: app: "portal" template: metadata: labels: app: "portal" spec: containers: - image: "arvon2014/webstack-laravel:v1.2.1" imagePullPolicy: "Always" name: "portal" ports: - containerPort: 8000 env: - name: DB_DATABASE value: "webstackpage" - name: DB_USERNAME value: "webstackpage" - name: DB_PASSWORD value: "xxxxxxxxxxxxxxx" - name: DB_HOST value: "xxxxxxxxxxxx" - name: DB_PORT value: "3306" - name: LOGIN_COPTCHA value: "true" - name: RUN_USER value: "daemon" - name: RUN_GROUP value: "daemon" - name: APP_KEY value: "base64:XIt7rIKL35Y9psX0VpLOrOCvLykYYYR/WuC3Sne7dGk=" volumeMounts: - mountPath: "/opt/navi/public/uploads/" name: uploads resources: requests: memory: 512Mi cpu: 100m limits: memory: 4096Mi cpu: 1000m lifecycle: postStart: exec: command: ["/bin/sh","-c","/opt/navi/public/uploads/div-resource/diy.sh"] volumes: - name: uploads persistentVolumeClaim: claimName: portal-uploads-pvc
3 svc.yaml
kind: Service
apiVersion: v1
metadata:
labels:
app: "portal"
name: "portal"
namespace: "portal"
spec:
selector:
app: "portal"
ports:
- port: 80
targetPort: 8000
type: ClusterIP
4 ingress.yaml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: portal namespace: portal spec: rules: - host: portal.ops.yunlizhi.cn http: paths: - path: / backend: service: name: portal port: number: 80 pathType: ImplementationSpecific tls: - hosts: - portal.ops.yunlizhi.cn secretName: tls-ops-ingress-2022
5 DIY资源存放位置
/opt/navi/public/uploads/div-resource
diy.sh
#!/bin/sh
rm -rf /opt/navi/resources/views/index.blade.php
rm -rf /opt/navi/resources/views/layouts/sidebar.blade.php
rm -rf /opt/navi/public/vendor/web-stack/images/favicon.png
rm -rf /opt/navi/resources/views/layouts/header.blade.php
rm -rf /opt/navi/public/vendor/web-stack/images/logo@2x.png
cp /opt/navi/public/uploads/div-resource/index.blade.php /opt/navi/resources/views/index.blade.php
cp /opt/navi/public/uploads/div-resource/sidebar.blade.php /opt/navi/resources/views/layouts/sidebar.blade.php
cp /opt/navi/public/uploads/div-resource/favicon.png /opt/navi/public/vendor/web-stack/images/favicon.png
cp /opt/navi/public/uploads/div-resource/header.blade.php /opt/navi/resources/views/layouts/header.blade.php
cp /opt/navi/public/uploads/div-resource/logo@2x.png /opt/navi/public/vendor/web-stack/images/logo@2x.png
/opt/navi/resources/views/index.blade.php 网站首页 去除右上角github
<!DOCTYPE html> <html lang="zh"> @include('layouts.header') <body class="page-body"> <!-- skin-white --> <div class="page-container"> @include('layouts.sidebar') <div class="main-content"> <nav class="navbar user-info-navbar" role="navigation"> <!-- User Info, Notifications and Menu Bar --> <!-- Left links for user info navbar --> <ul class="user-info-menu left-links list-inline list-unstyled"> <li class="hidden-sm hidden-xs"> <a href="#" data-toggle="sidebar"> <i class="fa-bars"></i> </a> </li> </ul> </nav> @include('layouts.content') <!-- Main Footer --> <!-- Choose between footer styles: "footer-type-1" or "footer-type-2" --> <!-- Add class "sticky" to always stick the footer to the end of page (if page contents is small) --> <!-- Or class "fixed" to always fix the footer to the end of page --> <footer class="main-footer sticky footer-type-1"> <div class="footer-inner"> <!-- Add your copyright text here --> <!-- Go to Top Link, just add rel="go-top" to any link to add this functionality --> <div class="go-up"> <a href="#" rel="go-top"> <i class="fa-angle-up"></i> </a> </div> </div> </footer> </div> </div> <!-- 锚点平滑移动 --> <script type="text/javascript"> $(document).ready(function() { $(document).on('click', '.has-sub', function(){ var _this = $(this) if(!$(this).hasClass('expanded')) { setTimeout(function(){ _this.find('ul').attr("style","") }, 300); } else { $('.has-sub ul').each(function(id,ele){ var _that = $(this) if(_this.find('ul')[0] != ele) { setTimeout(function(){ _that.attr("style","") }, 300); } }) } }) $('.user-info-menu .hidden-sm').click(function(){ if($('.sidebar-menu').hasClass('collapsed')) { $('.has-sub.expanded > ul').attr("style","") } else { $('.has-sub.expanded > ul').show() } }) $("#main-menu li ul li").click(function() { $(this).siblings('li').removeClass('active'); // 删除其他兄弟元素的样式 $(this).addClass('active'); // 添加当前元素的样式 }); $("a.smooth").click(function(ev) { ev.preventDefault(); public_vars.$mainMenu.add(public_vars.$sidebarProfile).toggleClass('mobile-is-visible'); ps_destroy(); $("html, body").animate({ scrollTop: $($(this).attr("href")).offset().top - 30 }, { duration: 500, easing: "swing" }); }); return false; }); var href = ""; var pos = 0; $("a.smooth").click(function(e) { $("#main-menu li").each(function() { $(this).removeClass("active"); }); $(this).parent("li").addClass("active"); e.preventDefault(); href = $(this).attr("href"); pos = $(href).position().top - 30; }); </script> <!-- Bottom Scripts --> <script src="/vendor/web-stack/js/bootstrap.min.js"></script> <script src="/vendor/web-stack/js/TweenMax.min.js"></script> <script src="/vendor/web-stack/js/resizeable.js"></script> <script src="/vendor/web-stack/js/joinable.js"></script> <script src="/vendor/web-stack/js/xenon-api.js"></script> <script src="/vendor/web-stack/js/xenon-toggles.js"></script> <!-- JavaScripts initializations and stuff --> <script src="/vendor/web-stack/js/xenon-custom.js"></script> </body> </html>
/opt/navi/resources/views/layouts/sidebar.blade.php 左下角关于本站
<div class="sidebar-menu toggle-others fixed"> <div class="sidebar-menu-inner"> <header class="logo-env"> <!-- logo --> <div class="logo"> <a href="/" class="logo-expanded"> <img src="/vendor/web-stack/images/logo@2x.png" width="100%" alt="" /> </a> <a href="/" class="logo-collapsed"> <img src="/vendor/web-stack/images/logo-collapsed@2x.png" width="40" alt="" /> </a> </div> <div class="mobile-menu-toggle visible-xs"> <a href="#" data-toggle="user-info-menu"> <i class="linecons-cog"></i> </a> <a href="#" data-toggle="mobile-menu"> <i class="fa-bars"></i> </a> </div> </header> <ul id="main-menu" class="main-menu"> @foreach ($categories as $categorie) <li> @if (count($categorie->children) == 0 && $categorie->parent_id == 0) <a href="#{{ $categorie->title }}" class="smooth"> <i class="fa fa-fw {{ $categorie->icon }}"></i> <span class="title">{{ $categorie->title }}</span> </a> @elseif (count($categorie->children) != 0 && $categorie->parent_id == 0) <a> <i class="fa fa-fw {{ $categorie->icon }}"></i> <span class="title">{{ $categorie->title }}</span> </a> <ul> @foreach ($categorie->children as $child) <li> <a href="#{{ $child->title }}" class="smooth"> <span class="title">{{ $child->title }}</span> </a> </li> @endforeach </ul> @endif </li> @endforeach </ul> </div>
更换网页图标
cp /opt/navi/public/uploads/favicon.png /opt/navi/public/vendor/web-stack/images/favicon.png
/opt/navi/resources/views/layouts/header.blade.php 修改网站图标名字
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta name="author" content="viggo"> <title>运荔枝</title> <meta name="keywords" content=""> <meta name="description" content=""> <link rel="shortcut icon" href="/vendor/web-stack/images/favicon.png"> <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Arimo:400,700,400italic"> <link rel="stylesheet" href="/vendor/web-stack/css/fonts/linecons/css/linecons.css"> <link rel="stylesheet" href="/vendor/web-stack/css/fonts/fontawesome/css/font-awesome.min.css"> <link rel="stylesheet" href="/vendor/web-stack/css/bootstrap.css"> <link rel="stylesheet" href="/vendor/web-stack/css/xenon-core.css"> <link rel="stylesheet" href="/vendor/web-stack/css/xenon-components.css"> <link rel="stylesheet" href="/vendor/web-stack/css/xenon-skins.css"> <link rel="stylesheet" href="/vendor/web-stack/css/nav.css"> <script src="/vendor/web-stack/js/jquery-1.11.1.min.js"></script> <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <!-- / FB Open Graph --> <meta property="og:type" content="article"> <meta property="og:url" content="http://www.webstack.cc/"> <meta property="og:title" content="运荔枝 - 收集国内外优秀设计网站、UI设计资源网站、灵感创意网站、素材资源网站,定时更新分享优质产品设计书签。www.webstack.cc"> <meta property="og:description" content="UI设计,UI设计素材,设计导航,网址导航,设计资源,创意导航,创意网站导航,设计师网址大全,设计素材大全,设计师导航,UI设计资源,优秀UI设计欣赏,设计师导航,设计师网址大全,设计师网址导航,产品经理网址导航,交互设计师网址导航,www.webstack.cc"> <meta property="og:image" content="http://webstack.cc/assets/images/webstack_banner_cn.png"> <meta property="og:site_name" content="运荔枝 - 收集国内外优秀设计网站、UI设计资源网站、灵感创意网站、素材资源网站,定时更新分享优质产品设计书签。www.webstack.cc"> <!-- / Twitter Cards --> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="运荔枝 - 收集国内外优秀设计网站、UI设计资源网站、灵感创意网站、素材资源网站,定时更新分享优质产品设计书签。www.webstack.cc"> <meta name="twitter:description" content="UI设计,UI设计素材,设计导航,网址导航,设计资源,创意导航,创意网站导航,设计师网址大全,设计素材大全,设计师导航,UI设计资源,优秀UI设计欣赏,设计师导航,设计师网址大全,设计师网址导航,产品经理网址导航,交互设计师网址导航,www.webstack.cc"> <meta name="twitter:image" content="http://www.webstack.cc/assets/images/webstack_banner_cn.png">
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。