准备
- 服务器安装包 helix-core-server.tgz 下载地址:linux系统 / Windows(x64)
- 系统环境:CentOS Linux release 8.2.2004 (Core)
- perforce版本:r20.1
- helix-core-server.tgz 包内文件:
- Versions.txt
- i18nnotes.txt
- p4
- p4broker
- p4d
- p4p
- relnotes.txt
安装步骤
- 创建临时存放的文件夹:Perforce
mkdir Perforce
- 解压下载好的安装包helix-core-server.tgz到指定文件夹(需提前创建):
tar -xzvf helix-core-server.tgz -C ./Perforce
- 进入新创建的文件夹:
cd Perforce/
- 更改两个文件的可执行权限:
chmod 755 p4 p4d
- 设定服务器端口号、可用用户
export P4PORT=1666
export P4USER=Perforce
- 启动主服务器
./p4d -r `pwd` -p 1666 -J journal -L log -d
-
-p
后接端口号,覆盖变量P4PORT的值,不设置则默认使用P4PORT -
-r
后接路径,覆盖变量P4ROOT的值 -
-J
指定journal日志文件路径 -
-L
指定错误log日志文件路径 -
-d
作为守护进程(daemon)运行(首先fork,然后运行)
- 确认服务器启动
./p4 info
- 确认1666端口是否开启,没有则开启它(在局域网中使用)
firewall-cmd --query-port=1666/tcp
no
firewall-cmd --zone=public --add-port=1666/tcp --permanent # 开启1666端口
systemctl status firewalld # 查看防火墙状态
systemctl stop firewalld # 关闭防火墙
systemctl start firewalld # 打开防火墙
firewall-cmd --query-port=1666/tcp # 确认端口是否开启
yes
- 下载P4V客户端,通过
host
:port
连接,具体步骤在后续P4V入门教程中会介绍。
官方参考文档(节选)
Linux非包安装
快速示例:
- 为您的安装创建一个目录:
mkdir newinstall
- 导航到新创建的目录:
cd newinstall
- 点击 https://www.perforce.com/downloads/helix-core-p4d 下载
p4d
文件
也可以使用准备章节的链接下载该文件
- 将p4d文件复制到新创建的目录
newinstall
中。 - 为p4d文件赋予执行权限:
chmod 755 p4d
- 配置操作系统环境得到一个Perforce用户:
export P4USER=perforce
- 配置操作系统环境得到一个Helix服务器端口:
export P4PORT=localhost:1666
- 调用服务器可执行文件:p4d,同时指定当前目录的
pwd
,端口为-p 1666
:
./p4d -r `pwd` -p 1666 -J journal -L log -d
输出为:
Perforce db files in '/home/bruno/newinstall' will be created
if missing...
Perforce Server starting...
也可以使用准备章节的链接下载该文件
- 将p4文件复制到复制p4d文件的相同目录。
- 给操作系统用户p4文件的执行权限:
chmod 755 p4
- 按如下方式发出
p4 info
指令, 将./
放在p4 info
之前:./p4 info
- 从输出中打印出未来会使用到的服务器地址的值:
User name: perforce
Client name: linux-bruno
Client host: linux-bruno
Client unknown.
Current directory:
Peer address: 127.0.0.1:12345
Client address: 127.0.0.1
Server address: localhost:1666
Server root: /home/bruno/newinstall
Server date: 2020/10/21 16:41:27 -0800 PST
Server uptime: 00:00:37
Server version: P4D/LINUX26X86_64/2020.1/2007551 (2020/09/08)
Server license: none
Case Handling: sensitive
- *下载具有图形用户界面的Helix可视化客户端应用程序P4V,连接到服务器、设置工作区和了解一些基本操作。
常规的考虑
Note
Helix 服务器需要两个可执行文件:
- Helix 核心服务器,也称为Perforce服务(p4d)
- 至少有一个 Helix 核心客户机应用程序,比如命令行客户机(p4)
Helix 服务器和应用程序可在Perforce网页上下载。
尽管你可以将 p4 和 p4d 安装在任何目录,但在Linux上,Helix 服务器应用程序通常驻留在/usr/local/bin
, 而Perforce服务通常位于/usr/local/bin
或在它自己的服务器根目录。
您可以安装Helix 服务器应用程序在任何机器上,通过TCP/IP访问p4d主机。
为了限制对Perforce服务文件的访问,请确保为运行Perforce服务而创建的一个Helix服务器用户帐户拥有并运行该p4d可执行文件。
Note
为了最大化性能,将服务器根目录(
P4ROOT
)配置为驻留在本地磁盘上,而不是nfs挂载的卷上。最好将元数据和日志数据放在单独的驱动器上。Helix服务器应用程序(例如p4, Helix server命令行客户机)使用nfs安装的驱动器上的客户机工作空间,例如位于用户主目录中的客户机工作空间。
创建一个Helix服务器根目录
本主题假设您已经下载了p4和p4d二进制文件,并且使p4和p4d可执行。
Perforce服务将所有用户提交的文件和系统生成的元数据存储在它自己根目录下的文件和子目录中。这个目录称为服务器根目录。
Note
p4d是唯一使用P4ROOT变量的进程。Helix 核心客户机应用程序从不使用P4ROOT目录或环境变量。
因为所有Helix服务器文件默认都存储在服务器根目录下,服务器根目录的内容可能会随着时间增长。
有关磁盘空间需求的信息,请参阅第28页的“Disk space allocation”。
Perforce服务不需要特权访问,不需要以“根用户”或任何其他特权用户的身份运行p4d。
有关更多信息,请参见第45页中的“Running the Helix server (p4d) as an unprivileged user”。
服务器根目录可以位于任何位置,但是运行p4d的帐户必须在服务器根目录和它下面的所有目录上具有“读”、“写”和“执行”权限。
出于安全考虑,将运行p4d的帐户的“umask(1)”文件创建模式掩码设置为拒绝其他用户访问服务器根目录的值。
告诉Helix服务器应用程序连接到哪个端口
p4d服务和螺旋服务器应用程序相互通信使用TCP/IP。当p4d启动时,它(默认情况下)监听端口1666上的明文连接。像p4这样的Helix服务器应用程序假定(也是默认情况下)相应的p4d位于名为perforce的主机上,监听端口1666,并且通信以明文执行。
如果p4d在不同的主机或端口上监听和/或使用不同的协议,那么在启动p4d时使用-p protocol
:host
:port
标志指定配置(如,p4d -p ssl:perforce:1818),或者通过’ P4PORT '环境变量的内容指定配置。
明文通信是用 tcp
:host:port
来指定的,SSL加密是用 ssl
:port 来指定的。
要使用SSL,还必须提供或生成x509证书和私钥,并将它们存储在服务器上的安全位置。
请参阅第118页的"Using SSL to encrypt connections to a Helix server" 以获得详细信息。
指定端口的首选语法如下:protocol:host:port
有些情况下,例如,如果您使用多个网卡,您可能需要指定要侦听的端口,使用如下语法:P4PORT=ssl::1666
使用双冒号将引导服务器绑定到所有可用的网络地址,并监听端口1666。如果主机有多个网络地址,这将非常有用。
Note
要启用IPv6支持,在启动p4d时指定带有两个冒号的通配符地址。例如:
$ p4d -p tcp64:[::]:1818
启动一个Perforce服务,该服务侦听端口1818上IPv6和IPv4传输上的明文连接。同样的,
$ p4d -p ssl64:[::]:1818
启动需要SSL的Perforce服务,并监听IPv6和IPv4,以及
$ p4d -p ssl6:[::]:1818
启动需要SSL连接的Perforce服务,并专门侦听IPv6连接。
有关IPv6和IPv4传输的更多信息,请参阅对应页面上的“IPv6 support and mixed networks”
与P4ROOT不同,环境变量P4PORT由Perforce服务和Helix服务器应用程序使用,因此它必须在托管Perforce服务的机器上和各个用户工作站上设置。
通信端口信息
Helix服务器应用程序需要知道p4d服务在哪个机器上监听,p4d在哪个TCP/IP端口上监听,以及是使用明文还是通过SSL通信。
每个Helix服务器用户的P4PORT环境变量设置为 protocol
:host
:port
:
- protocol是通信协议(开始于用于SSL的 ssl,或是用于明文的 tcp)
- host是运行p4d的机器的名称
- port是p4d侦听的端口的数字。
例如:
P4PORT | Behavior |
tcp:server1:3435 | Helix服务器应用程序以明文连接到在主机server1上监听端口3435的Helix服务器。 |
tcp64:server1:3435 | Helix 服务器应用程序以明文连接到在主机server1上监听端口3435的Helix服务器。应用程序首先尝试连接IPv6连接;如果失败,应用程序将尝试通过IPv4进行连接。 |
ssl:example.org:1818 | Helix服务器应用程序通过SSL连接到侦听1818端口的host example.org上的Helix服务器。 |
Helix 服务器应用程序连接到在1666端口监听的主机上的 Helix 服务器。假定采用明文通信。 |
如果启用了SSL,用户第一次尝试连接到服务时就会看到服务器的指纹(fingerprint)。
如果指纹是准确的,用户可以使用p4 trust
命令(p4 trust - y
,或 p4 - p ssl:host:port trust -i fingerprint
)安装指纹到一个文件中(由P4TRUST环境变量指向的),它持有一个已知和可信的螺旋服务器的列表和它们各自的指纹。
如果未设置P4TRUST,则该文件为用户主目录中的 .p4trust
。
IPv6支持和混合网络
Helix服务器支持连接IPv6网络以及IPv4网络。
有关详细信息,请参见Helix Core Server Administrator Guide中的P4PORT。
Note
在多服务器环境中,net.rfc3484 是可配置的,当设置为服务器端时,还控制主机在启动服务器到服务器、代理或代理的通信时解析的行为。
以非特权用户身份运行Helix服务器(p4d)
螺旋服务器不需要特权访问。出于安全原因,不要以根用户身份运行p4d,也不要向p4d进程的所有者授予根级别特权。
创建一个非特权UNIX用户(例如,perforce)来管理p4d,并为其创建一个UNIX组(可选)(例如,p4admin)。
使用umask(1)命令来确保服务器根目录(P4ROOT)和在它下面创建的所有文件和目录只能由UNIX用户写入,并且UNIX组p4admin的成员可读(可选)。
在这种配置下,作为UNIX用户Perforce运行的Perforce服务(p4d)可以写入服务器根目录中的文件,但是没有用户能够读取或覆盖它的文件。
要将对由p4d创建的文件(即仓库文件、检查点、期刊等)的访问权限授予可信用户,可以将可信用户添加到UNIX组p4admin中。
从linux超级服务器inetd运行(加入自启的服务程序)
在正常安装下,Perforce服务在Linux上作为后台进程运行,等待用户的连接。为了能在开机时便连接到p4d,需要使用inetd
和p4d -i
。添加以下行到 /etc/inetd.conf
:
p4dservice stream tcp nowait username /usr/local/bin/p4d p4d -i -r
p4droot
然后将下面一行添加到 /etc/services
中:
p4dservice nnnn /tcp
解释:
-
p4dservice
是为这个Helix服务器选择的服务名称 -
/usr/local/bin
是保存p4d二进制文件的目录 -
p4droot
是这个Helix服务器使用的根目录(例如,/usr/local/p4d)。 -
username
是运行这个Helix服务器要使用的UNIX用户名,nnnn
是这个Helix服务器要使用的端口号
必须提供/etc/inetd.conf
行上的“额外的” p4d
,inetd将其作为argv[0]传递给OS。第一个参数是-i
标志,这使得p4d不能作为后台进程运行,而是为在stdin/stdout上连接到它的单个客户端提供服务。(这是用于inetd启动的服务的约定)
此方法是从启动脚本运行p4d的另一种方法。它还可以用于提供特殊服务。例如,一个组织可能有几个在UNIX上运行的测试服务器,每个服务器都定义为具有自己端口号的inetd服务。
这种方法需要注意的是:
- inetd可以禁止过度连接,因此调用数千个p4命令(每个命令通过inetd生成一个p4d服务器)的脚本可能会导致inetd临时禁用该服务。根据您的系统,您可能需要配置inetd来忽略或提高这个限制。
- 没有简单的方法禁用服务器,因为每次都运行p4d可执行文件。禁用服务器需要修改/etc/inet .conf并重新启动inetd。
- 要使用此许可证的Helix server,您需要请求一个没有指定端口的服务器许可证。请联系 https://www.perforce.com/support/request-support.
Note
有关在引导时使用systemd启动服务和守护进程的信息,请参阅支持知识库文章示例systemd Perforce服务文件。
启动Helix服务器
设置p4d的P4PORT和P4ROOT环境变量后,在后台运行p4d,使用命令启动服务器:
$ p4d &
尽管所展示的示例足以运行p4d,但您可以指定其他标志来控制错误日志记录、检查点和日志记录等内容。
您可以通过使用-p
标志启动p4d(在本例中,监听IPv6和IPv4传输上的端口1818)来覆盖P4PORT,通过使用-r
标志启动p4d来覆盖P4ROOT。
类似地,您可以用-J
标志指定journal日志文件,用-L
标志指定错误log日志文件。覆盖环境变量的启动命令可能像这样:
$ p4d -r /usr/local/p4root -J /var/log/journal -L /var/log/p4err -p tcp64:[::]:1818 &
-r
、-J
和-L
标志(和其他标志)在第168页的“Backup and recovery”中讨论。要启用SSL支持,请参阅第118页的“Using SSL to encrypt connections to a Helix server”。
在第459页的“Helix Core server (p4d) Reference”中提供了一个完整的标志列表。
有关已安装文件的信息,请参阅第53页的“Installed files”。
停止Helix服务器
要关闭螺旋服务器,请使用命令:
$ p4 admin stop
只有一个Helix服务器超级用户可以使用p4管理停止。
重新启动正在运行的Helix服务器
要重启正在运行的Helix服务器(例如,读取新的许可文件),请使用以下命令:
$ p4 admin restart
只有一个Helix服务器超级用户可以使用p4管理重启。在UNIX平台上,还可以使用kill -HUP重新启动服务。