Jenkins使用笔记
Jenkins
Name | Version |
---|---|
Linux | Cent OS 7 |
Jenkins | 2.275-1.1 |
Java | 1.8.0_292 |
Node.js | 12.19 |
Nginx | 1.16.0 |
Maven | 3.8.1 |
一、Jenkins环境搭建
1. 安装Java
# 下载Java
yum install -y java# 查看安装
[root@Mashiro /]# java -version
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)
2. 安装Jenkins
# 前置插件[已安装可不执行此命令]
yum -y install wget# 官网安装命令
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install -y jenkins# 使用清华大学镜像
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.249.3-1.1.noarch.rpm
yum install jenkins-2.249.3-1.1.noarch.rpm
3. 修改Jenkins配置文件
vim /etc/sysconfig/jenkins
JENKINS_HOME="/var/lib/jenkins"JENKINS_PORT="8080"JENKINS_USER="jenkins"
4. 启动Jenkins
service jenkins start/stop/restart
5. 访问Jenkins页面
5.1. 进入Jenkins登录页面
# 127.0.0.1 改为 自己的服务器地址
# 8080 为上面设置的 JENKINS_PORT
http://127.0.0.1:8080/
5.2. 获取登录密码
cat /var/lib/jenkins/secrets/initialAdminPassword
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QhcSykJd-1636896546911)(password.png)]
6. 新手入门
6.1. 安装插件
这波啊 这波是能自动绝不手动
6.2. 自动安装插件
6.3. 创建第一个管理员用户
- 输入要创建的帐号信息,然后保存并完成。
- 如果不创建账号,使用初始的admin账户也可以。
6.4. 修改Jenkins URL
- Jenkins URL 是Jenkins的 服务器地址+端口号 一般默认就好
6.5. 搭建成功
二、Jenkins部署Spring Cloud 项目
1. 安装、配置所需要的插件
1.1. 下载Maven插件
- 进入系统管理
- 选择Maven进行下载
1.2. 工具全局配置设置
- 配置JDK (别名随便起 自动安装)
- 配置Maven (NAME随便起 自动安装)
1.3. 设置全局Git凭据
1.4. 添加凭据
2. 开始部署项目
2.1. 新建任务
2.2. 构建部署Maven项目
2.3. General
2.4. 源码管理
2.5. Build
2.6. Post Steps
2.7. 添加Shell 执行脚本
- Shell 实例
#!/bin/bash
export BUILD_ID=dontKillMe#Jenkins中编译好的jar位置
jar_path=/var/lib/jenkins/workspace/java-a/iap_play/iap-service/iap-system/iap-system-provider/target#Jenkins中编译好的jar名称
jar_name=iap-system-provider-1.0.jar#获取并杀掉以前的进程
ps aux|grep "iap-system-provider-1.0.jar"|grep -v grep|awk '{print $2}'|xargs kill -9 #进入指定的编译好的jar的位置
cd ${jar_path} #启动jar,后台启动
nohup java -jar ${jar_name} &echo "启动成功"
2.8. 开始构建
3. 扫雷
3.1. ERROR: Failed to parse POMs
Parsing POMsERROR: Failed to parse POMsorg.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:[FATAL] Non-resolvable parent POM for com.itl:iap:1.0: org.springframework.boot:spring-boot-starter-parent:pom:2.2.7.RELEASE failed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of maven-default-http-blocker has elapsed or updates are forced. Original error: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:2.2.7.RELEASE from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [iap_nexus (http://xxx.xx.xx.xxx:xxxx/nexus/repository/maven-public/, default, releases+snapshots)] and 'parent.relativePath' points at wrong local POM @ line 6, column 13 at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:397) at hudson.maven.MavenEmbedder.buildProjects(MavenEmbedder.java:370) at hudson.maven.MavenEmbedder.readProjects(MavenEmbedder.java:340) at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1330) at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1124) at hudson.FilePath.act(FilePath.java:1162) at hudson.FilePath.act(FilePath.java:1145) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.parsePoms(MavenModuleSetBuild.java:985) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:689) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:513) at hudson.model.Run.execute(Run.java:1907) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429)Finished: FAILURE
原因: 项目中采用nexus私服,需要配置修改Jenkins组件中Maven的配置文件。
解决方法:
vim /var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven3.8.1/conf/settings.xml
<!-- 设置 mirror 为 私服 和 阿里云镜像 --><mirrors> <mirror> <id>iap_nexus</id> <name>IAP Nexus</name> <url>http://xxx.xx.xx.xxx:xxxx/nexus/repository/maven-public/</url> <mirrorOf>!internal.repo,*</mirrorOf> </mirror> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>aliyun</name> <url>https://maven.aliyun.com/repository/public</url> </mirror></mirrors>
3.2. FATAL: command execution failed
[java-a] $ mvn -f /var/lib/jenkins/workspace/java-a/java-a/iap_play/pom.xml clean installFATAL: command execution failedchannel stoppedjava.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:247) at java.lang.ProcessImpl.start(ProcessImpl.java:134) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)Caused: java.io.IOException: Cannot run program "mvn" (in directory "/var/lib/jenkins/workspace/java-a"): error=2, No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at hudson.Proc$LocalProc.<init>(Proc.java:252) at hudson.Proc$LocalProc.<init>(Proc.java:221) at hudson.Launcher$LocalLauncher.launch(Launcher.java:996) at hudson.Launcher$ProcStarter.start(Launcher.java:508) at hudson.Launcher$ProcStarter.join(Launcher.java:519) at hudson.tasks.Maven.perform(Maven.java:368) at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:803) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.build(MavenModuleSetBuild.java:944) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:894) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:513) at hudson.model.Run.execute(Run.java:1907) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429)Build step 'Invoke top-level Maven targets' marked build as failureFinished: FAILURE
原因: 项目中采用nexus私服,需要配置修改Jenkins组件中Maven的配置文件。
解决方法:调整 Jenkins 配置中的 pom.xml 路径
3.3. No goals have been specified for this build.
[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1][ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.[ERROR] Re-run Maven using the -X switch to enable full debug logging.[ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles:[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoGoalSpecifiedExceptionBuild step 'Invoke top-level Maven targets' marked build as failureFinished: FAILURE
原因: pom.xml 中缺少配置
解决方法:
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> </plugin> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.6.0.1398</version> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.6</version> </plugin> </plugins> </pluginManagement> <!-- 在父项目中的build标签,追加这句配置就好了 --> <defaultGoal>compile</defaultGoal> </build>
3.4. Jenkins 用户权限问题
vim /etc/sysconfig/jenkisn# 配置修改JENKINS_USER="root"JENKINS_GROUP="root"
三、Jenkins 部署 Vue
1. 安装 NodeJS
在Jenkins页面的插件管理中下载 Node.js 插件
2. NodeJS全局工具配置
Tips: Node.js 推荐下载稳定的 12.xx 版本
3. 构建部署Vue项目
3.1. 新建任务
3.2. Greneral、源码管理步骤与构建Spring Cloud项目一样
3.3. 环境构建
- 构建环境选择Node & npm
3.4. 构建执行Shell
# 进入Jenkins项目工程下cd /var/lib/jenkins/workspace/web-a-1# 配置淘宝源npm config set registry http://registry.npm.taobao.org# 下载、打包npm installnpm run build:prod# 移除旧项目,打包新项目rm -rf web-a-1.tar.gztar -zcvf web-a-1.tar.gz *
4. 扫雷
4.1. npm ERR!
npm WARN deprecated core-js@2.6.12: core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.npm ERR! code 1npm ERR! path /var/lib/jenkins/workspace/web-a-1/node_modules/deasyncnpm ERR! command failednpm ERR! command sh -c node ./build.jsnpm ERR! make: Entering directory `/var/lib/jenkins/workspace/web-a-1/node_modules/deasync/build'npm ERR! CXX(target) Release/obj.target/deasync/src/deasync.onpm ERR! make: Leaving directory `/var/lib/jenkins/workspace/web-a-1/node_modules/deasync/build'npm ERR! gyp info it worked if it ends with oknpm ERR! gyp info using node-gyp@7.1.2npm ERR! gyp info using node@16.3.0 | linux | x64npm ERR! gyp info find Python using Python version 2.7.5 found at "/bin/python"npm ERR! gyp http GET https://nodejs.org/download/release/v16.3.0/node-v16.3.0-headers.tar.gznpm ERR! gyp http 200 https://nodejs.org/download/release/v16.3.0/node-v16.3.0-headers.tar.gznpm ERR! gyp http GET https://nodejs.org/download/release/v16.3.0/SHASUMS256.txtnpm ERR! gyp http 200 https://nodejs.org/download/release/v16.3.0/SHASUMS256.txtnpm ERR! (node:78268) [DEP0150] DeprecationWarning: Setting process.config is deprecated. In the future the property will be read-only.npm ERR! (Use `node --trace-deprecation ...` to show where the warning was created)npm ERR! gyp info spawn /bin/pythonnpm ERR! gyp info spawn args [npm ERR! gyp info spawn args '/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_JS_16.3.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',npm ERR! gyp info spawn args 'binding.gyp',npm ERR! gyp info spawn args '-f',npm ERR! gyp info spawn args 'make',npm ERR! gyp info spawn args '-I',npm ERR! gyp info spawn args '/var/lib/jenkins/workspace/web-a-1/node_modules/deasync/build/config.gypi',npm ERR! gyp info spawn args '-I',npm ERR! gyp info spawn args '/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_JS_16.3.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',npm ERR! gyp info spawn args '-I',npm ERR! gyp info spawn args '/root/.cache/node-gyp/16.3.0/include/node/common.gypi',npm ERR! gyp info spawn args '-Dlibrary=shared_library',npm ERR! gyp info spawn args '-Dvisibility=default',npm ERR! gyp info spawn args '-Dnode_root_dir=/root/.cache/node-gyp/16.3.0',npm ERR! gyp info spawn args '-Dnode_gyp_dir=/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_JS_16.3.0/lib/node_modules/npm/node_modules/node-gyp',npm ERR! gyp info spawn args '-Dnode_lib_file=/root/.cache/node-gyp/16.3.0/<(target_arch)/node.lib',npm ERR! gyp info spawn args '-Dmodule_root_dir=/var/lib/jenkins/workspace/web-a-1/node_modules/deasync',npm ERR! gyp info spawn args '-Dnode_engine=v8',npm ERR! gyp info spawn args '--depth=.',npm ERR! gyp info spawn args '--no-parallel',npm ERR! gyp info spawn args '--generator-output',npm ERR! gyp info spawn args 'build',npm ERR! gyp info spawn args '-Goutput_dir=.'npm ERR! gyp info spawn args ]npm ERR! gyp info spawn makenpm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]npm ERR! make: g++: Command not foundnpm ERR! make: *** [Release/obj.target/deasync/src/deasync.o] Error 127npm ERR! gyp ERR! build error npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2npm ERR! gyp ERR! stack at ChildProcess.onExit (/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_JS_16.3.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:394:28)npm ERR! gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12)npm ERR! gyp ERR! System Linux 3.10.0-1160.el7.x86_64npm ERR! gyp ERR! command "/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_JS_16.3.0/bin/node" "/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_JS_16.3.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"npm ERR! gyp ERR! cwd /var/lib/jenkins/workspace/web-a-1/node_modules/deasyncnpm ERR! gyp ERR! node -v v16.3.0npm ERR! gyp ERR! node-gyp -v v7.1.2npm ERR! gyp ERR! not ok npm ERR! Build failednpm ERR! A complete log of this run can be found in:npm ERR! /root/.npm/_logs/2021-06-22T06_50_05_035Z-debug.logBuild step 'Execute shell' marked build as failureFinished: FAILURE
- 原因:未知
- 解决办法:因此时使用的Node版本为16.x,改用12.x后,install成功。
4.2. workspace/wxsweb: No such file or directory
[web-a-1] $ /bin/sh -xe /tmp/jenkins6674175746436472177.sh+ cd /var/jenkins_home/workspace/wxsweb/tmp/jenkins6674175746436472177.sh: line 2: cd: /var/jenkins_home/workspace/wxsweb: No such file or directoryBuild step 'Execute shell' marked build as failureFinished: FAILURE
- 原因:找不到/var/jenkins_home/workspace/wxsweb
- 解决办法:安装webpack
npm install webpack -g
4.3. ERROR Error: Cannot find module ‘webpack/package.json’
+ npm run build:prod -config package.json> vue-admin-template@4.4.0 build:prod /var/lib/jenkins/workspace/web-a-1> vue-cli-service build "package.json"- Building for production... ERROR Error: Cannot find module 'webpack/package.json'Require stack:- /var/lib/jenkins/workspace/web-a-1/node_modules/html-webpack-plugin/lib/chunksorter.js- /var/lib/jenkins/workspace/web-a-1/node_modules/@vue/cli-service/lib/config/app.js- /var/lib/jenkins/workspace/web-a-1/node_modules/@vue/cli-service/lib/Service.js- /var/lib/jenkins/workspace/web-a-1/node_modules/@vue/cli-service/bin/vue-cli-service.jsError: Cannot find module 'webpack/package.json'Require stack:- /var/lib/jenkins/workspace/web-a-1/node_modules/html-webpack-plugin/lib/chunksorter.js- /var/lib/jenkins/workspace/web-a-1/node_modules/@vue/cli-service/lib/config/app.js- /var/lib/jenkins/workspace/web-a-1/node_modules/@vue/cli-service/lib/Service.js- /var/lib/jenkins/workspace/web-a-1/node_modules/@vue/cli-service/bin/vue-cli-service.js at Function.Module._resolveFilename (internal/modules/cjs/loader.js:831:15) at Function.Module._load (internal/modules/cjs/loader.js:687:27) at Module.require (internal/modules/cjs/loader.js:903:19) at require (internal/modules/cjs/helpers.js:74:18) at Object.<anonymous> (/var/lib/jenkins/workspace/web-a-1/node_modules/html-webpack-plugin/lib/chunksorter.js:137:12) at Module._compile (internal/modules/cjs/loader.js:1015:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10) at Module.load (internal/modules/cjs/loader.js:879:32) at Function.Module._load (internal/modules/cjs/loader.js:724:14) at Module.require (internal/modules/cjs/loader.js:903:19)npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! vue-admin-template@4.4.0 build:prod: `vue-cli-service build "package.json"`npm ERR! Exit status 1npm ERR! npm ERR! Failed at the vue-admin-template@4.4.0 build:prod script.npm ERR! This is probably not a problem with npm. There is likely additional logging output above.npm ERR! A complete log of this run can be found in:npm ERR! /root/.npm/_logs/2021-06-22T10_58_44_251Z-debug.logBuild step 'Execute shell' marked build as failureFinished: FAILURE
- 原因:未知
- 解决方法
# 移除项目中的 node_modules,package-lock.json rm -rf node_modules/rm package-lock.json # 清楚缓存npm cache clean# 打包下载npm installnpm run build:prod# 一套之后,打包也行了,自动构建也行了# Finished: SUCCESS
四、Nginx 代理 Jenkins
1. 下载Nginx
# 创建存放Nginx的目录 并 进入mkdir /usr/nginxcd /usr/nginx# 检查下载Gccgcc -vyum -y install gcc# Nginx三个前置依赖yum install -y pcre pcre-develyum install -y zlib zlib-develyum install -y openssl openssl-devel# 下载Nginx的tar包wget http://nginx.org/download/nginx-1.16.0.tar.gz tar -zxvf nginx-1.16.0.tar.gz# 三行命令执行编译下载./configure make make install# 进入Nginx目录cd /usr/local/nginx/ # 启动运行Nginx./nginx # 启动Nginx./nginx -s reload # 重启Nginx
2. 修改Jenkins配置
vim /etc/sysconfig/jenkisn# 增加JENKINS_ARGS="--prefix=/jenkins"
3. 修改Nginx配置
vim /usr/local/nginx/conf/nginx.conf
server { listen 180; # 监听的端口 server_name localhost; # 服务地址 location /jenkins { proxy_pass http://localhost:8080/jenkins; # 代理Jenkins }}
4. 重启Nginx
[root@ly01 sbin]# pwd/usr/local/nginx/sbin[root@ly01 sbin]# lsnginx[root@ly01 sbin]# ./nginx -s reload
5. 测试访问
http://servername:{server_name}:servername:{listen}/jenkins
Jenkins使用笔记相关推荐
- jenkins学习笔记2-在centos中安装jenkins master测试环境
在centos中安装jenkins 1)安装目录 pwd (/home/AAA) 2)检查java是否安装 [AAA@Centos_AAA jenkins]$ java -version java v ...
- centos7.9使用jenkins部署springcloud微服务_配合SVN_脚本_实现自动部署后端以及前端程序_亲测成功---持续集成部署Jenkins工作笔记0023
以前有个jekins教程,还比较详细,但是,那个是基于git和svn,并且需要配置jekins支持git,svn的插件. 配置以后就可以实现只要提交代码,就会自动触发部署,但那个时候安装jenkins ...
- centos7.9使用rpm安装Jenkins_亲测成功---持续集成部署Jenkins工作笔记0022
以前我们是在linux上安装了一个tomcat,然后把Jenkins的war包放到 对应的web目录里,跑起来的,这样的方式去安装的Jenkins. 1.首先如果以前安装过jenkins的话,需要彻底 ...
- jenkins安装笔记(一)
转载地址:https://www.cnblogs.com/sylvia-liu/p/4485311.html 自动化架构搭建过程中为实现当开发源码更新时自动化脚本同步触发自动执行,使用到持续集成工具J ...
- 持续集成部署Jenkins工作笔记0021---21.关闭防止跨站点请求伪造
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 因为git的钩子上,并没有要求,说要带着jekins-crumb那个消息头,所以这里需要关闭这个 ...
- 持续集成部署Jenkins工作笔记0020---20.在GitHub上创建WebHook
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上面是这个过程 首先去登录这个github 然后选中一个项目
- 持续集成部署Jenkins工作笔记0019---19.在Jenkins中指定Git客户端位置
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 很简单 去全局工具配置中,找到这个git,名字自己填写一个 然后可执行程序的路径,是在 /usr/ ...
- 持续集成部署Jenkins工作笔记0018---18.Linux中安装Git客户端
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 去git官网下载这个git的源码包 上传到服务器 按照步骤去安装git
- 持续集成部署Jenkins工作笔记0017---17.整合GitHub的持续集成环境要点说明
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152
最新文章
- 网站排名好却没流量到底是什么环节出了问题?
- mysql错误代码 集合
- VMware 修改虚拟机网络_虚拟机问题解决
- php mysql 图像_php-向/从MySQL数据库插入/查看图像
- 8月8日发布!三星Galaxy Note 10+ 5G版FCC认证示意图泄露
- 【MySQL】MySQL 8 连接出现 2059 - Authentication plugin caching_sha2_password ca
- HTTP, WWW-Authenticate, Authorization 验证授权 | Apache验证 | Python处理
- iphone编程,使用代码结束程序
- 软件构架 课堂练习一
- C语言函数未声明错误,switch 调用函数 错误未定义???
- indesign缩放图片被切割_InDesign怎么改变图片的大小
- Spring常用注解
- 色彩转换系列之RGB格式与YUV格式互转原理及实现
- php短信验证码接口免费,[php短信验证码接口]PHP 短信验证码
- paper的经验和会议排名
- 三星S5P6818之UBOOT网络配置
- 如何给产品引流?一个产品如何做引流?
- 基于环信webim视频语音通话
- vivo计算机隐藏游戏,vivoX30功能使用教程 隐藏游戏图标不让孩子发现
- 【Python3爬虫】你会怎么评价复仇者联盟4?