
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HcH0Aobk-1674895367480)(null)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EmrNYHcL-1674895367646)(null)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-40aBxGbL-1674895367515)(null)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aMLQ4era-1674895369952)(null)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-71nGuB3y-1674895366971)(null)]
WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的开箱即用的网络视频平台,负责实现核心信令与设备管理后台部分,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持国标级联,支持将不带国标功能的摄像机/直播流/直播推流转发到其他国标平台。
流媒体服务基于@夏楚 ZLMediaKit https://github.com/ZLMediaKit/ZLMediaKit
播放器使用@dexter jessibuca https://github.com/langhuihui/jessibuca/tree/v3
前端页面基于@Kyle MediaServerUI https://gitee.com/kkkkk5G/MediaServerUI 进行修改.
运行mysql
$ docker pull mysql:8.0.29
docker run -p 33060:3306 --name mysql -v mysqlData:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.29
docker run -it -p 33060:3306 --name mysql -v mysqlData:/var/lib/mysql -v /root/home/zhangcn3/wvp.sql:/docker-entrypoint-initdb.d/wvp.sql -e MYSQL_ROOT_PASSWORD=root mysql:8.0.29
docker exec mysql sh -c 'exec mysqldump --databases wvp -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/wvp.sql
1. $ docker run -d -p 33060:3306 --name mysql -v mysqlData:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz2wsx3edc mysql:8.0.29
2. $ docker cp /root/wvp.sql mysql:/root/
3. $ docker exec -it mysql /bin/bash
4. $ mysql -uroot -proot
5. $ create database wvp;
6. $ use wvp;
7. $ source /root/wvp.sql
8. $ ctrl + pq
9. # 删除容器,保留数据卷
docker exec -it my /bin/bash
$ docker pull redis:4.0.14
$ docker run --name redis -d -p 6379:6379 -v redisData:/data redis:4.0.14 redis-server --appendonly yes
官方镜像 https://hub.docker.com/r/648540858/wvp_pro
编写Dockerfile
FROM openjdk:8u171
WORKDIR /app
COPY ./wvp-pro-2.3.2.jar wvp-pro-2.3.2.jar
EXPOSE 18081/tcp
EXPOSE 5060/tcp
EXPOSE 5060/udp
EXPOSE 18082/tcp
ENTRYPOINT ["/bin/sh", "-c", "cd /app && java ${JAVA_OPTS} -jar wvp-pro-2.3.2.jar"]
映射配置文件构建镜像
FROM openjdk:8u171
COPY ./wvp-pro-2.3.2.jar wvp-pro-2.3.2.jar
COPY ./application.yml /data/java/config/application.yml
EXPOSE 18081/tcp
EXPOSE 5060/tcp
EXPOSE 5060/udp
EXPOSE 18082/tcp
ENTRYPOINT ["java","-jar","wvp-pro-2.3.2.jar","--spring.config.location=/data/java/config/application.yml"]
构建镜像
docker build -t hub.brain.zcn.com/wvp/wvp-pro-release:v1.0 .
运行镜像
docker run -it -P --network host --rm hub.brain.zcn.com/wvp/wvp-pro-release:v1.0
docker run -it -p 18081:18081 -p 18082:18082 -p 5060:5060 -p 5060:5060/udp --name wvp hub.brain.zcn.com/wvp/wvp-pro-release:v1.0
docker run -it -p 18081:18081 -p 18082:18082 -p 5060:5060 -p 5060:5060/udp --name wvp -e JAVA_OPTS="-Dwvp.ip=10.110.156.68 -Dwvp.mysql.ip=10.110.156.68 -Dwvp.redis.ip=10.110.156.68 -Dwvp.extranet.ip=10.110.156.68" hub.brain.zcn.com/wvp/wvp-pro-release:v1.0
使用的端口
| 端口 | 类型 | 描述 |
|---|---|---|
| 6080 | tcp | zlm的http端口 |
| 554 | tcp&udp | zlm的rtsp端口,非必须 |
| 1935 | tcp | zlm的rtmp端口,非必须 |
| 5060 | tcp&udp | 28181 sip信令端口 |
| 18081 | tcp | wvp的http端口 |
| 18082 | tcp | 录像管理服务端口,非必须 |
| 30000-30500 | tcp&udp | zlm接收视频推流端口 |
摄像头视频管理平台 WVP地址:http://ip:18081/#/streamProxyList
用户名/密码:超级管理员:admin/QAZwsx123…
普通管理员:guest/guest
# 国内用户推荐从同步镜像网站gitee下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
# 千万不要忘记执行这句命令
git submodule update --init
Dockerfile
CentOs
ARG Version=7
FROM centos:${Version} As build
ARG HTTP_PROXY=${NO_PROXY}
ARG HTTPS_PROXY=${NO_PROXY}
ARG PKG_CONFIG_VERSION=0.29.2
ARG CMAKE_VERSION=3.18
ARG CMAKE_FULL_VERSION=3.18.4
ARG YASM_VERSION=1.3.0
ARG NASM_VERSION=2.15.05
ARG X265_VERSION=3.4
RUN yum install -y \
gcc \
gcc-c++ \
kernel-devel \
kernel-headers \
openssl \
openssl-devel \
git \
wget \
which
WORKDIR /opt
RUN wget --no-check-certificate -e "https_proxy=${HTTPS_PROXY}" https://pkgconfig.freedesktop.org/releases/pkg-config-${PKG_CONFIG_VERSION}.tar.gz \
&& tar -zxvf pkg-config-${PKG_CONFIG_VERSION}.tar.gz \
&& cd pkg-config-${PKG_CONFIG_VERSION} \
&& ./configure --with-internal-glib \
&& make -j8 \
&& make install
RUN wget -e "https_proxy=${HTTPS_PROXY}" https://cmake.org/files/v${CMAKE_VERSION}/cmake-${CMAKE_FULL_VERSION}.tar.gz \
&& tar -zxvf cmake-${CMAKE_FULL_VERSION}.tar.gz \
&& cd cmake-${CMAKE_FULL_VERSION} \
&& ./bootstrap \
&& gmake -j8 \
&& gmake install
RUN cd /opt \
&& wget -e "https_proxy=${HTTPS_PROXY}" http://www.tortall.net/projects/yasm/releases/yasm-${YASM_VERSION}.tar.gz \
&& tar zxvf yasm-${YASM_VERSION}.tar.gz \
&& cd yasm-${YASM_VERSION} \
&& ./configure \
&& make -j8 \
&& make install
RUN wget --no-check-certificate -e "https_proxy=${HTTPS_PROXY}" https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-${NASM_VERSION}.tar.xz \
&& tar -xvJf nasm-${NASM_VERSION}.tar.xz \
&& cd nasm-${NASM_VERSION} \
&& ./configure --disable-shared --enable-static \
&& make -j8 \
&& make install
RUN cd /opt \
&& git clone https://code.videolan.org/videolan/x264.git \
&& cd x264 \
&& git checkout -b stable origin/stable \
&& git pull --rebase \
&& ./configure --enable-pic --enable-shared --disable-asm \
&& make -j8 \
&& make install \
&& export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
RUN cd /opt \
&& wget -e "https_proxy=${HTTPS_PROXY}" https://github.com/videolan/x265/archive/Release_${X265_VERSION}.tar.gz \
&& tar zxvf Release_${X265_VERSION}.tar.gz \
&& cd x265-Release_${X265_VERSION}/build/linux \
&& cmake ../../source \
&& make -j8 \
&& make install \
&& export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
RUN cd /opt \
&& git clone https://gitee.com/xia-chu/FFmpeg.git \
&& cd /opt/FFmpeg \
&& export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH \
&& ./configure \
--disable-debug \
--disable-doc \
--disable-shared \
--enable-gpl \
--enable-version3 \
--enable-static \
--enable-nonfree \
--enable-pthreads \
--enable-libx264 \
--enable-libx265 \
--enable-small \
--pkgconfigdir=/usr/local/lib/pkgconfig \
--pkg-config-flags="--static" \
&& make -j8 \
&& make install
RUN cd /opt \
&& git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git \
&& cd ZLMediaKit \
&& git submodule update --init \
&& mkdir -p build release/linux/Release/ \
&& cd build \
&& cmake -DCMAKE_BUILD_TYPE=Release .. \
&& make -j8
RUN mkdir -p /opt/build/opt/zlm/ /opt/build/usr/local/bin/ /opt/build/usr/bin/ /opt/build/usr/local/lib/ /opt/build/etc/localtime \
&& cd /opt/build \
&& /usr/bin/cp -ip /usr/local/lib/libx26* ./usr/local/lib \
&& /usr/bin/cp -ip /usr/local/bin/ffmpeg ./usr/local/bin \
&& /usr/bin/cp -ip /opt/ZLMediaKit/release/linux/Release/MediaServer ./opt/zlm/ \
&& /usr/bin/cp -irp /opt/ZLMediaKit/release/linux/Release/www ./opt/zlm/ \
&& /usr/bin/cp -ip /usr/bin/which ./usr/bin/
## /usr/bin/cp -ip /opt/ZLMediaKit/tests/ssl.p12 ./opt/zlm/ \
FROM centos:${Version}
LABEL maintainer="chengxiaosheng <kevin__cheng@outlook.com>" project-url="https://github.com/xia-chu/ZLMediaKit" description="一个基于C++11的高性能运营级流媒体服务框架"
EXPOSE 9000/tcp \
1935/tcp \
19350/tcp \
554/tcp \
322/tcp \
80/tcp \
443/tcp \
10000/udp \
10000/tcp
WORKDIR /opt/zlm
VOLUME [ "/opt/zlm/conf/","/opt/zlm/log/","opt/zlm/ffmpeg/"]
COPY --from=build /opt/build /
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH TZ=Asia/Shanghai
CMD ./MediaServer -c ./conf/config.ini
ubuntu
FROM ubuntu:18.04
#shell,rtmp,rtsp,rtsps,http,https,rtp
EXPOSE 9000/tcp
EXPOSE 1935/tcp
EXPOSE 554/tcp
EXPOSE 322/tcp
EXPOSE 80/tcp
EXPOSE 443/tcp
EXPOSE 10000/udp
EXPOSE 10000/tcp
EXPOSE 30000-30500/tcp
EXPOSE 30000-30500/udp
RUN apt-get update && \
DEBIAN_FRONTEND="noninteractive" \
apt-get install -y --no-install-recommends \
build-essential \
cmake \
git \
curl \
vim \
ca-certificates \
tzdata \
libssl-dev \
libmysqlclient-dev \
libx264-dev \
libfaac-dev \
ffmpeg \
libmp4v2-dev && \
apt-get autoremove -y && \
apt-get clean -y && \
rm -rf /var/lib/apt/lists/*
RUN mkdir -p /opt/media
WORKDIR /opt/media
RUN git clone --depth=1 https://gitee.com/xia-chu/ZLMediaKit && \
cd ZLMediaKit && git submodule update --init --recursive && \
mkdir -p build release/linux/Release/
WORKDIR /opt/media/ZLMediaKit/build
RUN cmake -DCMAKE_BUILD_TYPE=Release .. && \
make
ENV PATH /opt/media/ZLMediaKit/release/linux/Release:$PATH
CMD MediaServer
构建镜像
== CentOs ==
docker build -t hub.brain.lenovo.com/wvp/zlmediakit:1.0.0
== ubuntu ==
docker build -t hub.brain.lenovo.com/wvp/zlmediakit:1.0.0-ubuntu18.04
config.ini
; auto-generated by mINI class {
[api]
apiDebug=1
defaultSnap=./www/logo.png
secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
snapRoot=./www/snap/
[cluster]
origin_url=
retry_count=3
timeout_sec=15
[ffmpeg]
bin=/usr/bin/ffmpeg
cmd=%s -fflags nobuffer -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s
log=./ffmpeg/ffmpeg.log
restart_sec=0
snap=%s -i %s -y -f mjpeg -t 0.001 %s
[general]
addMuteAudio=1
check_nvidia_dev=1
continue_push_ms=3000
enableVhost=0
enable_audio=1
enable_ffmpeg_log=0
flowThreshold=1024
fmp4_demand=0
hls_demand=0
maxStreamWaitMS=15000
mediaServerId=FQ3TF8yT83wh5Wvz
mergeWriteMS=0
modifyStamp=0
publishToHls=1
publishToMP4=0
resetWhenRePlay=1
rtmp_demand=0
rtsp_demand=0
streamNoneReaderDelayMS=15000
ts_demand=0
unready_frame_cache=100
wait_add_track_ms=3000
wait_track_ready_ms=3000
[hls]
broadcastRecordTs=0
deleteDelaySec=0
fileBufSize=65536
filePath=./www
segDur=2
segKeep=0
segNum=3
segRetain=5
[hook]
admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
alive_interval=10.0
enable=1
on_flow_report=http://10.110.131.204:18081/index/hook/on_flow_report
on_http_access=http://10.110.131.204:18081/index/hook/on_http_access
on_play=http://10.110.131.204:18081/index/hook/on_play
on_publish=http://10.110.131.204:18081/index/hook/on_publish
on_record_mp4=http://127.0.0.1:18082/api/record/on_record_mp4
on_record_ts=http://10.110.131.204:18081/index/hook/on_record_ts
on_rtsp_auth=http://10.110.131.204:18081/index/hook/on_rtsp_auth
on_rtsp_realm=http://10.110.131.204:18081/index/hook/on_rtsp_realm
on_send_rtp_stopped=http://10.110.131.204:18081/index/hook/on_send_rtp_stopped
on_server_keepalive=http://10.110.131.204:18081/index/hook/on_server_keepalive
on_server_started=http://10.110.131.204:18081/index/hook/on_server_started
on_shell_login=http://10.110.131.204:18081/index/hook/on_shell_login
on_stream_changed=http://10.110.131.204:18081/index/hook/on_stream_changed
on_stream_none_reader=http://10.110.131.204:18081/index/hook/on_stream_none_reader
on_stream_not_found=http://10.110.131.204:18081/index/hook/on_stream_not_found
retry=1
retry_delay=3.0
timeoutSec=20
[http]
charSet=utf-8
dirMenu=1
forbidCacheSuffix=
forwarded_ip_header=
keepAliveSecond=30
maxReqSize=40960
notFound=<html><head><title>404 Not Found</title></head><body bgcolor="white"><center><h1>您访问的资源不存在!</h1></center><hr><center>ZLMediaKit(git hash:00c9749,branch:master,build time:Sep 5 2022 06:45:26)</center></body></html>
port=6080
rootPath=./www
sendBufSize=65536
sslport=8443
virtualPath=
[multicast]
addrMax=239.255.255.255
addrMin=239.0.0.0
udpTTL=64
[record]
appName=record
fastStart=0
fileBufSize=65536
filePath=./www
fileRepeat=0
fileSecond=3600
mp4_as_player=0
sampleMS=500
[rtc]
externIP=
port=8000
preferredCodecA=PCMU,PCMA,opus,mpeg4-generic
preferredCodecV=H264,H265,AV1X,VP9,VP8
rembBitRate=0
timeoutSec=15
[rtmp]
handshakeSecond=15
keepAliveSecond=15
modifyStamp=0
port=1935
sslport=0
[rtp]
audioMtuSize=600
rtpMaxSize=10
videoMtuSize=1400
[rtp_proxy]
dumpDir=
g711a_pt=8
g711u_pt=0
h264_pt=98
h265_pt=99
opus_pt=100
port=10000
port_range=30000-30500
ps_pt=96
timeoutSec=15
ts_pt=33
[rtsp]
authBasic=0
directProxy=1
handshakeSecond=15
keepAliveSecond=15
port=554
sslport=0
[shell]
maxReqSize=1024
port=0
[srt]
latencyMul=4
pktBufSize=8192
port=9000
timeoutSec=5
; } ---
== CentOs ==
docker run -it -p 1935:1935 -p 6080:6080 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 9000:9000/udp -p 30000-30500:30000-30500/udp -p 30000-30500:30000-30500/tcp -v zlmConfig:/opt/zlm/conf --name zlm hub.brain.lenovo.com/wvp/zlmediakit:1.0.0
== ubuntu ==
docker run -it -p 1935:1935 -p 6080:6080 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 9000:9000/udp -p 30000-30500:30000-30500/udp -p 30000-30500:30000-30500/tcp -v zlmConfig:/opt/media/ZLMediaKit/release/linux/Release --name zlm hub.brain.lenovo.com/wvp/zlmediakit:1.0.0-ubuntu18.04
== 加授权 ==
docker run -it -p 1935:1935 -p 6080:6080 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 9000:9000/udp -p 30000-30500:30000-30500/udp -p 30000-30500:30000-30500/tcp -v zlmConfig:/opt/media/ZLMediaKit/release/linux/Release -v /root/.hasplm/hasp_33090.ini:/root/.hasplm/hasp_33090.ini --name zlm hub.brain.lenovo.com/wvp/zlmediakit:1.0.1-ubuntu18.04
# 2-1.修改文件名
$ mv docker-compose-Linux-x86_64 docker-compose
# 2-2.将dockedr-compose 移动到/usr/local/bin/目录下
$ mv docker-compose /usr/local/bin/
# 2-3.将docker-compose赋予执行权限
$ chmod +x /usr/local/bin/docker-compose
# 2-4.查看版本
$ docker-compose -v
version: "3.0"
services:
mysql:
image: mysql:8.0.29
container_name: mysqls
ports:
- "33060:3306"
volumes:
- mysqlData:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 1qaz2wsx3edc
networks:
- wvp
restart: always
redis:
image: redis:4.0.14
container_name: rediss
ports:
- "6379:6379"
volumes:
- redisData:/data
command: redis-server
networks:
- wvp
restart: always
zlm:
#image: zlmediakit:latest
image: hub.brain.zcn.com/wvp/zlmediakit:1.0.0
container_name: zlms
ports:
- "1935:1935"
- "6080:6080"
- "8443:443"
- "8554:554"
- "8554:554/udp"
- "10000:10000"
- "10000:10000/udp"
- "9000:9000/udp"
- "30000-30500:30000-30500"
- "30000-30500:30000-30500/udp"
volumes:
- zlmConfig:/root/ZLMediaKit/release/linux/Debug/
networks:
- wvp
restart: always
wvp:
image: hub.brain.zcn.com/wvp/wvp-pro-release:v1.0
container_name: wvps
ports:
- "18081:18081"
- "18082:18082"
- "5060:5060"
- "5060:5060/udp"
environment:
- JAVA_OPTS:'-Dwvp.ip=10.110.131.204'
networks:
- wvp
depends_on:
- mysql
- redis
- zlm
restart: always
networks:
wvp:
volumes:
mysqlData:
external:
true
redisData:
external:
true
zlmConfig:
external:
true
lz docker-conpose
version: "3.0"
services:
mysql:
image: mysql:8.0.29
container_name: mysqls
ports:
- "33060:3306"
volumes:
- mysqlData:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
networks:
- wvp
restart: always
redis:
image: redis:4.0.14
container_name: rediss
ports:
- "6379:6379"
volumes:
- redisData:/data
command: redis-server
networks:
- wvp
restart: always
zlm:
image: zlmediakit:latest
container_name: zlms
ports:
- "1935:1935"
- "6080:6080"
- "443:443"
- "554:554"
- "554:554/udp"
- "10000:10000"
- "10000:10000/udp"
- "9000:9000/udp"
- "30000-30500:30000-30500"
- "30000-30500:30000-30500/udp"
volumes:
- /data/zlm/data/Debug:/root/ZLMediaKit/release/linux/Debug
networks:
- wvp
restart: always
wvp:
image: wvp-pro:2.3.25
container_name: wvps
ports:
- "18081:18081"
- "18082:18082"
- "5060:5060"
- "5060:5060/udp"
environment:
- JAVA_OPTS:'-Dwvp.ip=172.16.122.125'
networks:
- wvp
depends_on:
- mysql
- redis
- zlm
restart: always
networks:
wvp:
volumes:
mysqlData:
external:
true
redisData:
external:
true
zlmConfig:
external:
true
1. $ mkdir sip
2. $ mv /root/docker-compose.yml sip
3. # !!!---修改wvp.environment ip为本机ip--- !!!
4. $ docker-compose up -d
$ docker run -d -p 9001:9000 -v /root/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name dev-portainer portainer/portainer
#参数说明:
-v /var/run/docker.sock:/var/run/docker.sock # 把宿主机的Docker守护进程(docker daemon)默认监听的Unix域套接字挂载到容器中
-v /root/portainer:/data # 把宿主机目录 /root/portainer 挂载到容器 /data 目录;
| 服务 | 端口 | 类型 | 描述 | 必须 |
|---|---|---|---|---|
| wvp | 18081 | tcp | wvp的http端口 | 是 |
| wvp | 5060 | tcp&udp | 28181sip信令端口 | 是 |
| wvp | 18082 | tcp | 录像管理服务端口 | 是 |
| zlm | 6080 | tcp | 流媒体服务的http端口 | 是 |
| zlm | 1935 | tcp | 流媒体服务的rtmp端口 | 是 |
| zlm | 554 | tcp&udp | 流媒体服务的rtsp端口 | 是 |
| zlm | 30000-30500 多端口开放 | tcp&udp | 流媒体服务接收视频推流端口 | 是 |
| zlm | 443 | tcp | 否 | |
| wvp | 9001 | tcp | 查看Docker容器管理端口 | 否 |
| zlm | 8000 | rtc端口 | 否 | |
| zlm | 9000 | srt端口 | 否 | |
| zlm | 10000 单端口开放 | tcp&udp | zlm服务器单端口收流端口 | 否 |
PS: wvp之所以不需要zlm配置这么多, 是因为wvp会在连接上zlm后,自动配置zlm. 尽量简化大家的配置. wiki更新可能不是很及时。大家可以参考all-application.yml, 里面有所有的配置项以及注释。
1.外网端口必须开放多端口模式
30000~30500
2.ip配置要求
sip.ip #必须为外网IP地址,摄像头通过外网访问wvp
media.stream-ip #必须为外网IP地址,视频流通过此ip访问流媒体服务zlm
3.测试udp端口
telnet -nupl 无法测试udp端口
测试udp端口命令【需要关闭该端口的tcp】
$ nc -vuz 10.110.131.64 8080
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit
我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/
前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
Ocra无法处理需要“tk”的应用程序require'tk'puts'nope'用奥克拉http://github.com/larsch/ocra不起作用(如链接中的一个问题所述)问题:https://github.com/larsch/ocra/issues/29(Ocra是1.9的"new"rubyscript2exe,本质上它用于将rb脚本部署为可执行文件)唯一的问题似乎是缺少tcl的DLL文件我不认为这是一个问题据我所知,问题是缺少tk的DLL文件如果它们是已知的,则可以在执行ocra时将它们包括在内有没有办法知道tk工作所需的DLL依赖项? 最佳答