当前位置:首页 > 话题广场 > 科技专区 > 互联网

如何更改网站目录权限、更改目录下所有文件权限

新技能GET!!

最近尝试着本地搭建maven私服用来做测试,然而本以为是很简单的过程,但实际上也是遇到了一些曲折吧。莫慌,不亏,没想到自己如今的心理素质已经如此强大,完全心如止水,【合盖-》出去溜达一圈--〉买个冰王圣代--》开盖--〉..--》果然还是没有解决】。

结果一番折腾,发现竟然是因为nginx代理问题,我nginx是在虚拟机的docker下安装的(强迫症的套娃式安装习惯),反向代理的转发地址是需要改到我的物理机的。唉,坑了自己一把!!!

其他的总体上还算顺利,个别地方可以对照官方说明还有其他大佬的一些教程,顺畅无比,哈哈!!实际上有些也是之前日常开发环境中就遇到过的问题。

额外写了个验证的项目demo,包括settings配置文件,已上传gitee,可切到【nexus-feature】分支查看。

一、nexus的安装和相关配置

1、安装

1.1 官网下载nexus

下载链接:

1.2 下载后解压到自定义目录

opt目录下新建nexus3,然后解压到此目录

sudo mkdir /opt/nexus3/ sudo tar zxvf nexu -C /opt/nexus3/

1.3 新建nexus用户并修改安装目录的权限

新建用户nexus,密码nexus

sudo adduser nexus // 设置密码,或手动命令设置密码 sudo passwd nexus

修改目录权限

sudo chown -R nexus:nexus /opt/nexus3 sudo chown -R nexus:nexus /opt/nexus3/sonatype-work/

2、修改配置

2.1 修改nexus.rc配置

修改启动用户: 切换为nexus用户su nexus,进入到目录/opt/nexus3bin,修改nexus.rc文件vim nexus.rc,添加指定用户后,保存退出即可

run_as_user="nexus"

运行相关的配置可以查看nexus.vmoptions文件

2.2 调大文件描述符打开数量

编辑文件/etc/security,增加配置nexus - nofile 65536

保存退出

2.3 创建服务脚本

官方手册:

启动nexus服务,可以直接到bin/目录下,执行./nexus start脚本即可。但是为了方便使用和管理,我们自行配置下,实现像其他服务一样,通过systemctl命令进行操作。

# 新建nexus.service文件,并添加相关内容 sudo vim /etc/systemd/system # 重新加载服务配置 sudo systemctl daemon-reload # 允许开机启动 sudo systemctl enable nexus.service # 使用systemctl启动nexus服务 sudo systemctl start nexus

nexus.service文件添加如下内容

[Unit] Description=nexus service After=ne [Service] Type=forking LimitNOFILE=65536 ExecStart=/opt/nexus3bin/nexus start ExecStop=/opt/nexus3bin/nexus stop User=nexus Restart=on-abort TimeoutSec=600 [Install] WantedBy=mul

启动报错:原因是虚拟机没有安装jdk,安装后重试即可。

2.4 运行时端口相关的配置

路径/opt/nexus3etc下的nexu文件,可看到暴露的端口为8081,并且绑定ip为0.0.0.0。

注意:可能需要配置防火墙,开放相关端口。如,

firewall-cmd --permanent --add-port=8081/tcp firewall-cmd --reload

重启nexus服务即可

## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc ## # Jetty section application-port=8081 application-host=0.0.0.0 nexus-args=${je},${je},${je} nexus-context-path=/ # Nexus section nexus-edition=nexus-pro-edition nexus-features=\ nexus-pro-feature nexus.

2.5 验证

启动完成,查看状态为【运行中】

查看日志/opt/nexus3/sonatype-work/nexus3/log下的nexus.log文件

可看到启动成功,端口为8081

浏览器访问 ip:8081,即可


3、nexus服务的配置

3.1 登录,并修改密码

根据页面提示,admin用户密码在/opt/nexus3/sonatype-work/nexus3文件中。

