亚洲色成人网站www永久,亚洲欧美人成视频一区在线,亚洲国产成人高清在线观看,亚洲精品久久久久久动漫,亚洲国产精品久久电影欧美

數(shù)據(jù)專欄

智能大數(shù)據(jù)搬運(yùn)工,你想要的我們都有

科技資訊

科技學(xué)院

科技百科

科技書籍

網(wǎng)站大全

軟件大全

實(shí)話講在 Ubuntu 下裝 Docker 已經(jīng)比較容易了
但作為新手的話可能還是會(huì)在很多地方踩坑,比如用戶怎么設(shè)置啦,鏡像怎么 pull 啦之類的
于是讓組里小弟寫了一篇文章,趟了一遍坑
收藏著也許要裝的時(shí)候用得著,如果覺得有用的話請?jiān)u論告訴我 :)
正文戳 => 如何在 Ubuntu 上安裝和使用 Docker——Docker 入門指南
前沿探索
2020-08-20 22:23:54
我想配置 Nginx 實(shí)現(xiàn)當(dāng)訪問的 URL 是目錄的時(shí)候,例如: http://127.0.0.1/modules/sso?param=abcd
此處對應(yīng)的 modules/sso 目錄是真實(shí)存在的,那么請求 URL 變?yōu)椋?http://127.0.0.1/modules/sso/index.php?param=abcd
特別的,如果 URL 后面包含斜線,例如: http://127.0.0.1/modules/sso/?param=abcd
也應(yīng)該被正確識(shí)別,并重寫為含有 index.php 的 URL,我的思路是用 try_files 來實(shí)現(xiàn),但是測試后并沒有得到想要的結(jié)果,請問這個(gè)應(yīng)該怎么用 Nginx 來實(shí)現(xiàn)呢?
前沿探索
2020-08-20 22:21:28
最近被安排協(xié)助解決同事項(xiàng)目的一個(gè)很棘手的問題,業(yè)務(wù)場景簡化描述如下1 、A 系統(tǒng)需要通過正向代理 B 才能調(diào)用 C 系統(tǒng); 3 、對 B 和 C 沒有管理權(quán)限,目前只能遠(yuǎn)程操作 A 服務(wù)器,A 是 java 開發(fā),接口是 http 接口,A 自身沒有代理功能,可以修改配置文件修改目標(biāo)地址,但是不能動(dòng)他們的代碼; 目前測試了幾種方案都失敗了 1 、通過設(shè)置全局的 http_proxy,失敗,java 默認(rèn)不走這個(gè); 2 、通過 A 系統(tǒng)本機(jī)裝的 nginx 反代,但是 nginx 也不走全局代理; 目前只有兩個(gè)選擇 1 、額外開發(fā)一個(gè)反代服務(wù),實(shí)現(xiàn)反代二次調(diào)用正向代理訪問; 2 、能否讓 nginx 的反向代理調(diào)用正向代理? 因?yàn)?ABC 都不是我們這邊的,給他做一個(gè)服務(wù),后續(xù)會(huì)進(jìn)坑,所以想問問有沒有 nginx 的方案,或者是其他的解決方案。。。
前沿探索
2020-08-20 22:21:21
遇到一個(gè)關(guān)于視頻業(yè)務(wù)很蛋疼的問題,業(yè)務(wù)需要調(diào)整接口地址,分為地址 a 和地址 b 地址 a 為: a.com
地址 b 為: b.com
現(xiàn)在 b.com 沒辦法直接用,因?yàn)楹蠖税训刂?a.com 寫死了臥槽!?。‖F(xiàn)在想的辦法是通過 a.com 反向代理到 b.com ,但是 b.com 的服務(wù)器帶寬比較充足, a.com 帶寬就比較小。
如果通過 a.com 反向代理到 b.com ,那是不是就會(huì)受限于 a.com 的服務(wù)器帶寬呢?
如果受限于 a.com 的帶寬,不通過 a.com 反向代理,那么是不是可以用重定向的方式呢?
或者還有其他更友好的方式實(shí)現(xiàn)呢?謝謝各位 V 友。
前沿探索
2020-08-20 22:21:08
nginx 反向代理的 ip 被封,如何讓 nginx 第三方代理 ip 去訪問源站,讀取內(nèi)容?大牛們關(guān)注下
前沿探索
2020-08-20 22:21:02
希望 /a 匹配到 8.8.8.8,/b/a 匹配到 9.9.9.9
location ~/a { proxy_pass http://8.8.8.8;
}
location ~/b/a { proxy_pass http://9.9.9.9;
}
但是這樣寫第二個(gè)匹配也會(huì)匹配到 8.8.8.8 上面,求教怎么樣寫可以 /b/a 匹配到 9.9.9.9
前沿探索
2020-08-20 22:20:52
微信和新浪的圖片現(xiàn)在做了防外鏈,我看到別人搜狗咋能做到引用他們的圖片的呢?
例如 url 是: // img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http://mmbiz.qpic.cn/mmbiz/TllTwjBopyTRJ4RV4V1p1cpkOuHYbxG1kYYcclokcvNSfBNTJV9ojgxiap2NunC6nnMZp1QMfv9bRPAQVA211cg/0?wx_fmt=png
// img01.sogoucdn.com/net/a/04/link?appid=100520033&url=
這一段,是不是 nginx 做了反向代理?
我如果想做這樣的反向代理,我想問問規(guī)則如何寫?,比如我想做成:
www.xxx.com/wechat_img/http://mmbiz.qpic.cn/mmbiz/TllTwjBopyTRJ4RV4V1p1cpkOuHYbxG1kYYcclokcvNSfBNTJV9ojgxiap2NunC6nnMZp1QMfv9bRPAQVA211cg/0?wx_fmt=png
這樣就能訪問到圖片的話。我的 nginx 規(guī)則如何寫?我嘗試網(wǎng)上的各種,好像都不對。
前沿探索
2020-08-20 22:20:46
我有一個(gè)域名 a,郵箱托管在 gsuite,平時(shí)收件不太方便,想通過另外一個(gè)域名 b 反代到 gmail 的郵件服務(wù)器。目前上網(wǎng)搜集了一下資料,nginx 的反代雖然支持 mail,但是不支持把登陸憑證透傳給后端服務(wù)器,各位大佬有沒有什么思路?或者有用 nginx 或者其他服務(wù)反代收郵件的大佬出來指導(dǎo)一下。
前沿探索
2020-08-20 22:20:32
centos7,4CPU 8G,nginx 時(shí)不時(shí)在 top 里出現(xiàn) d 狀態(tài),查了下是 uninterruptible sleep,出現(xiàn)的時(shí)候 iftop 網(wǎng)絡(luò)全部跌至低谷,io 飆升,nginx 不接受也不處理新請求,業(yè)務(wù)阻塞死,大概 1 秒以后恢復(fù),期間 CPU 、內(nèi)存都正常,看 IOPS 也很低才幾百(通過阿里云的監(jiān)控看的),nginx 使用了 cache,把 proxy_cache 相關(guān)的全部注釋掉關(guān)閉 cache 后不再出現(xiàn) d 狀態(tài),這到底是啥問題?服務(wù)器是阿里 ECS,CPU 和內(nèi)存肯定夠用,IO 也不高,下面是出現(xiàn)問題時(shí)的狀態(tài):
avg-cpu: %user %nice %system %iowait %steal %idle 10.61 0.00 12.12 25.25 0.00 52.02
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 51.00 217.00 163.00 1123.00 880.00 6212.00 11.03 11.63 9.05 2.46 10.00 0.41 53.20
avg-cpu: %user %nice %system %iowait %steal %idle 12.56 0.00 13.57 39.20 0.00 34.67
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 257.00 168.00 930.00 716.00 5100.00 10.59 38.18 34.77 5.36 40.08 0.51 56.20
avg-cpu: %user %nice %system %iowait %steal %idle 16.58 0.00 16.58 63.32 0.00 3.52
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 29.00 291.00 184.00 1635.00 1040.00 37052.00 41.88 56.54 31.08 7.70 33.71 0.47 86.00
iotop:
Total DISK READ : 625.15 K/s | Total DISK WRITE : 680.54 K/s Actual DISK READ: 625.15 K/s | Actual DISK WRITE: 31.36 M/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND 3174 be/4 nginx 320.49 K/s 328.40 K/s 0.00 % 42.88 % nginx: worker process 4012 be/4 root 0.00 B/s 0.00 B/s 0.00 % 39.93 % [kworker/u4:3+flush-253:0] 3173 be/4 nginx 304.66 K/s 352.14 K/s 0.00 % 36.35 % nginx: worker process Total DISK READ : 1148.47 K/s | Total DISK WRITE : 1089.07 K/s Actual DISK READ: 1148.47 K/s | Actual DISK WRITE: 3.77 M/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND 4012 be/4 root 0.00 B/s 0.00 B/s 0.00 % 41.17 % [kworker/u4:3-events_unbound] 3173 be/4 nginx 570.28 K/s 574.24 K/s 0.00 % 37.87 % nginx: worker process 3174 be/4 nginx 578.20 K/s 514.83 K/s 0.00 % 37.18 % nginx: worker process
下面是我的 NGINX 配置: worker_processes 2; worker_shutdown_timeout 180s;
error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;
worker_rlimit_nofile 65535; events { worker_connections 65535;
} http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" $upstream_cache_status $request_time $upstream_response_time'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; gzip on; gzip_types application/json text/plain application/x-javascript application/javascript text/javascript text/css application/xml text/xml; gzip_min_length 1k; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 8 512k; server_tokens off; underscores_in_headers on; proxy_temp_path /tmp/cache_tmp; proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache1:100m inactive=7d max_size=20g; upstream backend { server xxx:xx max_fails=3 weight=3 fail_timeout=60s; } server { listen 80; location / { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_cache cache1; proxy_cache_convert_head off; proxy_cache_key $uri proxy_cache_revalidate on; proxy_cache_methods GET HEAD POST; } }
}
前沿探索
2020-08-20 22:20:18
在阿里云申請了域名、空間、綁定了域名,申請了 ssl,通過瀏覽器不能正常訪問。不知道怎么而回事? 下面是檢測端口的操作截圖。 通過命令窗口檢查域名綁定情況。我的域名是:xxzx.club 下面是 nginx.conf 的設(shè)置 vim /etc/nginx/nginx.conf # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80 default_server; listen [::]:80 default_server; server_name xxzx.club www.xxzx.club; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; rewrite ^(.*) https://$host$1 permanent; location / { root /usr/share/nginx/html; index index.html; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } # Settings for a TLS enabled server. # server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name xxzx.club www.xxzx.club; root /usr/share/nginx/html; ssl on; ssl_certificate /etc/nginx/cert/www.xxzx.club.pem; ssl_certificate_key /etc/nginx/cert/www.xxzx.club.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; # ssl_ciphers PROFILE=SYSTEM; #rewrite ^(.*)$ https://www.xxzx.club permanent; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { root /usr/share/nginx/html; index index.html; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }
在瀏覽器中輸入 https://xxzx.club 或者 https://www.xxzx.club 都會(huì)出現(xiàn)下面的無法打開的界面。
不知道錯(cuò)在哪里地方,請大家指教。謝謝。
前沿探索
2020-08-20 22:19:50
在知乎安卓 app 客戶端打開我自己的網(wǎng)站,總是打不開;我試了一下網(wǎng)頁版,是沒有問題的; 知乎 app 跳轉(zhuǎn)的鏈接示例: https://link.zhihu.com/?target=http%3A//www.test 測試網(wǎng)址.com &source=https%3A%2F%2Fwww.zhihu.com %2Fappview%2Fv2%2Fanswer%2F1323715282%3Fpage_index%3D0%26is_enable_double_click_voteup%3D0%26no_image%3Dfalse%26X-AD%3Dcanvas_version%253Av%253D5.1%253Bsetting%253Acad%253D0%26ad_pv_track%3D1請問是因?yàn)?&source=http 導(dǎo)致網(wǎng)頁打不開嗎? 我把上面的鏈接貼到瀏覽器中是可以打開的。 請問怎么配置 nginx 才能避免知乎 app 打不開網(wǎng)站呢?
前沿探索
2020-08-20 22:19:37
標(biāo)題一句話說不清楚,需求是這樣的,假設(shè)有 a.com 的域名,希望 nginx 收到 ccc.bbb.a.com 的 host 能夠反代到 ccc.bbb 這個(gè) host 去,找了一下資料,沒有找到怎么配置
想要類似這樣的配置: server_name ${child}.a.com; location / { proxy_pass http://${child}:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; }
前沿探索
2020-08-20 22:19:09
我在 nginx 上使用了雙向認(rèn)證,配置如下: server { listen 443 ssl; server_name localhost; ssl_certificate /etc/ssl/server.crt; # 配置證書位置 ssl_certificate_key /etc/ssl/server.key; # 配置秘鑰位置 ssl_client_certificate /etc/ssl/client.crt; # 客戶端公鑰證書 ssl_verify_client on; # 雙向認(rèn)證 charset utf-8; error_log /var/log/nginx/nginx_error.log; access_log /var/log/nginx/nginx_access.log; client_max_body_size 75M; root /usr/share/nginx/html/static; # 開啟 gzip gzip on; # 啟用 gzip 壓縮的最小文件,小于設(shè)置值的文件將不會(huì)壓縮 gzip_min_length 1k; # gzip 壓縮級別,1-10,數(shù)字越大壓縮的越好,也越占用 CPU 時(shí)間 gzip_comp_level 6; # 進(jìn)行壓縮的文件類型。javascript 有多種形式。其中的值可以在 mime.types 文件中找到。 gzip_types application/x-httpd-php image/jpeg image/gif image/png font/ttf font/otf image/svg+xml text/plain text/css application/javascript application/json application/x-javascript application/xml text/javascript; # 是否在 http header 中添加 Vary: Accept-Encoding,建議開啟 gzip_vary on; # 禁用 IE 6 gzip gzip_disable "MSIE [1-6]\."; location / { proxy_pass http://web:8000/; } }
想使用雙向認(rèn)證訪問 443 然后跳轉(zhuǎn)到 docker network 中的 web 的 8000 端口的
但在使用中跳轉(zhuǎn)不成功,瀏覽器攜帶客戶端證書訪問時(shí)會(huì)跳轉(zhuǎn)到 https://網(wǎng)關(guān)地址
如果把 proxy_pass http://web:8000/; 換為 proxy_pass https://baidu.com ; 卻可以跳轉(zhuǎn) 所以我認(rèn)為是使用了雙向認(rèn)證之后導(dǎo)致后面的跳轉(zhuǎn)強(qiáng)制轉(zhuǎn)向 https?
nginx_access.log 日志如下 - - [22/Jul/2020:07:51:57 +0000] "GET / HTTP/1.1" 200 84 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36" - - [22/Jul/2020:07:51:58 +0000] "GET / HTTP/1.1" 200 84 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36" - - [22/Jul/2020:07:51:59 +0000] "GET /web HTTP/1.1" 303 227 "https://xxx:443/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
所以我很好奇是否是雙向認(rèn)證的問題,是否雙向認(rèn)證之后后面的只能走 https,或者還是我在哪一方面的配置沒有弄好?
前沿探索
2020-08-20 22:18:54
因?yàn)閷W(xué)日語的原因,需要看些日語新聞練習(xí),網(wǎng)上找到一個(gè)直播源:
https://n24-cdn-live.ntv.co.jp/ch01/High.m3u8
這個(gè)白天播放還行,晚上非??恕O胫糜袀€(gè)吃灰香港 vps,能不能 Nginx 反代加速一下。
大佬們有搞過的嗎?分享下配置~~
前沿探索
2020-08-20 22:18:39
服務(wù)器是 nginx 做 web 服務(wù)的,有沒有全局的配置一次,就可以拒絕一批 ip 和指定 ua 的辦法?要全局是因?yàn)橛泻芏鄠€(gè)網(wǎng)站,如果在每個(gè)網(wǎng)站的 server 塊下引入拒絕 ip 的配置文件,那會(huì)不會(huì)損失性能?因?yàn)閱?ip 配置文件都 2m 了. 因?yàn)槲以诹硪环?wù)器上用 apache 可以在主配置文件加一次拒絕 ip 的配置,目錄下所有網(wǎng)站都可以生效.想問問 nginx 有沒有同樣的方法.或者可以在 centos 防火墻上可以設(shè)置? apache 配置: SetEnvIfNoCase User-Agent "SemrushBot" badbots Order deny,allow deny from env=badbots deny from 1.1.1.0/23 ...
前沿探索
2020-08-20 22:18:14
現(xiàn)在有個(gè)業(yè)務(wù)數(shù)據(jù)表 A,大概有一百多個(gè)字段,頁面表單也呈現(xiàn)的是這一百多個(gè)字段。 要求:每次用戶修改了其中的字段,都要發(fā)送提醒給管理員。管理員要知道修改了哪些字段。
這種是不是要多加一百多個(gè)字段標(biāo)識(shí)是否修改過?
數(shù)據(jù)庫:mysql
前沿探索
2020-08-20 22:18:02
之前的圖片都是一個(gè)個(gè)小文件放在文件夾中, 這樣的問題是, 需要的存儲(chǔ)空間比較大, 圖片遷移也不方便, 而且對 I/O 的消耗非常大. 目前考慮使用數(shù)據(jù)庫來存儲(chǔ), 方案有 lmdb sqlite 請問各位 V 友, 有其他好的方案嗎? 能支持多線程讀寫最好.
前沿探索
2020-08-20 22:17:41
最近電腦裝了 Windows Docker 用于開發(fā),順便問問 Windows 下的 Docker 環(huán)境是否適用于生產(chǎn)環(huán)境,除了資源浪費(fèi)還有那些坑
前沿探索
2020-08-20 22:15:09
docker alpine:3.8 環(huán)境安裝 openssl-dev 和 mariadb-connector-c-dev 顯示 conflicts,有啥其他解決辦法嗎?
需求:兩個(gè)包都必須安全 dev 版,mariadb-connector-c-dev 是為了解決 pip 安裝 mysqlclient 的問題,openssl-dev 是解決 DTLS 的問題。
Dockerfile FROM alpine:3.8 # Install dependencies RUN apk add --no-cache git tcpdump ipmitool build-base python3-dev py3-pip py3-cffi libxml2-dev libxslt-dev libffi-dev openssl-dev mariadb-connector-c-dev RUN adduser -s /bin/bash -D conpot WORKDIR /opt/ RUN git clone --depth=1 https://github.com/mushorg/conpot.git RUN chown conpot:conpot -R /opt/conpot # Install Python requirements USER conpot WORKDIR /opt/conpot RUN pip3 install --user --no-cache-dir --upgrade pip setuptools RUN pip3 install --user --no-cache-dir coverage RUN pip3 install --user --no-cache-dir -r requirements.txt # Install the Conpot application RUN python3 setup.py install --user --prefix= ENV PATH=$PATH:/home/conpot/.local/bin RUN py.test -v
前沿探索
2020-08-20 22:14:50
按照這個(gè)帖子,建立軟連接,但是啟動(dòng)后,docker images,發(fā)現(xiàn)已有鏡像消失https://note.wuze.me/modify-docker-default-storage-path linux 系統(tǒng):CentOS Linux release 7.6.1810 (Core) docker version: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-162.git64e9980.el7.centos.x86_64 正確的實(shí)踐應(yīng)該是什么呢?
前沿探索
2020-08-20 22:14:40
Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Registry Mirrors: https docker.mirrors.ustc.edu.cn/ Live Restore Enabled: false ERROR: error pulling image configuration: Get https production.cloudflare.docker.com/......: dial tcp: lookup production.cloudflare.docker.com: Temporary failure in name resolution
前沿探索
2020-08-20 22:14:31
添加了 /etc/docker/daemon.json 文件,并重啟了 docker 服務(wù): { "registry-mirrors": ["https://registry.docker-cn.com"] }
但是在 docker-compose pull 的時(shí)候還是: ERROR: for redis error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/78/78eed2b0e997b9eeba5a0dd0648453ae86b0049a1630e72767aecd2ef36d7432/data?verify=1596679311-3SOvzb1POKvMcF6cmMrwQFPfbJI%3D: dial tcp 104.18.122.25:443: i/o timeout ERROR: error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/78/78eed2b0e997b9eeba5a0dd0648453ae86b0049a1630e72767aecd2ef36d7432/data?verify=1596679311-3SOvzb1POKvMcF6cmMrwQFPfbJI%3D: dial tcp 104.18.122.25:443: i/o timeout
貌似 daemon.json 的配置并沒有生效,這是為何?
前沿探索
2020-08-20 22:14:18
使用 Docker 運(yùn)行 MySQL 時(shí),如何設(shè)置事務(wù)隔離級別呢?在 mysql - Docker Hub 并沒有找到相關(guān)的環(huán)境變量。
如果能提供信息來源就更好了,因?yàn)槲艺伊撕镁枚紱]找到。
前沿探索
2020-08-20 22:14:02
?? runnet
這是一個(gè)工具腳本,用來快速創(chuàng)建隔離的網(wǎng)絡(luò)環(huán)境,可以完成端口映射,避免監(jiān)聽端口沖突等功能。
背景
上學(xué)期期末時(shí)間數(shù)個(gè)后端大作業(yè)的 ddl 同時(shí)瘋狂逼近,又由于俺習(xí)慣于從舊的 project 里面 copy 代碼,也導(dǎo)致很多 project 端口號(hào)都是 8080 。結(jié)果導(dǎo)致在服務(wù)器上同時(shí)部署多個(gè) project 時(shí)炸鍋了,端口沖突是常事。但是以俺的性格,俺既不想重新打包 project,也不想產(chǎn)生改配置文件這樣的無關(guān)緊要的 git commit 。遂想到之前學(xué)習(xí)的 namespace,于是乎,寫了一個(gè)腳本來實(shí)現(xiàn)該想法,并發(fā)布到 github 上:
https://github.com/KB5201314/runnet
(不要臉地求 star )
這個(gè)腳本完成了 network namespace 的創(chuàng)建、forward 、端口映射一連串的步驟,我想對于在學(xué)習(xí) namespace 的人來說,這也會(huì)是一個(gè)入手的好例子。
Warning
該腳本會(huì)操作 iptables,不保證在您的環(huán)境中不會(huì)出現(xiàn)問題,因此請不要在生產(chǎn)環(huán)境偷懶使用該工具,以免造成損失
Q&A 這個(gè)和 docker 有啥關(guān)系
docker 也能完成端口映射,實(shí)際上命令參數(shù)的形式就是參考了 docker 。docker 不僅實(shí)現(xiàn)了 network 的隔離,還實(shí)現(xiàn)了其它層次的隔離,但是在我的需求中,只需要隔離 network 。 只能用來避免端口沖突嗎?
有一個(gè)參數(shù)可以控制是否允許聯(lián)網(wǎng)(是否轉(zhuǎn)發(fā)容器內(nèi)流量到外部),如果開啟則該應(yīng)用相當(dāng)于斷網(wǎng)運(yùn)行。如果還有其它的點(diǎn)子,歡迎提 pr 。魯迅曾經(jīng)說過:more features, more code. 你不會(huì)寫個(gè) DockerFile 嘛?
docker 確實(shí)可以,但是俺是真的懶 XD
前沿探索
2020-08-20 22:13:52
服務(wù)器為 CentOS 7 Docker 為 Nginx + PHP7.2 + MySQL + Redis
第一個(gè)想問服務(wù)器上的 docker 環(huán)境目錄? 我現(xiàn)在分配的是 www-data:www-data
第二個(gè)想問的是 volume 掛載的 www (項(xiàng)目目錄)? 我是通過 dockerfile 先在 php 鏡像中 創(chuàng)建 www-data:www-data 然后再修改用戶
一開始我全給 root 就很舒服,配了用戶組后反而經(jīng)常有些怪問題,所以想問問大家是怎么做的?
前沿探索
2020-08-20 22:12:59
之前用過 5.x 的鏡像創(chuàng)建過 container 后來換成新的 lasted 鏡像之后遇到了這個(gè)問題,該如何解決呢?容器一直錯(cuò)誤也無法進(jìn)入
前沿探索
2020-08-20 22:12:45
用 docker-compose 啟動(dòng)兩個(gè)服務(wù): 服務(wù) sa ,容器 IP 地址是自動(dòng)分配的 10.0.0.12 服務(wù) sb ,容器 IP 地址是自動(dòng)分配的 10.0.0.13
其他服務(wù)指定了這兩個(gè)服務(wù),比如 nginx 的 upstream upstream sa { server sa:12345; keepalive 1024; }
然后,停掉這兩個(gè)服務(wù) docker-compose stop sa sb ,然后先啟動(dòng) sb,這時(shí)候 sb 會(huì)拿到地址 10.0.0.12 ,再啟動(dòng) sa,這時(shí)候 sa 會(huì)拿到地址 10.0.0.13 ,跟之前翻了個(gè)個(gè)。
此時(shí)問題就出現(xiàn)了,Nginx 緩存了 host 與 IP 的關(guān)系,導(dǎo)致反向代理到了"錯(cuò)誤"的地址
除了 nginx 之外,不知道其他的各式各樣的軟件會(huì)不會(huì)也會(huì)有類似的問題,就是配置的不是 IP 地址而是容器的 host 名字,依賴的容器 IP 發(fā)生了變化,一般這種問題該咋處理?????
前沿探索
2020-08-20 22:12:23
最近在學(xué)習(xí) Docker,嘗試在 PHP 的 Laravel 項(xiàng)目的根目錄增加一個(gè) docker 文件夾,文件夾內(nèi)結(jié)構(gòu)如下 ├── composer ├── docker-compose.yml ├── Dockerfile └── nginx └── conf.d ├── demo.conf └── ssl ├── ssl.key └── ssl.pem
Dockerfile FROM nginx:latest AS stage-nginx FROM php:7.1-fpm AS stage-php WORKDIR /usr/local/bin COPY composer . RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \ && apt-get update \ && apt update ; yes "" |apt install git \ && apt-get install -y \ zip \ unzip \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ libxslt1-dev \ && rm -r /var/lib/apt/lists/* \ && ./docker-php-ext-install pdo_mysql \ && ./docker-php-ext-install mysqli \ && ./docker-php-ext-install bcmath \ && ./docker-php-ext-install mbstring \ && ./docker-php-ext-install opcache \ && ./docker-php-ext-install xsl \ && ./docker-php-ext-install pcntl \ && ./docker-php-ext-install -j$(nproc) iconv \ && ./docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && ./docker-php-ext-install -j$(nproc) gd \ && pecl install igbinary \ && docker-php-ext-enable igbinary \ && yes "" |pecl install lzf \ && docker-php-ext-enable lzf \ && yes "" |pecl install redis-4.0.1 \ && docker-php-ext-enable redis
docker-compose.yml version: "3.4" services: nginx-t: build: context: . target: stage-nginx volumes: - ../:/var/www/html - ./nginx/conf.d:/etc/nginx/conf.d ports: - "80:80" - "443:443" networks: net-t: ipv4_address: 172.18.0.2 php-t: build: context: . target: stage-php volumes: - ../:/var/www/html ports: - "9000:9000" networks: net-t: ipv4_address: 172.18.0.3 networks: net-t: ipam: config: - subnet: 172.18.0.0/20 driver: "bridge"
原本 Docker 是帶上了 MySQL 的,項(xiàng)目在使用本地 Docker 的 MySQL 時(shí)跑起來一切正常。
但考慮到真實(shí)環(huán)境下一般不會(huì)用本機(jī)裝 MySQL,可能會(huì)遠(yuǎn)程連阿里云等第三方的數(shù)據(jù)庫。
故把項(xiàng)目配置文件的數(shù)據(jù)庫改成阿里云 RDS 的 MySQL,數(shù)據(jù)庫用戶什么的均已創(chuàng)建并分配好相應(yīng)權(quán)限。
但阿里云數(shù)據(jù)庫用的是一個(gè) url 來進(jìn)行連接: xx-xxxxxxxxxxxx.mysql.rds.aliyuncs.com
但在進(jìn)入容器(docker-compose exec container_name /bin/bash),使用 php artisan 命令做數(shù)據(jù)表遷移或其他涉及數(shù)據(jù)庫的命令時(shí),會(huì)長時(shí)間無響應(yīng)。
在 CLI 模式下用 POD 連數(shù)據(jù)庫的話也是無響應(yīng),不同使用 artisan 的是到一定時(shí)間會(huì)報(bào)超時(shí),可能 artisan 在不斷重試,或者重試次數(shù)較多,我都是等 5 分鐘左右就關(guān)掉。 php -r "new PDO('mysql:host=0.0.0.0;dbname=db_name', 'username', 'pwd');"
接下里我嘗試在另一臺(tái)服務(wù)器上裝了個(gè) mysql,同樣的創(chuàng)建數(shù)據(jù)庫、用戶,分配權(quán)限,開 3306 端口,改項(xiàng)目配置。
但這次是直接用的服務(wù)器 ip 連,沒任何問題...
前沿探索
2020-08-20 22:12:09
寫了篇文章總結(jié)了下平時(shí)用 CMake 管理依賴的一些方法,主要是四種情況:依賴庫使用 or 未使用 CMake,是集成到項(xiàng)目的構(gòu)建過程里 or 在項(xiàng)目外部構(gòu)建。
歡迎討論~
鏈接: 現(xiàn)代 CMake 項(xiàng)目中的依賴管理
前沿探索
2020-08-20 22:11:46
在閱讀他人的項(xiàng)目代碼時(shí),都是徒手在 A4 紙上畫出類或者函數(shù)之間的調(diào)用關(guān)系,來梳理出來邏輯。想請問一下各位老哥,有沒有好用的工具可以使用?
目前用的開發(fā)工具是 Clion,C++項(xiàng)目。
如果各位老哥有更好的閱讀項(xiàng)目代碼的經(jīng)驗(yàn)可以傳授,感激不盡。
前沿探索
2020-08-20 22:11:39
在讀<>第二版時(shí),有一個(gè)模板問題,代碼如下:
模板定義: #include template ()(std::declval()...))> std::true_type isValidImpl(void *); template std::false_type isValidImpl(...); inline constexpr auto isValid = [](auto f) { return [](auto &&... args) { return decltype(isValidImpl(nullptr)){}; }; }; template struct TypeT { using Type = T; }; template constexpr auto type = TypeT{}; template T valueT(TypeT); constexpr auto isDefaultConstructible = isValid([](auto x) -> decltype((void)decltype(valueT(x))()) {});
如果一個(gè) lambda 函數(shù)不執(zhí)行是不是就不檢查返回類型合法性了呢,比如在執(zhí)行 isDefaultConstructible(type) 命令時(shí),會(huì)引入一個(gè) lamda 函數(shù),這個(gè) lambda 函數(shù)返回值是 decltype((void)decltype(valueT(x))()) {}) , decltype(valueT(x))() 在 x 是 int 的時(shí)候合法,導(dǎo)致最終調(diào)用第一個(gè) isValidImpl 函數(shù),x 是 int&的時(shí)候不合法,把第一個(gè) isValidImpl SFINAE out,調(diào)用第二個(gè)此優(yōu)先級 isValidImpl 函數(shù),即使 isValid 傳入的是一個(gè)不合法 lambda 函數(shù),但是由于沒有使用所以沒有檢查 lambda 函數(shù)合法性,我的理解正確嗎?
前沿探索
2020-08-20 22:11:27
我一直有這樣的疑問,比如有一個(gè) Map map ;幾個(gè)線程同時(shí)對這個(gè) map 進(jìn)行添加,刪除,修改里面 Student 里的屬性值,是不是這三種操作都需要鎖住? 我很明確操作對這個(gè) map 進(jìn)行添加,刪除,獲取 size 都是需要鎖住的,那么修改里面元素是不是也需要呢? 這個(gè)問題主要針對 C++和 Java 。
前沿探索
2020-08-20 22:11:13
給大家分享一個(gè) 7 年資深 iOS 工程師面試的視頻,里面的問題都挺經(jīng)典的,快來看看你能答對幾道~
視頻鏈接: https://www.bilibili.com/video/BV17Z4y1M7v4/
前沿探索
2020-08-20 22:09:28
計(jì)算機(jī)系的,java 入門,然后奇奇怪怪的過程中變成了全棧,最近用 vue 開發(fā)前端,因客戶要求臨時(shí)寫過一段時(shí)間 react,現(xiàn)在 iso 只有一個(gè)同事,要替補(bǔ)上,免得同事一請假就“單點(diǎn)故障”。根據(jù) app 項(xiàng)目代碼看了一周,學(xué)了基本語法,和項(xiàng)目中的各種調(diào)用邏輯,但還是疑惑很多,想來本書系統(tǒng)過一下。
求推薦,感謝!
前沿探索
2020-08-20 22:09:04
在“Designing Data-Intensive Applications - CHAPTER 5 Replication - Leaderless Replication - Detecting Concurrent Writes - Capturing the happens-before relationship”中,有這么一張圖:
之后它說: Note that the server can determine whether two operations are concurrent by looking at the version numbers—it does not need to interpret the value itself (so the value could be any data structure). The algorithm works as follows: The server maintains a version number for every key, increments the version number every time that key is written, and stores the new version number along with the value written. When a client reads a key, the server returns all values that have not been overwritten, as well as the latest version number. A client must read a key before writing. When a client writes a key, it must include the version number from the prior read, and it must merge together all values that it received in the prior read. (The response from a write request can be like a read, returning all current values, which allows us to chain several writes like in the shopping cart example.) When the server receives a write with a particular version number, it can overwrite all values with that version number or below (since it knows that they have been merged into the new value), but it must keep all values with a higher version number (because those values are concurrent with the incoming write).
我不太確定“我對覆蓋和保留的理解”是不是正確,我的理解如下所示:
前沿探索
2020-08-20 22:08:29
在“Designing Data-Intensive Applications - CHAPTER 5 Replication - Leaderless Replication - Limitations of Quorum Consistency”中,它說: However, even with w + r > n, there are likely to be edge cases where stale values are returned. These depend on the implementation, but possible scenarios include: ... If a write succeeded on some replicas but failed on others (for example because the disks on some nodes are full), and overall succeeded on fewer than w replicas, it is not rolled back on the replicas where it succeeded. This means that if a write was reported as failed, subsequent reads may or may not return the value from that write. ...
它說后續(xù)的讀可能會(huì)返回寫入失敗的值,是類似下面這樣的情況嗎? 假設(shè) n 為 5,w 和 r 都是 3 。鍵 k 的初始化值為 1 。 client 1 執(zhí)行 set k = k + 1 寫,這個(gè)寫只在兩個(gè)副本( replica 1 和 replica 2 )成功,所以是失敗的。 client 2 讀取鍵 k 的值,它在 replica 1 和 replica 2 中讀取到 2,而在 replica 3 讀取到 1,所以 client 2 會(huì)被告知鍵 k 的值為 2 。
我的疑問 上面的理解對嗎?如果是這樣子,不就相當(dāng)于讀取到了錯(cuò)誤的值嗎? 復(fù)制是怎么操作的呢?按照道理最后所有副本里面的值應(yīng)該是 1 才對,但是具體是怎么操作的呢? replica 1 和 replica 2 是怎么知道應(yīng)該使用 1 來覆寫 2 的呢? replica 3-5 又是怎么知道 2 是失敗的寫,從而繼續(xù)保留 1 的呢?
前沿探索
2020-08-20 22:08:45
最近在寫詳設(shè),數(shù)據(jù)庫設(shè)計(jì)部分,想請問有沒有一款工具可以作圖設(shè)計(jì)數(shù)據(jù)庫,并且導(dǎo)出 word 文檔生成數(shù)據(jù)庫表結(jié)構(gòu)的工具。注意現(xiàn)在是沒有數(shù)據(jù)庫的,能不能只根據(jù)設(shè)計(jì)進(jìn)行導(dǎo)出,如果有的話那可就方便了。
感謝!
前沿探索
2020-08-20 22:08:13
最近一直在看 InnoDB 事務(wù)相關(guān)的資料,之間我產(chǎn)生了許許多多的疑惑。 MySQL 插入意向鎖的作用是什么? - V2EX 如何獲取 performance_schema.data_locks 字段“l(fā)ock data”的真實(shí)數(shù)據(jù)? - V2EX 為什么插入時(shí)索引記錄獨(dú)占鎖只有在沖突的時(shí)候才存在? - V2EX InnoDB LOCK_MODE X,GAP,INSERT_INTENTION 到底是什么? - V2EX MySQL 文檔關(guān)于插入意向鎖的一個(gè)錯(cuò)誤? - V2EX
最后寫出了 MySQL 是如何實(shí)現(xiàn)可重復(fù)讀的? - 簡書 這篇文章,希望對大家有幫助。如果文章有錯(cuò)誤,歡迎指出。
前沿探索
2020-08-20 22:07:26
在 MySQL :: MySQL 8.0 Reference Manual :: 15.7.1 InnoDB Locking - Insert Intention Locks 中,有一個(gè)示例: Client A creates a table containing two index records (90 and 102) and then starts a transaction that places an exclusive lock on index records with an ID greater than 100. The exclusive lock includes a gap lock before record 102: mysql> CREATE TABLE child (id int(11) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB; mysql> INSERT INTO child (id) values (90),(102); mysql> START TRANSACTION; mysql> SELECT * FROM child WHERE id > 100 FOR UPDATE; +-----+ | id | +-----+ | 102 | +-----+ Client B begins a transaction to insert a record into the gap. The transaction takes an insert intention lock while it waits to obtain an exclusive lock. mysql> START TRANSACTION; mysql> INSERT INTO child (id) VALUES (101);
它說“The transaction takes an insert intention lock while it waits to obtain an exclusive lock”,但是我自己執(zhí)行后, select * from performance_schema.data_locks 的輸出如下: +--------+---------------------------------------+-----------------------+-----------+----------+---------------+-------------+----------------+-------------------+------------+-----------------------+-----------+------------------------+-------------+------------------------+ | ENGINE | ENGINE_LOCK_ID | ENGINE_TRANSACTION_ID | THREAD_ID | EVENT_ID | OBJECT_SCHEMA | OBJECT_NAME | PARTITION_NAME | SUBPARTITION_NAME | INDEX_NAME | OBJECT_INSTANCE_BEGIN | LOCK_TYPE | LOCK_MODE | LOCK_STATUS | LOCK_DATA | +--------+---------------------------------------+-----------------------+-----------+----------+---------------+-------------+----------------+-------------------+------------+-----------------------+-----------+------------------------+-------------+------------------------+ | INNODB | 140043377180872:1066:140043381460688 | 2166 | 49 | 90 | test | child | NULL | NULL | NULL | 140043381460688 | TABLE | IX | GRANTED | NULL | | INNODB | 140043377180872:5:4:3:140043381457776 | 2166 | 49 | 90 | test | child | NULL | NULL | PRIMARY | 140043381457776 | RECORD | X,GAP,INSERT_INTENTION | WAITING | 102 | | INNODB | 140043377180024:1066:140043381454544 | 2165 | 48 | 133 | test | child | NULL | NULL | NULL | 140043381454544 | TABLE | IX | GRANTED | NULL | | INNODB | 140043377180024:5:4:1:140043381451552 | 2165 | 48 | 133 | test | child | NULL | NULL | PRIMARY | 140043381451552 | RECORD | X | GRANTED | supremum pseudo-record | | INNODB | 140043377180024:5:4:3:140043381451552 | 2165 | 48 | 133 | test | child | NULL | NULL | PRIMARY | 140043381451552 | RECORD | X | GRANTED | 102 | +--------+---------------------------------------+-----------------------+-----------+----------+---------------+-------------+----------------+-------------------+------------+-----------------------+-----------+------------------------+-------------+------------------------+
Client B 對應(yīng)的那個(gè)事務(wù)正在等待獲取插入意向鎖,并不是文檔所說的“takes an insert intention lock while it waits to obtain an exclusive lock”,是我理解錯(cuò)了文檔中的那句話?還是文檔的一個(gè)錯(cuò)誤?
前沿探索
2020-08-20 22:07:18