<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Centos 環境下的部署(基于Docker容器) 服務器配置要求: 最低配置:8核16GB,帶寬建議動態帶寬按量收費。峰值設置50M。 OSS:阿里云,騰訊云 二選一 **注意:docker部署的127.0.0.0和localhost全部改為服務器內網IP,否則會鏈接失敗。** **商城后端服務啟動順序:** ~~~shell mall-gateway.jar mall-auth.jar mall-account.jar mall-admin.jar mall-shop.jar mall-sns.jar mall-pay.jar mall-im.jar mall-cms.jar mall-search.jar ~~~ **端口開放:** | 服務名稱 | 版本 | 開放端口 | | --- | --- | --- | | mall-gateway.jar | | 服務端口:8201 | | mall-auth.jar | | 服務端口:8401 | | mall-account.jar | | 服務端口:8088 | | mall-admin.jar | | 服務端口:8080 | | mall-shop.jar | | 服務端口:8089 | | mall-sns.jar | | 服務端口:8085 | | mall-pay.jar | | 服務端口:8086 | | mall-edu.jar | | 服務端口:8082 | | mall-im.jar | | 服務端口:8099 | | mall-cms.jar | | 服務端口:8087 | | mall-search.jar | | 服務端口:8081 | | nacos | 2.0.0 | 服務端口:8848 | | Seata | 1.3.0 | 服務端口:8091 | | Nginx | 最新 | 服務端口:80,443 | | MySQL | 5.6.51 或者8.0 | 服務端口:3306 | | Redis | 5.0 | 服務端口:6379 | | elasticsearch | 7.17.3 | 服務端口:9200, 9300 | | Logstash | 7.17.3 | 服務端口:4560, 4561,4562,4563 | | Kibana | 7.17.3 | 服務端口:5601 | | RabbitMQ | 3.7.4 | 服務端口:5672 15672 | | Sentinel | 最新 | 服務端口:8858 | | Portainer | | 服務端口:9000 | # 可視化管理工具 Portainer 是一款輕量級的應用,它提供了圖形化界面,用于方便的管理Docker環境,包括單機環境和集群環境,下面我們將用Portainer來管理Docker容器中的應用。 獲取Docker鏡像文件: ~~~shell docker pull portainer/portainer ~~~ 使用docker容器運行Portainer: ~~~shell docker run -p 9000:9000 -p 8000:8000 --name portainer \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /etc/localtime:/etc/localtime \ -v /data/portainer/data:/data \ -d portainer/portainer ~~~ 查看Portainer的DashBoard信息,訪問地址:[http://192.168.3.101:9000](http://192.168.3.101:9000/) # MySQL安裝 **也可以使用MySQL8.0 但是要注意修改參數:sql-mode=NO\_ENGINE\_SUBSTITUTION。可以不使用docker部署MySQL,使用你認為比較合適的方式部署。** 下載 MySQL:8.0.36 的docker鏡像: ~~~shell docker pull mysql:8.0.36 ~~~ 創建物理機掛載目錄: ~~~shell sudo mkdir -p /data/mysql/data /data/mysql/logs /data/mysql/conf ~~~ 進入mysql配置目錄: ~~~shell cd /data/mysql/conf ~~~ 創建MySql的my.cnf配置文件,補充mysql8.0的配置文件(如下): ~~~shell touch my.cnf ~~~ my.cnf 內容: ~~~shell # =============== 配置內容如下(可根據自己情況修改)============== [mysql] #設置服務器默認字符集為utf8mb4 default-character-set=utf8mb4 [mysqld] #配置服務器的服務號,具備日后需要集群做準備 server-id = 1 #開啟MySQL數據庫的二進制日志,用于記錄用戶對數據庫的操作SQL語句,具備日后需要集群做準備 log-bin=mysql-bin #設置清理超過30天的日志,以免日志堆積造過多成服務器內存爆滿 expire_logs_days=30 #允許最大的連接數 max_connections=16384 # 禁用符號鏈接以防止各種安全風險 symbolic-links=0 # 設置東八區時區 default-time_zone = '+8:00' #wait_timeout參數值,由默認的8小時,修改為30分鐘。 wait_timeout=1800 #修改back_log參數值:由默認的50修改為500 每個線程256K 1.6W線程2G左右 back_log=500 character_set_server=utf8mb4 default_authentication_plugin = mysql_native_password sql-mode=NO_ENGINE_SUBSTITUTION character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect=SET NAMES utf8mb4 # =========================== 結 束 =========================== ~~~ 啟動mysql:8.0.36: ~~~shell docker run -p 3306:3306 --name mysql \ -v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf \ -v /data/mysql/logs:/logs \ -v /data/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=B1x1GuKZr55PPmox \ -v /etc/localtime:/etc/localtime \ --restart always \ -d mysql:8.0.36 ~~~ **如下MySQL5.6演示** 1. 下載MySQL5.6.51的docker鏡像: ~~~shell docker pull mysql:5.6.51 ~~~ 2. 使用如下命令啟動MySQL服務: ~~~shell docker run -p 3306:3306 --name mysql \ -v /data/mysql/log:/var/log/mysql \ -v /data/mysql/data:/var/lib/mysql \ -v /data/mysql/conf:/etc/mysql \ -v /etc/localtime:/etc/localtime \ -e MYSQL_ROOT_PASSWORD=root \ --restart=always \ -d mysql:5.6.51 ~~~ 3. 參數說明 * \-p 3306:3306:將容器的3306端口映射到主機的3306端口 * \-v /data/mysql/conf:/etc/mysql:將配置文件夾掛在到主機 * \-v /data/mysql/log:/var/log/mysql:將日志文件夾掛載到主機 * \-v /data/mysql/data:/var/lib/mysql/:將數據文件夾掛載到主機 * \-e MYSQL\_ROOT\_PASSWORD=root:初始化root用戶的密碼 4. 進入運行MySQL的docker容器: ~~~shell docker exec -it mysql /bin/bash ~~~ 5. 使用MySQL命令打開客戶端: ~~~shell mysql -uroot -proot --default-character-set=utf8mb4 ~~~ 6. 創建mall數據庫: ~~~shell create database mall character set utf8mb4; ~~~ 7. 先將 store\_dev.sql 上傳到/data/,將`store_dev.sql`文件拷貝到mysql容器的/目錄下: ~~~shell docker cp /data/store_dev.sql mysql:/ ~~~ 8. 將sql文件導入到數據庫: ~~~shell use mall; source /store_dev.sql; ~~~ 9. 創建一個reader:123456帳號并修改權限,使得任何ip都能訪問: **注意:此處請自定義自己的賬號密碼,這里只是示例。** MySQL5.6: ~~~shell grant all privileges on *.* to 'mall' @'%' identified by '123456'; ~~~ MySQL8.0: ~~~shell ### 創建賬號密碼 CREATE USER 'mall'@'%' IDENTIFIED BY '1111111'; ###為用戶 mall 授予對數據庫 mall 的所有權限 GRANT ALL PRIVILEGES ON mall.* TO 'mall'@'%'; ###最后,執行以下命令以刷新權限 FLUSH PRIVILEGES; ~~~ 10. 備份數據庫腳本 mysqlback.sh ~~~shell #!/bin/bash # 備份文件保存的目錄 backup_dir="/data/mysqlbak/" # 獲取當前日期和時間作為時間戳 timestamp=$(date +"%Y%m%d_%H%M%S") # 備份MySQL數據庫到帶有時間戳的文件名中 docker exec mysql sh -c 'exec mysqldump dataname -uuser -p"password"' > "${backup_dir}db_backup_${timestamp}.sql" # 列出備份目錄下的所有備份文件,并按時間戳降序排序 backup_files=($(ls -t "${backup_dir}"*.sql)) # 計算備份文件數量 num_backup_files=${#backup_files[@]} # 如果備份文件數量超過50份,則刪除較舊的備份文件 if [ $num_backup_files -gt 50 ]; then # 計算要刪除的備份文件數量 num_to_delete=$((num_backup_files - 50)) # 循環刪除較舊的備份文件 for ((i = 0; i < $num_to_delete; i++)); do rm "${backup_files[$i]}" done fi # 將最新的備份文件打包成壓縮包 tar -czvf "${backup_dir}backup_${timestamp}.tar.gz" "${backup_dir}db_backup_${timestamp}.sql" # 刪除原始的備份文件(可選,如果需要節省磁盤空間) rm "${backup_dir}db_backup_${timestamp}.sql" ~~~ 添加計劃任務: 打開終端。 輸入以下命令來編輯你的cron表(計劃任務表): ~~~shell crontab -e ~~~ 如果是第一次編輯cron表,系統會要求你選擇一個文本編輯器。你可以選擇自己熟悉的編輯器,比如`nano`或`vim`。 在打開的cron表中,添加以下行來每三十分鐘執行一次任務: ~~~shell */30 * * * * your_command_here ~~~ 將`your_command_here`替換為你想要定期執行的命令或腳本路徑。 * \*/30:表示每隔30分鐘執行一次。 * \*:表示任意的取值,這里代表每小時的任意分鐘。 * \*:表示任意的取值,這里代表任意一天的日期。 * \*:表示任意的取值,這里代表任意一個月份。 * \*:表示任意的取值,這里代表任意一周的星期幾。 編輯完成后,保存并退出編輯器。 系統會自動保存你的cron表,并開始按照你的設置定期執行任務。 # Redis安裝 1. 下載Redis5.0的docker鏡像: ~~~shell docker pull redis:5 ~~~ 2. 使用如下命令啟動Redis服務: ~~~shell docker run -p 6379:6379 --name redis \ -v /etc/localtime:/etc/localtime \ -v /data/redis/data:/data \ --restart=always \ -d redis:5 redis-server --appendonly yes --requirepass "pwd_123" ~~~ 3. 進入Redis容器使用`redis-cli`命令進行連接,驗證是否啟動成功: ~~~shell docker exec -it redis redis-cli ~~~ # Nacos 安裝 1. 下載Nacos的docker鏡像: ~~~shell docker pull nacos/nacos-server:2.0.0 ~~~ 2. 啟動nacos容器 從容器中復制配置文件和日志文件: ~~~shell docker run -p 8848:8848 --name nacos -d nacos/nacos-server:2.0.0 ~~~ 3. 創建掛載目錄 方便修改配置 查看日志: ~~~shell #配置文件復制 docker cp nacos:/home/nacos /data/nacos ~~~ 4. 停止用來復制日志和配置文件的nacos 容器 ~~~shell #停止容器 docker stop nacos #刪除容器 docker rm nacos ~~~ 5. 重新啟動容器 并掛載目錄 啟動命令 ~~~shell docker run -d \ -e MODE=standalone \ -v /etc/localtime:/etc/localtime \ -v /data/nacos/logs:/home/nacos/logs \ -v /data/nacos/conf:/home/nacos/conf \ -v /data/nacos/data:/home/nacos/data \ -p 8848:8848 \ --name nacos \ --restart=always \ nacos/nacos-server:2.0.0 ~~~ # Seata 安裝 1. 下載Seata的docker鏡像: ~~~shell docker pull seataio/seata-server:1.3.0 ~~~ 2. 啟動nacos容器 獲取配置文件: ~~~shell docker run --name seata-server -p 8091:8091 -d seataio/seata-server:1.3.0 ~~~ 3. 創建掛載目錄 方便修改配置: ~~~shell docker cp seata-server:/seata-server /data/seata ~~~ 4. 停止用來復制配置文件的Seata容器 ~~~shell #停止容器 docker stop seata-server #刪除容器 docker rm seata-server ~~~ 5. 修改配置文件,進入目錄/data/seata/resources中修改file.conf和registry.conf中的內容 6. 修改文件 file.conf ~~~shell ## transaction log store, only used in seata-server store { ## store mode: file、db、redis mode = "db" ## file store property file { ## store location dir dir = "sessionStore" # branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions maxBranchSessionSize = 16384 # globe session size , if exceeded throws exceptions maxGlobalSessionSize = 512 # file buffer size , if exceeded allocate new buffer fileWriteBufferCacheSize = 16384 # when recover batch read size sessionReloadReadSize = 100 # async, sync flushDiskMode = async } ## database store property db { ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc. datasource = "druid" ## mysql/oracle/postgresql/h2/oceanbase etc. dbType = "mysql" ## 注意使用mysql8.0及以上版本的需要更改:driverClassName = "com.mysql.cj.jdbc.Driver" driverClassName = "com.mysql.jdbc.Driver" url = "jdbc:mysql://127.0.0.1:3306/mallsuite?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull" user = "mall" password = "mall" minConn = 5 maxConn = 30 globalTable = "global_table" branchTable = "branch_table" lockTable = "lock_table" queryLimit = 100 maxWait = 5000 } ## redis store property redis { host = "127.0.0.1" port = "6379" password = "pwd_123" database = "0" minConn = 1 maxConn = 10 queryLimit = 100 } } ~~~ 7. 修改文件 registry.conf,參考一下配置。 (nacos服務對應的ip地址假設為:127.0.0.1;nacos服務的用戶名密碼假設都為:nacos): ~~~shell registry { # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa type = "nacos" nacos { application = "seata-server" serverAddr = "127.0.0.1:8848" group = "SEATA_GROUP" namespace = "" cluster = "default" username = "nacos" password = "nacos" } redis { serverAddr = "localhost:6379" db = 0 password = "pwd_123" cluster = "default" timeout = 0 } file { name = "file.conf" } } config { # file、nacos 、apollo、zk、consul、etcd3 type = "file" nacos { serverAddr = "127.0.0.1:8848" namespace = "" group = "SEATA_GROUP" username = "nacos" password = "nacos" } file { name = "file.conf" } } ~~~ 8. 準備 config.txt 文件 放入 /data/seata/文件夾中,內容參考以下配置(主要注意數據庫連接串和用戶名密碼的修改): ~~~shell transport.type=TCP transport.server=NIO transport.heartbeat=true transport.enableClientBatchSendRequest=true transport.threadFactory.bossThreadPrefix=NettyBoss transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler transport.threadFactory.shareBossWorker=false transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector transport.threadFactory.clientSelectorThreadSize=1 transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread transport.threadFactory.bossThreadSize=1 transport.threadFactory.workerThreadSize=default transport.shutdown.wait=3 service.vgroupMapping.my_test_tx_group=default service.default.grouplist=127.0.0.1:8091 service.enableDegrade=false service.disableGlobalTransaction=false client.rm.asyncCommitBufferLimit=10000 client.rm.lock.retryInterval=10 client.rm.lock.retryTimes=30 client.rm.lock.retryPolicyBranchRollbackOnConflict=true client.rm.reportRetryCount=5 client.rm.tableMetaCheckEnable=false client.rm.tableMetaCheckerInterval=60000 client.rm.sqlParserType=druid client.rm.reportSuccessEnable=false client.rm.sagaBranchRegisterEnable=false client.rm.sagaJsonParser=fastjson client.rm.tccActionInterceptorOrder=-2147482648 client.tm.commitRetryCount=5 client.tm.rollbackRetryCount=5 client.tm.defaultGlobalTransactionTimeout=60000 client.tm.degradeCheck=false client.tm.degradeCheckAllowTimes=10 client.tm.degradeCheckPeriod=2000 client.tm.interceptorOrder=-2147482648 store.mode=db store.lock.mode=file store.session.mode=file store.publicKey= store.file.dir=file_store/data store.file.maxBranchSessionSize=16384 store.file.maxGlobalSessionSize=512 store.file.fileWriteBufferCacheSize=16384 store.file.flushDiskMode=async store.file.sessionReloadReadSize=100 store.db.datasource=druid store.db.dbType=mysql #注意使用mysql8.0及以上版本的需要更改:driverClassName = "com.mysql.cj.jdbc.Driver" store.db.driverClassName=com.mysql.jdbc.Driver store.db.url=jdbc:mysql://127.0.0.1:3306/mallsuite?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull store.db.user=root #數據庫用戶名 store.db.password=root #數據庫密碼 store.db.minConn=5 store.db.maxConn=30 store.db.globalTable=global_table store.db.branchTable=branch_table store.db.distributedLockTable=distributed_lock store.db.queryLimit=100 store.db.lockTable=lock_table store.db.maxWait=5000 server.recovery.committingRetryPeriod=1000 server.recovery.asynCommittingRetryPeriod=1000 server.recovery.rollbackingRetryPeriod=1000 server.recovery.timeoutRetryPeriod=1000 server.maxCommitRetryTimeout=-1 server.maxRollbackRetryTimeout=-1 server.rollbackRetryTimeoutUnlockEnable=false server.distributedLockExpireTime=10000 client.undo.dataValidation=true client.undo.logSerialization=jackson client.undo.onlyCareUpdateColumns=true server.undo.logSaveDays=7 server.undo.logDeletePeriod=86400000 client.undo.logTable=undo_log client.undo.compress.enable=true client.undo.compress.type=zip client.undo.compress.threshold=64k log.exceptionRate=100 transport.serialization=seata transport.compressor=none metrics.enabled=false metrics.registryType=compact metrics.exporterList=prometheus metrics.exporterPrometheusPort=9898 tcc.fence.logTableName=tcc_fence_log tcc.fence.cleanPeriod=1h ~~~ 9. 新建 nacos-config.sh 放入 /data/seata/resources文件夾中;參考配置如下: ~~~shell #!/bin/sh # Copyright 1999-2019 Seata.io Group. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at、 # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. while getopts ":h:p:g:t:u:w:" opt do case $opt in h) host=$OPTARG ;; p) port=$OPTARG ;; g) group=$OPTARG ;; t) tenant=$OPTARG ;; u) username=$OPTARG ;; w) password=$OPTARG ;; ?) echo " USAGE OPTION: $0 [-h host] [-p port] [-g group] [-t tenant] [-u username] [-w password] " exit 1 ;; esac done if [ -z ${host} ]; then host=localhost fi if [ -z ${port} ]; then port=8848 fi if [ -z ${group} ]; then group="SEATA_GROUP" fi if [ -z ${tenant} ]; then tenant="" fi if [ -z ${username} ]; then username="" fi if [ -z ${password} ]; then password="" fi nacosAddr=$host:$port contentType="content-type:application/json;charset=UTF-8" echo "set nacosAddr=$nacosAddr" echo "set group=$group" urlencode() { length="${#1}" i=0 while [ $length -gt $i ]; do char="${1:$i:1}" case $char in [a-zA-Z0-9.~_-]) printf $char ;; *) printf '%%%02X' "'$char" ;; esac i=`expr $i + 1` done } failCount=0 tempLog=$(mktemp -u) function addConfig() { dataId=`urlencode $1` content=`urlencode $2` curl -X POST -H "${contentType}" "http://$nacosAddr/nacos/v1/cs/configs?dataId=$dataId&group=$group&content=$content&tenant=$tenant&username=$username&password=$password" >"${tempLog}" 2>/dev/null if [ -z $(cat "${tempLog}") ]; then echo " Please check the cluster status. " exit 1 fi if [ "$(cat "${tempLog}")" == "true" ]; then echo "Set $1=$2 successfully " else echo "Set $1=$2 failure " failCount=`expr $failCount + 1` fi } count=0 for line in $(cat $(dirname "$PWD")/config.txt | sed s/[[:space:]]//g); do count=`expr $count + 1` key=${line%%=*} value=${line#*=} addConfig "${key}" "${value}" done echo "=========================================================================" echo " Complete initialization parameters, total-count:$count , failure-count:$failCount " echo "=========================================================================" if [ ${failCount} -eq 0 ]; then echo " Init nacos config finished, please start seata-server. " else echo " init nacos config fail. " fi ~~~ 10. 準備好以上4步驟的文件后: ~~~shell #進入/data/seata/resources cd /data/seata/resources # 導入配置(注意替換nacos的用戶名密碼) sh nacos-config.sh -h 127.0.0.1 -p 8848 -g SEATA_GROUP -u nacos -w nacos ~~~ 11. 重新啟動seata: 注意:這里啟動的時候檢查一下掛載的配置文件目錄,/data/seata根據實際目錄配置。有的環境可能是/data/seata/seata-server ~~~shell docker run -d --restart always \ --name seata-server \ -v /etc/localtime:/etc/localtime \ -p 8091:8091 -v /data/seata:/seata-server \ seataio/seata-server:1.3.0 ~~~ 1. 確認是否注冊成功,如圖是成功的內容。 ![](https://docs.suteshop.com/uploads/shopsuite-java/images/m_30e57333c8567010c945ad23672c2384_r.png "null") ![](https://docs.suteshop.com/uploads/shopsuite-java/images/m_9a761e81e7b0c7f55cceddbb819eb893_r.png "null") # Elasticsearch安裝 1. 下載Elasticsearch`7.17.3`的docker鏡像 ~~~shell docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.3 ~~~ 2. 修改虛擬內存區域大小,否則會因為過小而無法啟動: ~~~shell sysctl -w vm.max_map_count=262144 ~~~ 3. 創建Elasticsearch 相關掛載目錄 ~~~shell mkdir -p /data/elasticsearch/config mkdir -p /data/elasticsearch/data mkdir -p /data/elasticsearch/plugins ~~~ 4. 創建文件 ~~~shell vi /data/elasticsearch/config/elasticsearch.yml ~~~ 5. elasticsearch.yml如下內容: ~~~shell http.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-headers: Authorization xpack.security.enabled: true xpack.security.transport.ssl.enabled: true ~~~ 6. 設置目錄權限,否則會報錯 ~~~shell cd /data/elasticsearch/ chmod +x config/elasticsearch.yml ~~~ 7. 使用如下命令啟動Elasticsearch服務,內存小的服務器可以通過`ES_JAVA_OPTS`來設置占用內存大小: ~~~shell docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \ -e "discovery.type=single-node" \ -e "cluster.name=elasticsearch" \ -e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \ -v /etc/localtime:/etc/localtime \ -v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -v /data/elasticsearch/data:/usr/share/elasticsearch/data \ --restart=always \ -d docker.elastic.co/elasticsearch/elasticsearch:7.17.3 ~~~ 8. 啟動時如果發現/usr/share/elasticsearch/data目錄沒有訪問權限,只需要修改/data/elasticsearch/data目錄的權限,再重新啟動即可; ~~~shell chmod 777 /data/elasticsearch/data/ ~~~ 9. 安裝中文分詞器IKAnalyzer,注意下載與Elasticsearch對應的版本,下載地址:[https://github.com/medcl/elasticsearch-analysis-ik/releases](https://github.com/medcl/elasticsearch-analysis-ik/releases) ![](https://docs.suteshop.com/uploads/shopsuite-java/images/m_23ff64204eb21eb764f27d6395c70bc6_r.png "null") 10. 創建存放目錄: ~~~shell cd /data/elasticsearch/plugins mkdir elasticsearch-analysis-ik ~~~ 11. 下載完成后解壓到Elasticsearch的/data/elasticsearch/plugins/elasticsearch-analysis-ik目錄下; ![](https://docs.suteshop.com/uploads/shopsuite-java/images/m_9ffbdae51a1e9730f23edbe4f5dd67ed_r.png "null") 12. 重新啟動服務: ~~~shell docker restart elasticsearch ~~~ 13. 進入運行elasticsearch的docker容器: ~~~shell docker exec -it elasticsearch /bin/bash ~~~ 14. 配置訪問es密碼步驟 ~~~shell ./bin/elasticsearch-setup-passwords interactive ~~~ 15. 開啟防火墻: ~~~shell firewall-cmd --zone=public --add-port=9200/tcp --permanent firewall-cmd --reload ~~~ # Logstash安裝 1. 下載Logstash7.17.3的docker鏡像: ~~~shell docker pull docker.elastic.co/logstash/logstash:7.17.3 ~~~ 2. 創建Logstash 相關掛載目錄: ~~~shell mkdir /data/logstash ~~~ 3. 創建Logstash的配置文件logstash.conf ~~~shell cd /data/logstash touch logstash.conf vim logstash.conf ~~~ 4. 放入一下內容:配置文件logstash.conf中output節點下的Elasticsearch連接地址為es:9200 ~~~shell input { tcp { mode => "server" host => "0.0.0.0" port => 4560 codec => json_lines type => "debug" } tcp { mode => "server" host => "0.0.0.0" port => 4561 codec => json_lines type => "error" } tcp { mode => "server" host => "0.0.0.0" port => 4562 codec => json_lines type => "business" } tcp { mode => "server" host => "0.0.0.0" port => 4563 codec => json_lines type => "record" } } filter{ if [type] == "record" { mutate { remove_field => "port" remove_field => "host" remove_field => "@version" } json { source => "message" remove_field => ["message"] } } } output { elasticsearch { hosts => "es:9200" index => "%{project}-%{service}" user => "elastic" password => "**********" } } ~~~ 創建創建Logstash的配置文件logstash.yml. ~~~shell cd /data/logstash touch logstash.yml vim logstash.yml ~~~ logstash.yml文件內容: ~~~shell http.host: "0.0.0.0" xpack.monitoring.enabled: true xpack.monitoring.elasticsearch.username: elastic xpack.monitoring.elasticsearch.password: ***** xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ] ~~~ 在logstash.yml中配置用戶名和密碼 xpack.monitoring.elasticsearch.username: elastic xpack.monitoring.elasticsearch.password:**\*** 賬號密碼為es初始化中設置的密碼 5. 啟動logstash : ~~~shell docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 \ --link elasticsearch:es \ -v /etc/localtime:/etc/localtime \ -v /data/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml \ -v /data/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \ --restart=always \ -d docker.elastic.co/logstash/logstash:7.17.3 ~~~ 6. 進入容器內部,安裝`json_lines`插件。 ~~~shell docker exec -it logstash /bin/bash logstash-plugin install logstash-codec-json_lines ~~~ ![](https://docs.suteshop.com/uploads/shopsuite-java/images/m_c559aec00ddafa03845facee3d54ae72_r.png "null") # Kibana安裝 1. 下載`Kibana7.17.3`的docker鏡像: ~~~shell docker pull docker.elastic.co/kibana/kibana:7.17.3 ~~~ 2. 創建kibana掛載的相關目錄: ~~~shell mkdir -p /data/kibana ~~~ 3. 創建kibana的配置文件kibana.yml ~~~shell cd /data/kibana touch kibana.yml vim kibana.yml ~~~ 4. kibana.yml文件內容: ~~~shell server.host: "0.0.0.0" server.shutdownTimeout: "5s" elasticsearch.hosts: [ "http://elasticsearch:9200" ] elasticsearch.username: "elastic" elasticsearch.password: "*****" i18n.locale: "zh-CN" ~~~ 在kibana.yml中配置用戶名和密碼 elasticsearch.username: “elastic” elasticsearch.password: “**\***“ 賬號密碼為es初始化中設置的密碼 重啟kibana 輸入[http://ip:5601打開登錄頁面,使用elastic賬號登錄](http://ip:5601%E6%89%93%E5%BC%80%E7%99%BB%E5%BD%95%E9%A1%B5%E9%9D%A2%EF%BC%8C%E4%BD%BF%E7%94%A8elastic%E8%B4%A6%E5%8F%B7%E7%99%BB%E5%BD%95/). 1. 使用如下命令啟動Kibana服務: ~~~shell docker run --name kibana -p 5601:5601 \ --link elasticsearch:es \ -e "elasticsearch.hosts=http://es:9200" \ -v /etc/localtime:/etc/localtime \ -v /data/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \ --restart=always \ -d docker.elastic.co/kibana/kibana:7.17.3 ~~~ 2. 開啟防火墻: ~~~shell firewall-cmd --zone=public --add-port=5601/tcp --permanent firewall-cmd --reload ~~~ 訪問地址進行測試:[http://ip:5601](http://ip:5601/) Analytics–>Discover–>mall-suite\* # RabbitMQ 1. 拉取 RabbitMQ 鏡像 ~~~shell docker pull rabbitmq:3.7.4 ~~~ 2. 創建 RabbitMQ 容器 ~~~shell docker run --name rabbitmq -v /etc/localtime:/etc/localtime -p 5672:5672 -p 15672:15672 --restart=always -d rabbitmq:3.7.4 ~~~ 這個命令將創建一個后臺運行的 RabbitMQ 容器,并將容器的 5672 端口映射到主機的 5672 端口(用于 AMQP 連接),并將容器的 15672 端口映射到主機的 15672 端口(用于 RabbitMQ 的管理界面)。 3. 訪問 RabbitMQ 管理界面 在瀏覽器中訪問[http://localhost:15672,你將看到](http://localhost:15672%EF%BC%8C%E4%BD%A0%E5%B0%86%E7%9C%8B%E5%88%B0/)RabbitMQ 的管理界面。 使用默認的用戶名和密碼 guest/guest 登錄。 # Sentinel 1. 拉取 Sentinel 鏡像 ~~~shell docker pull bladex/sentinel-dashboard ~~~ 2. 創建 Sentinel 容器 ~~~shell docker run -d -p 8858:8718 --name sentinel bladex/sentinel-dashboard ~~~ # 商城服務端 (這種方式非必須,最終會使用docker部署,詳看《搭建docker私有化鏡像倉庫》和《使用jenkins實現自動化部署》) **商城后端服務啟動順序:** ~~~shell mall-gateway.jar mall-auth.jar mall-account.jar mall-admin.jar mall-shop.jar mall-sns.jar mall-pay.jar mall-im.jar mall-cms.jar mall-search.jar ~~~ 1. 上傳服務包jra包。 ~~~shell #創建目錄 mkdir -p /data/www ~~~ ~~~shell nohup java -jar -Xms128m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=256M mall-account.jar >/data/logs/mall-account.log 2>&1 & nohup java -jar -Xms128m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=256M mall-admin.jar >/data/logs/mall-admin.log 2>&1 & nohup java -jar -Xms128m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=256M mall-auth.jar >/data/logs/mall-auth.log 2>&1 & nohup java -jar -Xms128m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=256M mall-cms.jar >/data/logs/mall-cms.log 2>&1 & nohup java -jar -Xms128m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=256M mall-gateway.jar >/data/logs/mall-gateway.log 2>&1 & nohup java -jar -Xms128m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=256M mall-im.jar >/data/logs/mall-im.log 2>&1 & nohup java -jar -Xms128m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=256M mall-pay.jar >/data/logs/mall-pay.log 2>&1 & nohup java -jar -Xms128m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=256M mall-shop.jar >/data/logs/mall-shop.log 2>&1 & nohup java -jar -Xms128m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=256M mall-sns.jar >/data/logs/mall-sns.log 2>&1 & nohup java -jar -Xms128m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=256M mall-search.jar >/data/logs/mall-sns.log 2>&1 & ~~~ # Nginx安裝 1. 下載Nginx的docker鏡像: ~~~shell docker pull nginx ~~~ 2. 先運行一次容器(為了拷貝配置文件): ~~~shell docker run -p 80:80 --name nginx \ -v /data/nginx/html:/usr/share/nginx/html \ -v /data/nginx/logs:/var/log/nginx \ -v /etc/localtime:/etc/localtime \ -d nginx:latest ~~~ 3. 將容器內的配置文件拷貝到指定目錄: ~~~shell docker container cp nginx:/etc/nginx /data/nginx/ ~~~ 4. 修改文件名稱: ~~~shell # 進入/data/nginx/ cd /data/nginx/ # 修改文件名 mv nginx conf ~~~ 5. 終止并刪除容器: ~~~shell docker stop nginx docker rm nginx ~~~ 6. 修改nginx配置,設置最大上傳文件:client\_max\_body\_size,這里不修改移動端裝修會保存失敗。 ~~~shell vim /data/nginx/conf/nginx.conf client_max_body_size 50m; ~~~ ![](https://docs.suteshop.com/uploads/shopsuite-java/images/m_b840e62066575f0a5f430777adead091_r.png "null") 1. 上傳ssl證書: ~~~shell #進入/data/nginx cd /data/nginx #創建ssl文件存放證書 mkdir ssl ~~~ 2. 上傳代碼包: ~~~shell #創建目錄 mkdir -p /data/nginx/www/mallsuite cd /data/nginx/www/mallsuite ~~~ ![](https://docs.suteshop.com/uploads/shopsuite-java/images/m_1c917e410f68ce108fd22ec41baf3d31_r.png "null") 3. 配置站點域名: ~~~shell #進入存放配置文件目錄 cd /data/nginx/conf/conf.d #創建文件 touch mallsuite.conf #編輯文件 vim mallsuite.conf ~~~ 放入以下內容:注意修改接口請求地址,這里127.0.0.1為示例。 ~~~shell upstream nacos { server 127.0.0.1:8848 weight=1; } upstream backend { server 127.0.0.1:8099; } server { listen 80; server_name yourdomain; #需要將yourdomain替換成證書綁定的域名。 rewrite ^(.*)$ https://$host$1; #將所有HTTP請求通過rewrite指令重定向到HTTPS。 location / { index index.html index.htm; } } server { #listen 80; listen 443 ssl ; server_name yourdomain; index index.php index.html index.htm default.php default.htm default.html; root /www/mallsuite/; #啟動nginx鏡像掛載目錄 #SSL-START SSL相關配置,請勿刪除或修改下一行帶注釋的404規則 #error_page 404/404.html; ssl_certificate /etc/nginx/ssl/7959472.com.pem;#修改為自己ssl證書 ssl_certificate_key /etc/nginx/ssl/7959472.com.key;#修改為自己ssl證書 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000"; error_page 497 https://$host$request_uri; #SSL-END #ERROR-PAGE-START 錯誤頁配置,可以注釋、刪除或修改 #error_page 404 /404.html; #error_page 502 /502.html; #ERROR-PAGE-END #PHP-INFO-START PHP引用配置,可以注釋或修改 #include enable-php-00.conf; #PHP-INFO-END #REWRITE-START URL重寫規則引用,修改后將導致面板設置的偽靜態規則失效 #include /www/server/panel/vhost/rewrite/101.133.142.46.conf; #REWRITE-END #禁止訪問的文件或目錄 location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; } #一鍵申請SSL證書驗證目錄相關設置 location ~ \.well-known{ allow all; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; error_log /dev/null; access_log /dev/null; } location ~ .*\.(js|css)?$ { expires 12h; error_log /dev/null; access_log /dev/null; } location ~* \.(eot|ttf|woff|woff2|svg)$ { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Requested-With; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; } location ^~ /im/ { root /www/mallsuite/admin/; #保持一致,在root /www/mallsuite/ 加admin #啟動nginx鏡像已掛載目錄 } location ^~ /api/shop/static/ { proxy_pass http://127.0.0.1:8201/shop/static/; } location ^~ /api/admin/static/ { proxy_pass http://127.0.0.1:8201/admin/static/; } location ^~ /api/doc.html { proxy_pass http://127.0.0.1:8201/doc.html; } location ^~ /api/webjars/ { proxy_pass http://127.0.0.1:8201/webjars/; } location /h5/ { try_files $uri $uri/ @router; index index.html index.htm; } location @router { rewrite ^.*$ /h5/index.html last; } location /admin/ { try_files $uri $uri/ @routeradmin; index index.html index.htm; } location @routeradmin { rewrite ^.*$ /admin/index.html last; } location /mobile/ { proxy_pass http://127.0.0.1:8201/mobile/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect default; } location /api/ { proxy_pass http://127.0.0.1:8201/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect default; } location /mallsuiteImSocketServer { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } #圖片本地存儲上傳的靜態文件訪問路徑 location ^~ /admin/oss/upload/ { proxy_pass http://localhost:8201/admin/oss/upload/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect default; } #上傳的靜態文件訪問路徑 location ^~ /static/ { root /opt/apps/mall/public/; } access_log /wwwlogs/access.log; error_log /wwwlogs/error.log; } ~~~ 4. 使用如下命令啟動Nginx服務: ~~~shell docker run -p 80:80 -p 443:443 --name nginx \ -v /etc/localtime:/etc/localtime \ -v /data/nginx/html:/usr/share/nginx/html \ -v /data/nginx/www:/www \ -v /data/nginx/wwwlogs:/wwwlogs \ -v /data/nginx/logs:/var/log/nginx \ -v /data/nginx/conf:/etc/nginx \ -v /data/nginx/ssl:/etc/nginx/ssl/ \ -v /data/nginx/www:/opt/apps/mall/public/static \ --restart=always \ -d nginx:latest ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看