登录成功根据向导操作即可

允许匿名连接,目的是方便团队开发的场景下,其他人无需开通账号,即可对私库拥有必要的搜索、下载等操作权限。



3.2 配置nginx反向代理

根据需要配置反向代理,通过域名而不是ip访问私库。查看官方的相关介绍

链接:

官方介绍了多种代理的配置参数,我们选择nginx的。

首先进入到nginx的目录,我是通过docker安装,并且挂载数据卷

新建用于私库的nginx配置文件

到nginx到配置目录/home/mydata/nginx/con下,新建re,复制如下server部分的内容,并按需要修改其中到部分参数

server { listen *:80; server_name re; proxy_send_timeout 120; proxy_read_timeout 300; proxy_buffering off; proxy_request_buffering off; keepalive_timeout 5 5; tcp_nodelay on; # allow large uploads of files client_max_body_size 1G; # optimize downloading files larger than 1G #proxy_max_temp_file_size 2G; location / { # Use IPv4 upstream address instead of DNS name to avoid attempts by nginx to use IPv6 DNS lookup # proxy_pass ; # 注意:由于我是在虚拟机通过docker安装的nginx,这里的ip不能是127.0.0.1,而是安装安装docker的宿主机(即ubuntu虚拟机)的ip proxy_pass ; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }


验证,已经可以通过域名进行访问

一些问题

1、启动报错OLowDiskSpaceException

Caused by: com.orien: Error occurred while executing a write operation to database 'OSystem' due to limited free space on the disk (1424 MB). The database is now working in read-only mode. Please close the database (or stop OrientDB), make room on your hard drive and then reopen the database. The minimal required space is 4096 MB. Required space is now set to 4096MB (you can change it by setting parameter ) . DB name="OSystem" ……

根据提示,我们需要修改空闲磁盘空间限制的参数,/opt/nexus3bin目录下sudo vim nexus.vmoptions,添加如下一行。

-D=2048

2、配置nginx反向代理无法生效

原因1: nginx的配置错误

我是在虚拟机(ubuntu)通过docker安装的nginx,nexus私服是部署在虚拟机上。所以,对docker中的nginx来说,这里根据域名转发后的ip不能是127.0.0.1,而应该是能够访问到宿主机(虚拟机Ubuntu)的ip,此处即虚拟机的ip。


原因2: 物理机hosts未绑定

由于我们定义的域名并非是通过备案的,所以无法直接访问,而是需要在自己的物理机的hosts进行绑定才可以。

修改hosts文件,添加映射


二、配置仓库

1、仓库类型介绍

(1)默认仓库说明:

  • maven-central:maven 中央库,默认从 拉取 jar
  • maven-releases:私库发行版 jar,初次安装请将 Deployment policy 设置为 Allow redeploy
  • maven-SNAPSHOTs:私库快照(调试版本)jar
  • maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地 maven 基础配置 或项目 中使用

(2)仓库类型说明:

  • group:这是一个仓库聚合的概念,用户仓库地址选择 Group 的地址,即可访问 Group 中配置的,用于方便开发人员自己设定的仓库。maven-public 就是一个 Group 类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x 默认为 Releases、Snapshots、Central,当然你也可以自己设置。
  • hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的 jar 文件
  • snapshots:本地项目的快照仓库
  • releases: 本地项目发布的正式版本
  • proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的 Configuration 页签下 Remote Storage 属性的值即被代理的远程仓库的路径),如可配置阿里云 maven 仓库
  • central:中央仓库

  • proxy 代理仓库
  • hosted 托管仓库(私有仓库)
  • group 仓库组(包含多个仓库)

2、创建代理仓库

选择maven2 proxy

填入相关信息(使用aliyun提供的maven仓库,提高速度)

Nexus默认远程仓库为

maven默认远程仓库为

aliyun 默认远程仓库为

搭建Nexus默认central仓库为maven的,maven是外国网站,访问慢,这里配置为阿里云的maven

