如何在CentOS 7上安装和配置Buildbot

Buildbot是一个基于Python的开源持续集成工具,可自动进行软件构建,测试和部署。Buildbot由一个或多个Buildbot母版以及许多工人组成。Buildbot master或Buildmaster具有系统的中央命令。它负责管理构建环境,工作人员,并做出有关向工作人员发送工作的所有决策。Buildmaster检测代码存储库中的更改,并将命令或作业发送给工作人员以执行。工人执行作业并将结果返回给Buildmaster。然后,Buildmaster通过多个受支持的渠道通知开发人员。在本教程中,我们将在CentOS 7上安装Buildbot master和worker。我们还将身份验证和Nginx配置为安全的反向代理。

先决条件

  • 具有至少1GB RAM的Vultr CentOS 7服务器实例。
  • 一个sudo的用户
  • 一个指向服务器的注册域名。

在本教程中,我们将使用192.168.1.1公共IP地址和ci.example.com指向Vultr实例的域名。请确保将所有示例域名和IP地址替换为实际的域名和IP地址。

使用指南如何更新CentOS 7更新基本系统。系统更新后,继续安装PostgreSQL。

安装Python依赖项

安装Pip,它是Python的软件包管理器。

sudo yum -y install epel-release
sudo yum -y install python-pip gcc python-devel git
sudo pip install --upgrade pip

安装PostgreSQL

Buildbot支持多种类型的数据库服务器,例如MySQL,PostgreSQL和SQLite。在本教程中,我们将使用PostgreSQL托管Buildbot数据库服务器。

PostgreSQL是一个对象关系数据库系统,以其稳定性和速度而闻名。默认yum存储库包含旧版本的PostgreSQL,因此请添加PostgreSQL存储库。

sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm

安装PostgreSQL数据库服务器。

sudo yum -y install postgresql10-server postgresql10-contrib postgresql10 

初始化数据库。

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb

启动PostgreSQL服务器,并使其在��动时自动启动。

sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10

更改默认PostgreSQL用户的密码。

sudo passwd postgres

以PostgreSQL用户身份登录。

sudo su - postgres

为Buildbot创建一个新的PostgreSQL用户。

createuser bb_user

bb_user如果愿意,可以使用任何用户名代替。PostgreSQL提供了psql在数据库上运行查询的外壳。切换到PostgreSQL shell。

psql

为新创建的用户设置密码。

ALTER USER bb_user WITH ENCRYPTED password 'DBPassword';

替换DBPassword为安全密码。

为Buildbot安装创建一个新数据库。

CREATE DATABASE buildbot OWNER bb_user;

psql外壳退出。

\q

切换到sudo用户。

exit

编辑pg_hba.conf文件以启用基于MD5的身份验证。

sudo nano /var/lib/pgsql/10/data/pg_hba.conf

找到以下行并改变值peerident,在METHOD列中,向trustmd5分别。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

更新后,配置将类似于以下文本。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

保存文件并退出编辑器。为Python安装PostgreSQL数据库适配器。

sudo pip install psycopg2

重新启动PostgreSQL,以使更改生效。

sudo systemctl restart postgresql-10

安装Buildbot

使用Pip安装Buildbot。

sudo pip install 'buildbot[bundle]' pyopenssl service_identity

上面的命令将安装Buildbot沿buildbot-wwwbuildbot-worker和几个网络作为这样的插件buildbot-waterfall-view

要确保已成功安装Buildbot,可以通过检查Buildbot的版本进行验证。

buildbot --version

输出应类似于以下文本。

[user@vultr ~]$ buildbot --version
Buildbot version: 0.9.15.post1
Twisted version: 17.9.0

修改防火墙规则以允许端口8010。Buildbot使用此端口侦听Web请求。

sudo firewall-cmd --zone=public --add-port=8010/tcp --permanent
sudo firewall-cmd --reload

配置Buildbot主

创建一个新的非特权用户以运行Buildbot主进程和工作进程。不建议以root用户身份运行Buildbot主服务。

sudo adduser buildbot
sudo passwd buildbot

以新创建的buildbot用户身份登录。

sudo su - buildbot

/home/buildbot/master目录中设置Buildbot主目录。该目录将包含每个构建的配置,状态和日志文件。

buildbot create-master --db 'postgresql://bb_user:DBPassword@localhost/buildbot' ~/master