阿里仓库配置:

仓库名称

阿里云仓库地址

阿里云仓库地址(老版)

源地址

central

jcenter

public

central仓和jcenter仓的聚合仓

google

gradle-plugin

spring

spring-plugin

-plugin

-plugin

grails-core

apache snapshots

安装证书

将maven-aliyun添加到maven-public

调整顺序,当从自己托管的仓库中没有时,优先到aliyun-maven下载,仍然没有,再到默认的maven-central中下载。

三、项目验证

learnMaven项目,新建分支,nexus-feature,并新建nexus-test的模块。

1、修改maven配置

有两种方式可以配置maven下载依赖的镜像源

1.1 方式一:文件中指定(针对项目)

<repositories> <repository> <id>maven-nexus</id> <!--镜像名称 --> <name>maven-nexus</name> <!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。 --> <url>http://re/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>

1.2 方式二:中指定(全局)

maven的conf目录下,新建一个文件,并将项目的maven配置指向该文件。

可以直接将原有maven conf目录下的文件的内容复制到该项目下新建的文件。注意修改<mirror>标签的内容如下。

<mirror> <!--该镜像的唯一标识符。id用来区分不同的mirror元素。 --> <id>maven-nexus</id> <!--镜像名称 --> <name>maven-nexus</name> <!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。 --> <url>http://re/repository/maven-public/</url> <!--*指的是访问任何仓库都使用我们的私服--> <mirrorOf>*</mirrorOf> </mirror>

2、测试

2.1 下载公共依赖

如,添加fastjson,使用maven进行reimport,能够成功


2.2 向私库上传自己的包

方式一:通过页面手动上传

方式二:通过maven命令上传

首先配置账号信息,新建专门部署的账号deployer 密码deployer

1)创建角色

2)创建用户并关联角色

3)文件中配置server的用户信息

id与nexus仓库中的名称保持一致,分别代表自行上传的发行版和快照。

<server> <id>maven-releases</id> <username>deployer</username> <password>deployer</password> </server> <server> <id>maven-snapshots</id> <username>deployer</username> <password>deployer</password> </server>

4)项目的中配置distributionManagement节点

id与nexus仓库中的名称保持一致,分别代表自行上传的发行版和快照。

注意:

  • 我们看到其中配置了一个 repository ,另外还有一个 snapshotRepository,上面表示的是 releases 版。
  • 注意 id 要和 里 server 下的 id 一致,不然会出现权限问题。
  • url 分别指定 maven-releases 和 maven-snapshots 的地址。
  • 只要在项目中配置 1.0-SNAPSHOT 这样,带有 SNAPSHOT 的就会到 snapshots 仓库,如果不加 SNAPSHOT 就会到 releases 仓库。

还有要注意的是,要发布的包不应该是上级,也就是不能有 parent 依赖。否则在获取依赖的时候会有问题。

<distributionManagement> <!--id与nexus以及中的一致--> <!--url可以查看nexus--> <repository> <id>maven-releases</id> <url>http://re/repository/maven-releases/</url> </repository> <snapshotRepository> <id>maven-snapshots</id> <url>http://re/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>

5)运行maven的deploy命令

运行完成,查看nexus远程仓库,已有自行上传的包

版本号若无snapshot后缀,则会上传到releases库,如

团队其他人可通过远程仓库中对应到依赖,像引入其他包一样,引入你上传到依赖包了。依赖信息如下

一些问题

1、打包报错,提示引用的私服的包无法下载,以及maven的配置报错

原因:这个问题一般是因为我们没使用中央仓库而使用镜像仓库如ali镜像,而ali镜像并不支持索引。

而所有自定义都是继承自super pom:也就是会默认请求中央仓库去获取索引、metadata等信息

<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>;/url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <name>Central Repository</name> <url>;/url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> </pluginRepositories>


关于ali maven的问题解答:原文

我们对maven.aliyun.com进行了代码和架构上的全新改造。新的maven.aliyun.com采用阿里云的OSS作为后端存储,下载速度快,支持高并发,而且全站进行了HTTPS加密,更安全。

以下列出了使用上遇到的一些常见问题。用户如有其它问题也可以留言。

Q: 为什么访问maven.aliyun.com/nexus/content/groups/public会返回404错误页面?
A:新版maven.aliyun.com还不支持通过这种方式浏览仓库,但是并不影响正常的构建下载。如果想浏览仓库内容请访问maven.aliyun.com/mvn/view页面,点击对应的仓库进行树状结构浏览。

Q:为什么首页显示的仓库地址变了,比如public仓的地址为?
A:首页上显示的仓库地址为推荐使用的仓库地址。为了保证兼容性也支持以前的仓库地址,用户仍然可以通过来使用服务。

Q:首页无法浏览public库的内容?
A:public库是group库,其实代理了maven central和jcenter仓库。你可以浏览proxy库central或jcenter的内容,凡是里面有的包都可以通过public库下载。

Q:maven central中有的包在maven.aliyun.com中搜索不到?
A:目前只有缓存过的包才能在搜索界面搜索到。这个并不影响正常的构建使用。

Q:无法获取仓库的maven indexer文件?
A:目前还未支持生成和下载maven indexer文件。

Q:以前将maven.aliyun.com作为代理,代理到了自己的私服。现在貌似不工作了?
A:请使用Nexus3及以上版本才可以代理新版maven.aliyun.com。老的maven.aliyun.com(IP为59.110.144.164)已经于2019年9月29日正式下线,请不要再使用该站点。


所以解决办法关键是修改仓库和插件仓库的配置

仓库:项目本身的依赖;插件仓库:maven打包、安装等命令时用到的插件。两者都要配置

方法一:修改pom文件

模拟super pom中的方式,在当前项目模块或父模块等pom中定义类似的内容,达到覆盖super pom的方式,实际请求的是自己定义的私服地址

补充说明:这里需要解释的是仓库及插件仓库配置,他们的id都为central,也就是说,覆盖了超级POM中央仓库的配置,他们的url已无关紧要,因为所有请求都会通过镜像访问私服地址。配置仓库及插件仓库的主要目的是开启对快照版本下载的支持,当Maven需要下载发布版或快照版构件的时候,他首先检查central,看该类型的构件是否支持,得到正面回答之后,再根据镜像匹配规则转而访问私服仓库地址。

如,注意id要与私库中的库名一致

<!--配置repositories和pluginRepositories,覆盖super pom中的配置,解决无法从私服下载的问题--> <repositories> <repository> <id>maven-public</id> <!--name标签可省略--> <name>Central Repository from Nexus</name> <url>http://re/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>maven-public</id> <!--name标签可省略--> <name>Central Repository from Nexus</name> <url>http://re/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories>

方法二:修改文件,全局配置


<!--配置repositories和pluginRepositories,覆盖super pom中的配置,解决无法从私服下载的问题--> <repositories> <repository> <id>maven-public</id> <!--name标签可省略--> <name>Central Repository from Nexus</name> <url>http://re/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>maven-public</id> <!--name标签可省略--> <name>Central Repository from Nexus</name> <url>http://re/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories>

激活

<activeProfiles> <activeProfile>dev</activeProfile> </activeProfiles>

1.《如何更改网站目录权限、更改目录下所有文件权限》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《如何更改网站目录权限、更改目录下所有文件权限》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3295005.html

上一篇

(电视盒子如何连黑裙)黑苹果电视盒子!

(如何更改网站目录权限)chmod更改子目录权限!

如何更改网站目录权限,chmod更改子目录权限,如何更改备份目录权限相关介绍,注:这篇文章是十多年前,过去两年在网上搜索电影时,发现了别人在百度文库上流传的这篇文章,并将其标为原创。百度呼吁的时候,原来的域名icezero.com已经不用了,所以没有通过。之后修改了部分内容,保...