确保在上述命令中替换数据库用户的凭据。

注意: 如果您希望使用SQLite数据库而不是PostgreSQL,只需忽略该--db 'postgresql://bb_user:DBpassword@localhost/buildbot'选项。SQLite数据库将在同一目录中创建。

上面的命令将创建~/master用于存储Buildmaster文件的目录。它还会将数据写入PostgreSQL数据库。您将获得以下输出。

[buildbot@vultr ~]$ buildbot create-master --db 'postgresql://bb_user:DBPassword@localhost/buildbot' ~/master
mkdir /home/buildbot/master
creating /home/buildbot/master/master.cfg.sample
creating database (postgresql://bb_user:DBPassword@localhost/buildbot)
buildmaster configured in /home/buildbot/master

将样本配置文件复制到实时配置文件。

cp ~/master/master.cfg.sample ~/master/master.cfg

编辑配置文件。

nano ~/master/master.cfg

找到以下几行。

c['workers'] = [worker.Worker("example-worker", "pass")]
...

c['builders'].append(
    util.BuilderConfig(name="runtests",
      workernames=["example-worker"],
      factory=factory))
...

c['title'] = "Hello World CI"
c['titleURL'] = "https://buildbot.github.io/hello-world/"
...

c['buildbotURL'] = "http://localhost:8010/"
...

c['db'] = {
    'db_url' : "postgresql://bb_user:DBpassword@localhost/buildbot",
}

上面的配置中有一个样本工作者条目。我们将为将要运行的工作程序修改示例条目localhost。将其更改example-worker为适合该localhost工作人员的名称,然后将其更改pass为其他密码。记下工作人员的名称和密码,因为在本教程的后面部分将需要使用该名称和密码。在构建器列表中更改工作人员的名称。根据需要更改应用程序名称和项目URL。

将Buildbot URL从更改localhost为您的实际域名或公共IP地址。另外,请验证配置文件中的数据库信息是否与您的实际数据库凭据匹配。

在文件末尾,添加c['buildbotNetUsageData'] = None。此参数将禁用将软件版本信息和插件使用详细信息发送给开发人员。但是,要启用发送使用信息的功能,请将选项更改为Full

该配置应类似于以下文本。

c['workers'] = [worker.Worker("localhost-worker", "Password123")]
...    

c['builders'].append(
    util.BuilderConfig(name="runtests",
      workernames=["localhost-worker"],
      factory=factory))
...

c['title'] = "My Application CI"
c['titleURL'] = "https://example.com/my-app"
...

c['buildbotURL'] = "http://192.168.1.1:8010/"
...

c['db'] = {
    'db_url' : "postgresql://bb_user:DBpassword@localhost/buildbot",
}
...

c['buildbotNetUsageData'] = None

保存文件并退出编辑器。检查配置文件中是否有错误。

buildbot checkconfig ~/master

如果配置文件没有错误,您将看到以下输出。

[buildbot@vultr ~]$ buildbot checkconfig ~/master
Config file is good!

现在,一切都已正确配置,您可以启动Buildbot主站了。

buildbot start ~/master

您将看到以下输出。

[buildbot@vultr ~]$ buildbot start ~/master
Following twistd.log until startup finished..
The buildmaster appears to have (re)started correctly.

既然Buildbot主服务器已正确启动,则可以通过访问Web用户界面http://192.168.1.1:8010。您应该看到以下Buildbot界面。

如何在CentOS 7上安装和配置Buildbot

配置Buildbot Worker

由于我们已经在中修改了工作程序配置~/master/master.cfg,因此我们可以继续创建新的工作程序。

buildbot-worker create-worker ~/worker localhost localhost-worker Password123

确保使用与~/master/master.cfg文件中提到的完全相同的工作人员名称和密码。如果工作人员名称或密码不匹配,则工作人员将无法连接到Buildbot主计算机。成功执行后,您将看到以下输出。

[buildbot@vultr ~]$ buildbot-worker create-worker ~/worker localhost example-worker pass
mkdir /home/buildbot/worker
mkdir /home/buildbot/worker/info
Creating info/admin, you need to edit it appropriately.
Creating info/host, you need to edit it appropriately.
Not creating info/access_uri - add it if you wish
Please edit the files in /home/buildbot/worker/info appropriately.
worker configured in /home/buildbot/worker

有关工作程序的信息存储在/info目录中。编辑有关开发人员的管理信息。

nano ~/worker/info/admin

将示例名称替换为您的真实姓名和电子邮件。

Your Name <[email protected]>

现在,打开包含有关主机信息的文件。

nano ~/worker/info/host

将示例指令替换为有关主机系统的实际信息。

Localhost, CentOS 7

worker admin和host信息仅用于告知用户有关系统的信息。您还可以添加有关系统的其他信息,例如Buildbot版本和Twisted版本。

启动工人。

buildbot-worker start ~/worker

输出将类似于以下文本。

[buildbot@vultr ~]$ buildbot-worker start ~/worker
Following twistd.log until startup finished..
The buildbot-worker appears to have (re)started correctly.

要检查工作人员是否已注册,请转到Buildbot的Web界面,然后Builds >> Workers从左侧导航至。您应该看到该工作人员已经准备就绪,可以开始工作了。

如何在CentOS 7上安装和配置Buildbot

要运行示例构建,要检查Buildbot worker是否成功运行,请导航至Builds >> Builders。单击runtests构建器名称以打开构建器界面,然后单击Force按钮以强制构建。提供您的姓名,然后单击Start Build按钮以开始构建。由于这是检查Buildbot环境的示例构建测试,因此将在几秒钟内完成。您将获得成功消息和构建结果。

如何在CentOS 7上安装和配置Buildbot

设置系统服务

尽管可以使用上面的命令轻松启动Buildbot主和工作程序,但建议使用Systemd单元来运行和管理Buildbot服务。这将确保它们在系统重新启动和出现故障时自动启动。

注意: 通过运行再次切换到sudo用户。从现在开始,所有命令都需要由用户执行。exitsu <username>sudo

停止正在运行的Buildbot工作程序和主服务。

sudo su buildbot -c "buildbot stop /home/buildbot/master" 
sudo su buildbot -c "buildbot-worker stop ~/worker"

为Buildbot主文件创建一个新的Systemd单元文件。

sudo nano /etc/systemd/system/buildbot.service

填充文件。

[Unit]
Description=BuildBot master service 
After=network.target

[Service]
Type=forking
User=buildbot 
Group=buildbot 
WorkingDirectory=/home/buildbot/master 
ExecStart=/usr/bin/buildbot start
ExecStop=/usr/bin/buildbot stop
ExecReload=/usr/bin/buildbot restart

[Install]
WantedBy=multi-user.target

启动Buildbot主站,并使其在启动时自动启动。

sudo systemctl start buildbot
sudo systemctl enable buildbot

为Buildbot工作程序创建一个新的Systemd单元文件。

sudo nano /etc/systemd/system/buildbot-worker.service

填充文件。

[Unit]
Description=BuildBot worker service
After=network.target

[Service]
Type=forking
User=buildbot
Group=buildbot
WorkingDirectory=/home/buildbot/worker
ExecStart=/usr/bin/buildbot-worker start
ExecStop=/usr/bin/buildbot-worker stop
ExecReload=/usr/bin/buildbot-worker restart

[Install]
WantedBy=multi-user.target

启动Buildbot worker,并使它能够在启动时自动启动。

sudo systemctl start buildbot-worker
sudo systemctl enable buildbot-worker

您可以检查服务的状态。

sudo systemctl status buildbot buildbot-worker

如果服务运行顺利,您将在输出中看到。

[user@vultr ~]$ sudo systemctl status buildbot buildbot-worker
● buildbot.service - BuildBot master service
...
Active: active (running) since Fri 2018-01-12 16:00:59 UTC; 1min 25s ago
...
Jan 12 16:00:59 vultr.guest systemd[1]: Started BuildBot master service.

● buildbot-worker.service - BuildBot worker service
...
Active: active (running) since Fri 2018-01-12 16:02:00 UTC; 24s ago
...
Jan 12 16:02:00 vultr.guest systemd[1]: Started BuildBot worker service.

启用身份验证

默认情况下,Buildbot Web界面中未启用身份验证。对于面向Internet的站点,强烈建议设置身份验证,以便只有授权用户才能执行管理任务。要设置身份验证,请重新打开Buildbot主配置文件。

sudo su buildbot -c "nano /home/buildbot/master/master.cfg"

将以下行添加到文件末尾。

c['www']['authz'] = util.Authz(
       allowRules = [
           util.AnyEndpointMatcher(role="admins")
       ],
       roleMatchers = [
           util.RolesFromUsername(roles=['admins'], usernames=['admin_user'])
       ]
)
c['www']['auth'] = util.UserPasswordAuth({'admin_user': 'AdminPassword'})

admin_user您要使用的实际用户名和AdminPassword一个强密码替换两次出现的。

检查配置文件中的错误。

sudo su buildbot -c "buildbot checkconfig /home/buildbot/master"

重新启动Buildbot主服务,以使更改生效。

sudo systemctl restart buildbot

再次浏览Web界面以查看匿名用户只能查看有关构建服务器的基本详细信息。现在,使用master.cfg文件中设置的凭据登录,您将看到所有其他管理功能仅对登录的admin用户可用。

让我们加密SSL保护Buildbot

默认情况下,Buildbot侦听8010不安全连接上的端口。HTTPS建议使用来保护Web界面的安全,以确保在从浏览器到服务器的传输过程中数据是安全的。在本教程的这一部分中,我们将使用“让我们加密免费的SSL证书”来安装和保护Nginx。Nginx Web服务器将充当反向代理,以将传入的请求转发到Buildbot的HTTP端点。

安装Nginx。

sudo yum -y install nginx

启动Nginx并使它能够在启动时自动启动。

sudo systemctl start nginx
sudo systemctl enable nginx

安装Certbot,这是Let's Encrypt CA的客户端应用程序。

sudo yum -y install certbot

在可以请求证书之前,您将需要允许端口80和/ 443或标准HTTPHTTPS服务通过防火墙。另外,删除port 8010,侦听不安全的连接。

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --remove-port=8010/tcp --permanent
sudo firewall-cmd --reload

注意: 要从Let's Encrypt CA获得证书,必须为其生成证书的域指向服务器。如果不是,请对域的DNS记录进行必要的更改,并在再次发出证书请求之前,等待DNS传播。Certbot在提供证书之前会检查域权限。

生成SSL证书。

sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com

生成的证书很可能存储在/etc/letsencrypt/live/ci.example.com/目录中。SSL证书将存储为fullchain.pem,私钥将存储为privkey.pem

让我们加密证书的有效期限为90天,因此建议您使用Cron作业设置证书的自动续订。

打开用户的cron作业文件root

sudo crontab -e

在文件末尾添加以下行。

30 5 * * * /usr/bin/certbot renew --quiet

上面的cron作业每天凌晨5:30运行。如果证书到期,它将自动更新它们。

现在,更改Nginx默认配置文件以删除该default_server行。

sudo sed -i 's/default_server//g' /etc/nginx/nginx.conf

为Buildbot Web界面创建一个新的配置文件。

sudo nano /etc/nginx/conf.d/buildbot.conf

填充文件。

upstream buildbot {
server 127.0.0.1:8010;
}

server {
    listen 80 default_server;
    server_name ci.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2 default_server;
    server_name ci.example.com;

    root html;
    index index.html index.htm;

    ssl on;
    ssl_certificate         /etc/letsencrypt/live/ci.example.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/ci.example.com/privkey.pem;

    ssl_session_cache      shared:SSL:10m;
    ssl_session_timeout  1440m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

    access_log  /var/log/nginx/buildbot.access.log;

    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto  $scheme;
    proxy_set_header X-Forwarded-Server  $host;
    proxy_set_header X-Forwarded-Host  $host;

    location / {
        proxy_pass http://buildbot;
    }
    location /sse/ {
        proxy_buffering off;
        proxy_pass http://buildbot/sse/;
    }
    location /ws {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://buildbot/ws;
        proxy_read_timeout 6000s;
    }
}

检查新配置文件中的错误。

sudo nginx -t

如果看到以下输出,则说明配置没有错误。

[user@vultr ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如果收到某种错误,请确保仔细检查SSL证书的路径。重新启动Nginx Web服务器以实现配置更改。

sudo systemctl restart nginx

打开Buildmaster配置文件。

sudo su buildbot -c "nano /home/buildbot/master/master.cfg"

找到以下行。

c['buildbotURL'] = "http://192.168.1.1:8010/"

根据您使用的域名更改URL。

c['buildbotURL'] = "https://ci.example.com/"

重新启动Buildbot主服务。

sudo systemctl restart buildbot

现在,您可以通过访问Buildbot仪表板https://ci.example.com。您将看到与Buildbot的连接现在已通过SSL保护。

如何在CentOS 7上安装和配置Buildbot

使用管理员凭据登录并添加您的第一个管道以开始构建应用程序。



Leave a Comment

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

使用Nethogs监视网络带宽使用情况

使用Nethogs监视网络带宽使用情况

在本教程中,我们将介绍在CentOS 6x x64上安装和使用nethogs的过程。nethogs是一种网络监视工具,它允许Networ

如何在CentOS 7上安装BoltWire CMS

如何在CentOS 7上安装BoltWire CMS

使用其他系统?简介BoltWire是一个用PHP编写的免费,轻量级的内容管理系统。与大多数其他内容管理人员相比

在CentOS 6上设置SA-MP San Andreas多人服务器

在CentOS 6上设置SA-MP San Andreas多人服务器

欢迎来到另一个Vultr教程。在这里,您将学习如何安装和运行SAMP服务器。本指南是为CentOS 6编写的。先决条件

使用Etckeeper进行/ etc的版本控制

使用Etckeeper进行/ etc的版本控制

简介/ etc /目录在Linux系统运行中起着至关重要的作用。其原因是因为几乎每个系统配置

如何在CentOS 7上安装Microweber

如何在CentOS 7上安装Microweber

使用其他系统?Microweber是一个开放源代码的拖放式CMS和在线商店。Microweber源代码托管在GitHub上。本指南将向您展示

如何在CentOS 7上安装SonarQube

如何在CentOS 7上安装SonarQube

使用其他系统?SonarQube是用于质量系统开发的开源工具。它是用Java编写的,并且支持多个数据库。它提供

如何在CentOS 7上使用Mosh进行远程服务器管理

如何在CentOS 7上使用Mosh进行远程服务器管理

使用其他系统?Mosh是Mobile Shell的缩写,是一种新兴的远程终端应用程序,旨在提供更好的连接和使用

如何在CentOS 7上安装MoinMoin

如何在CentOS 7上安装MoinMoin

MoinMoin是一个使用Python编写的基于文件系统的开源Wiki引擎。如今,MoinMoin已广泛用于开源社区。许多供应商

在CentOS 7上安装H2O Web服务器

在CentOS 7上安装H2O Web服务器

H2O是新一代HTTP服务器,它对所有当前使用的Web服务器都具有出色的,功能齐全的HTTP / 2实现。使用H2O作为您的Web服务器

如何在Debian,CentOS和FreeBSD上使用Sudo

如何在Debian,CentOS和FreeBSD上使用Sudo

在Linux和Unix系统管理员中,使用sudo用户访问服务器并在root级执行命令是一种非常普遍的做法。使用泡沫

如何在Ubuntu 16.10上安装Countly Analytics

如何在Ubuntu 16.10上安装Countly Analytics

使用其他系统?Countly是一个开源Web /移动分析和营销平台。它具有许多用于从Web收集数据的功能

如何在CentOS 7上安装MODX CMS和Nginx

如何在CentOS 7上安装MODX CMS和Nginx

MODX是一个用PHP编写的免费开放源内容管理系统。它使用MySQL或MariaDB来存储其数据库。MODX专为满足以下条件的企业而设计:

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

使用其他系统?Lychee 3.1相册是一种简单,灵活,免费和开源的照片管理工具,可在VPS服务器上运行。安装

如何在CentOS 7上安装ERPNext开源ERP

如何在CentOS 7上安装ERPNext开源ERP

使用其他系统?ERP或企业资源计划是用于管理核心业务流程的企业应用程序套件。ERPNext是免费的

如何在CentOS 7 LAMP VPS上安装Paste 2.1

如何在CentOS 7 LAMP VPS上安装Paste 2.1

使用其他系统?Paste 2.1是一个简单,灵活,免费和开源的pastebin应用程序,用于存储代码,文本等。最初是

如何在CentOS 7上安装Seafile Server

如何在CentOS 7上安装Seafile Server

使用其他系统?Seafile(社区版本)是一个免费和开源的文件同步和共享解决方案,类似于ownCloud。机智

如何在CentOS 7上安装Kolab组件

如何在CentOS 7上安装Kolab组件

使用其他系统?Kolab Groupware是一个免费的基于Web的开源组件软件。它的功能包括电子邮件通信,事件

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息