首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在Ubuntu 16.04上使用Deployer自动部署Laravel应用程序

如何在Ubuntu 16.04上使用Deployer自动部署Laravel应用程序

原创
作者头像
心语花束
发布于 2018-08-06 07:34:25
发布于 2018-08-06 07:34:25
16.5K0
举报

介绍

Laravel是一个开源的PHP Web框架,旨在使常见的Web开发任务(如身份验证路由和缓存)变得更加容易。Deployer是一个开源的PHP部署工具,为许多流行的框架提供立即可用的支持,包括Laravel,CodeIgniter,Symfony和Zend Framework。

Deployer通过将应用程序从Git存储库克隆到服务器,使用Composer安装依赖项以及配置应用程序以使您不必手动执行此操作来自动执行部署。这使您可以将更多时间用于开发,而不是上载和配置。并允许您更频繁地部署。

在本教程中,您将自动部署Laravel应用程序,而不会出现任何宕机问题。为此,您将准备将从中部署代码的本地开发环境,然后使用Nginx和MySQL数据库配置生产服务器为该应用程序提供服务。

准备

在开始本指南之前,您需要以下内容:

  • 一个Ubuntu 16.04服务器,使用具有sudo权限的非root用户。
  • 安装LEMP堆栈
  • 在服务器上安装PHP,Composer和Git 。
  • 在您的服务器上安装php-xmlphp-mbstring软件包。使用以下命令安装:sudo apt-get install php7.0-mbstring php7.0-xml
  • 一个Git服务器。
  • 指向您的服务器的域名。
  • 安装在本地计算机上的Composer和Git。

第1步 - 设置本地开发环境

由于您将从本地计算机创建和部署应用程序,因此首先要配置本地开发环境。部署人员将从本地计算机控制整个部署过程,因此请先安装开发环境。

注意:如果在本地计算机上使用Windows,则应使用BASH仿真器(如Git bash)运行所有本地命令。

本地计算机上,打开终端并使用curl命令下载Deployer安装程序:

代码语言:txt
AI代码解释
复制
$ curl -LO https://deployer.org/deployer.phar

接下来,运行一个简短的PHP脚本来验证安装程序是否与Deployer下载页面上找到的最新安装程序的SHA-1哈希匹配。用最新的哈希替换突出显示的值:

代码语言:txt
AI代码解释
复制
$ php -r "if (hash_file('sha1', 'deployer.phar') === '35e8dcd50cf7186502f603676b972065cb68c129') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('deployer.phar'); } echo PHP_EOL;"
代码语言:txt
AI代码解释
复制
Installer verified

使Deployer可用于系统范围。请注意,如果您在本地计算机上运行Windows或macOS,则可能需要在运行此命令之前创建/usr/local/bin/dep目录:

代码语言:txt
AI代码解释
复制
$ sudo mv deployer.phar /usr/local/bin/dep

使其可执行:

代码语言:txt
AI代码解释
复制
$ sudo chmod +x /usr/local/bin/dep

接下来,在本地计算机上创建一个Laravel项目:

代码语言:txt
AI代码解释
复制
$ composer create-project --prefer-dist laravel/laravel laravel-app "5.5.*"

您已在本地计算机上安装了所有必需的软件。有了这个,我们将继续为应用程序创建一个Git存储库。

第2步 - 连接到远程Git存储库

Deployer旨在使用户能够随时随地部署代码。要开启此功能,它需要用户将代码推送到Internet上的存储库,然后Deployer会将代码复制到生产服务器。我们将使用Git(一种开源版本控制系统)来管理Laravel应用程序的源代码。您可以使用SSH协议连接到Git服务器,为了安全地执行此操作,您需要生成SSH密钥。这比基于密码的身份验证更安全,让您避免在每次部署之前键入密码。

本地计算机上运行以下命令以生成SSH密钥。请注意,-f指定密钥文件的文件名,您可以用自己的文件名替换gitkey。它将生成一个SSH密钥对(名为gitkeygitkey.pub)到该~/.ssh/文件夹。

代码语言:txt
AI代码解释
复制
ssh-keygen -t rsa -b 4096 -f ~/.ssh/gitkey

您可能在本地计算机上有更多SSH密钥,因此请配置SSH客户端以了解连接到Git服务器时要使用的SSH私钥。

在本地计算机上创建SSH配置文件:

代码语言:txt
AI代码解释
复制
$ touch ~/.ssh/config

打开文件并为Git服务器添加快捷方式。这应该包含HostName指令(指向您的Git服务器的主机名)和IdentityFile指令(指向您刚刚创建的SSH密钥的文件路径):

~/.ssh/config

代码语言:txt
AI代码解释
复制
Host mygitserver.com
    HostName mygitserver.com
    IdentityFile ~/.ssh/gitkey

保存并关闭该文件,然后限制其权限:

代码语言:txt
AI代码解释
复制
$ chmod 600 ~/.ssh/config

现在您的SSH客户端将知道使用哪个私钥连接到Git服务器。

使用以下命令显示公钥文件的内容:

代码语言:txt
AI代码解释
复制
$ cat ~/.ssh/gitkey.pub

复制输出并将公钥添加到您的Git服务器。

现在,您将能够使用本地计算机连接到Git服务器。使用以下命令测试连接:

代码语言:txt
AI代码解释
复制
$ ssh -T git@mygitserver.com

如果此命令导致错误,请通过参考Git托管服务的文档检查您是否正确添加了SSH密钥,然后再次尝试连接。

在将应用程序推送到远程Git存储库并进行部署之前,让我们首先配置生产服务器。

第3步 - 配置部署用户

部署程序能够使用SSH协议在服务器上安全地执行命令。因此,我们将配置生产服务器的第一步是创建一个用户,Deployer可以使用该用户通过SSH登录并在服务器上执行命令。

使用sudo非root用户登录LEMP服务器,并使用以下命令创建名为“ deployer ”的新用户:

代码语言:txt
AI代码解释
复制
$ sudo adduser deployer

Laravel需要一些可写目录来存储缓存文件和上传,因此部署者用户创建的目录必须可由Nginx Web服务器写入。将用户添加到www-data组以执行此操作:

代码语言:txt
AI代码解释
复制
$ sudo usermod -aG www-data deployer

部署者用户创建的文件的默认权限应该对于文件是644和对于目录是755。这样,部署者用户将能够读取和写入文件,而组和其他用户将能够阅读它们。

通过将部署者的默认umask设置为022

代码语言:txt
AI代码解释
复制
$ sudo chfn -o umask=022 deployer

我们将应用程序存储在/var/www/html/目录中,因此将目录的所有权更改为部署者用户和www-data组。

代码语言:txt
AI代码解释
复制
$ sudo chown deployer:www-data /var/www/html

部署的用户需要能够在中修改文件和文件夹/var/www/html目录。鉴于此,在/var/www/html目录中创建的所有新文件和子目录都应继承文件夹的组ID(www-data)。要实现此目的,请使用以下命令在此目录上设置组ID:

代码语言:txt
AI代码解释
复制
$ sudo chmod g+s /var/www/html

部署人员将使用SSH将Git仓库克隆到生产服务器,因此您需要确保LEMP服务器与Git服务器之间的连接是安全的。我们将使用与本地计算机相同的方法,为部署者用户生成SSH密钥。

切换到服务器上的部署者用户:

代码语言:txt
AI代码解释
复制
$ su - deployer

接下来,生成SSH密钥对。这次,您可以使用SSH密钥的默认文件名:

代码语言:txt
AI代码解释
复制
$ ssh-keygen -t rsa -b 4096

显示公钥:

代码语言:txt
AI代码解释
复制
$ cat ~/.ssh/id_rsa.pub

复制公钥并将其添加到Git服务器。

您的本地计算机也将使用SSH与服务器通信,因此您应该为本地计算机上的部署者用户生成SSH密钥,并将公钥添加到服务器。

本地计算机上运行以下命令。随意用您选择的文件名替换deployerkey

代码语言:txt
AI代码解释
复制
$ ssh-keygen -t rsa -b 4096 -f  ~/.ssh/deployerkey

复制以下命令的输出,其中包含公钥:

代码语言:txt
AI代码解释
复制
$ cat ~/.ssh/deployerkey.pub

您的服务器上,作为部署者用户运行以下命令:

代码语言:txt
AI代码解释
复制
$ nano ~/.ssh/authorized_keys

将公钥粘贴到编辑器,按下CTRL-XY,然后按ENTER保存并退出。

限制文件的权限:

代码语言:txt
AI代码解释
复制
$ chmod 600 ~/.ssh/authorized_keys

现在切换回sudo用户:

代码语言:txt
AI代码解释
复制
$ exit

现在您的服务器可以连接到Git服务器,您可以使用本地计算机上的部署者用户登录服务器。

部署者用户身份从本地计算机登录到服务器以测试连接:

代码语言:txt
AI代码解释
复制
$ ssh deployer@your_server_ip  -i ~/.ssh/deployerkey

deployer身份登录后,还要测试服务器和Git服务器之间的连接:

代码语言:txt
AI代码解释
复制
$ ssh -T git@mygitserver.com

最后,退出服务器:

代码语言:txt
AI代码解释
复制
$ exit

我们可以继续在我们的Web服务器上配置Nginx和MySQL

第4步 - 配置Nginx

我们现在准备配置将为应用程序提供服务的Web服务器。这将涉及配置我们将用于保存Laravel文件的文档根目录和目录结构。我们将设置Nginx来从/var/www/laravel目录中提供我们的文件。

首先,我们需要为新站点创建服务器块配置文件。

sudo用户身份登录服务器并创建新的配置文件。请记住将example.com替换为您自己的域名:

代码语言:txt
AI代码解释
复制
$ sudo nano /etc/nginx/sites-available/example.com

将server块添加到配置文件的顶部:

example.com '>/etc/nginx/sites-available/example.com

代码语言:txt
AI代码解释
复制
server {
        listen 80;
        listen [::]:80;

        root /var/www/html/laravel-app/current/public;
        index index.php index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;
}

顶部的两个listen指令告诉Nginx要侦听哪些端口,root指令定义了将安装Laravel的文档根目录。在current/public根目录的路径链接指向应用程序的最新版本。通过添加index指令,我们告诉Nginx index.php在请求目录位置之前首先查找文件,然后再查找它们的HTML副本。该server_name指令应该跟随您的域名。

我们还应该修改Nginx处理请求的方式。这是通过try_files指令完成的。我们希望它首先尝试将请求作为文件提供,如果找不到具有正确名称的文件,它应该尝试与请求匹配的目录提供默认索引文件。如果失败了,它应该将请求作为查询参数传递给index.php文件。

example.com '>/etc/nginx/sites-available/example.com

代码语言:txt
AI代码解释
复制
server {
        listen 80;
        listen [::]:80;

        root /var/www/html/laravel-app/current/public;
        index index.php index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

接下来,我们需要创建一个块来处理任何PHP文件的实际执行。这适用于以.php结尾的所有文件。它将尝试文件本身,然后尝试将其作为参数传递给index.php文件。

我们将设置fastcgi指令以告诉Nginx使用应用程序的实际路径(在遵循符号链接后解析),而不是符号链接。如果不将这些行添加到配置中,将缓存符号链接指向的路径,这意味着将在部署后加载旧版本的应用程序。如果没有这些指令,则必须在每次部署后手动清除缓存,并且对应用程序的请求可能会失败。此外,该fastcgi_pass指令将确保Nginx使用php7-fpm用于通信的套接字,并将该index.php文件用作这些操作的索引。

example.com '>/etc/nginx/sites-available/example.com

代码语言:txt
AI代码解释
复制
example.com '>/etc/nginx/sites-available/example.com 
server {
        listen 80;
        listen [::]:80;

        root /var/www/html/laravel-app/current/public;
        index index.php index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }


        location ~ \.php$ {
                include snippets/fastcgi-php.conf;

                fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
                fastcgi_param DOCUMENT_ROOT $realpath_root;

                fastcgi_pass unix:/run/php/php7.0-fpm.sock;

        }

最后,我们要确保Nginx不允许访问任何隐藏.htaccess文件。我们将通过在该块中添加一个location ~ /\.ht,写上deny all来实现此目的。

添加在最后一个位置块后,配置文件将如下所示:

example.com '>/etc/nginx/sites-available/example.com

代码语言:txt
AI代码解释
复制
server {
        listen 80;
        listen [::]:80;

        root /var/www/html/laravel-app/current/public;
        index index.php index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }


        location ~ \.php$ {
                include snippets/fastcgi-php.conf;

                fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
                fastcgi_param DOCUMENT_ROOT $realpath_root;

                fastcgi_pass unix:/run/php/php7.0-fpm.sock;

        }

        location ~ /\.ht {
                deny all;
        }

}

保存并关闭文件(CTRL-XY然后ENTER),然后通过创建指向该sites-enabled目录的符号链接启用新服务器块:

代码语言:txt
AI代码解释
复制
$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

测试配置文件是否存在语法错误:

代码语言:txt
AI代码解释
复制
$ sudo nginx -t

如果您发现任何错误,请在继续之前返回并重新检查您的文件。

重新启动Nginx以推送必要的更改:

代码语言:txt
AI代码解释
复制
$ sudo systemctl restart nginx

现在配置了Nginx服务器。接下来,我们将配置应用程序的MySQL数据库

第5步 - 配置MySQL

安装完成后,MySQL 默认创建root用户。但是,此用户具有无限权限,因此将root用户用于应用程序的数据库是一种不安全做法。相反,我们将使用专用用户为应用程序创建数据库。

root身份登录MySQL控制台:

代码语言:txt
AI代码解释
复制
$ mysql -u root -p

这将提示您输入root密码。

接下来,为应用程序创建一个新数据库:

代码语言:txt
AI代码解释
复制
mysql> CREATE DATABASE laravel_database DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

然后,创建一个新的数据库用户。在本教程中,我们将使用laravel_user和密码password

代码语言:txt
AI代码解释
复制
mysql> CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'password';

向用户授予对数据库的权限:

代码语言:txt
AI代码解释
复制
mysql> GRANT ALL ON laravel_database.* TO 'laravel_user'@'localhost';

接下来,重新加载权限:

代码语言:txt
AI代码解释
复制
mysql> FLUSH PRIVILEGES;

最后,退出MySQL控制台:

代码语言:txt
AI代码解释
复制
mysql> EXIT;

您的应用程序的数据库和用户现已配置完毕,您几乎已准备好运行第一次部署。

第6步 - 部署应用程序

到目前为止,您已经配置了Deployer运行所需的所有工具和程序。在运行第一次部署之前,剩下要做的就是完成Laravel应用程序和Deployer本身的配置,并初始化应用程序并将其推送到远程Git存储库。

打开本地计算机上的终端,使用以下命令将工作目录更改为应用程序的文件夹:

代码语言:txt
AI代码解释
复制
$ cd /path/to/laravel-app

在此目录中,运行以下命令,该命令将创建在文件夹中调用deploy.phplaravel-app文件,该文件将包含用于部署的配置信息和任务:

代码语言:txt
AI代码解释
复制
$ dep init -t Laravel

接下来,使用首选的文本编辑器或IDE打开deploy.php文件。第三行包括一个PHP脚本,其中包含部署Laravel应用程序所需的任务和配置:

deploy.php

代码语言:txt
AI代码解释
复制
deploy.php
<?php
namespace Deployer;

require 'recipe/laravel.php';

. . .

下面是一些您应编辑符合您的配置的字段:

  • // Project Name下,添加Laravel项目的名称。
  • // Project Repository下,将链接添加到您的Git存储库。
  • //Hosts部分中,将服务器的IP地址或域名添加到host()指令中,将Deployer用户的名称(在我们的示例中为部署者)添加到user()指令中。您还应该将在步骤3中创建的SSH密钥添加到identifyFile()指令中。最后,您应该添加包含您应用程序文件夹的文件路径。

编辑完这些字段后,它们应如下所示:

deploy.php

代码语言:txt
AI代码解释
复制
...
// Project name
set('application', 'laravel-app');

// Project repository
set('repository', 'git@mygitserver.com:username/repository.git');

. . .

// Hosts

host('your_server_ip')
    ->user('deployer')
    ->identityFile('~/.ssh/deployerkey')
    ->set('deploy_path', '/var/www/html/laravel-app');

接下来,注释掉文件的最后一行,before('deploy:symlink', 'artisan:migrate'); 。此行指示Deployer自动运行数据库迁移,通过注释我们将禁用它。如果您不对其进行注释,则部署将失败,因为此行需要在服务器上提供适当的数据库凭据,这只能使用将在第一次部署期间生成的文件添加:

deploy.php

代码语言:txt
AI代码解释
复制
...
// Migrate database before symlink new release.

//before('deploy:symlink', 'artisan:migrate');

在我们部署项目之前,我们必须先将其推送到远程Git存储库。

本地计算机上,将工作目录更改为应用程序的文件夹:

代码语言:txt
AI代码解释
复制
$ cd /path/to/laravel-app

在laravel-app目录中运行以下命令以初始化项目文件夹中的Git存储库:

代码语言:txt
AI代码解释
复制
$ git init

接下来,将所有项目文件添加到存储库:

代码语言:txt
AI代码解释
复制
$ git add .

提交更改:

代码语言:txt
AI代码解释
复制
$ git commit -m 'Initial commit for first deployment.'

使用以下命令将Git服务器添加到本地存储库。请务必使用您自己的远程存储库URL替换突出显示的文本:

代码语言:txt
AI代码解释
复制
$ git remote add origin git@mygitserver.com:username/repository.git

将更改推送到远程Git存储库:

代码语言:txt
AI代码解释
复制
$ git push origin master

最后,使用以下dep命令运行第一次部署:

代码语言:txt
AI代码解释
复制
$ dep deploy

如果一切顺利,你应该在最后看到Successfully deployed!

代码语言:txt
AI代码解释
复制
Deployer's output
✈︎ Deploying master on your_server_ip
✔ Executing task deploy:prepare
✔ Executing task deploy:lock
✔ Executing task deploy:release
➤ Executing task deploy:update_code
✔ Ok
✔ Executing task deploy:shared
✔ Executing task deploy:vendors
✔ Executing task deploy:writable
✔ Executing task artisan:storage:link
✔ Executing task artisan:view:clear
✔ Executing task artisan:cache:clear
✔ Executing task artisan:config:cache
✔ Executing task artisan:optimize
✔ Executing task deploy:symlink
✔ Executing task deploy:unlock
✔ Executing task cleanup
Successfully deployed!

在您的服务器目录中创建以下结构:/var/www/html/laravel-app

代码语言:txt
AI代码解释
复制
├── .dep
├── current -> releases/1
├── releases
│   └── 1
└── shared
    ├── .env
    └── storage

通过在服务器上运行以下命令验证这一点,该命令将列出文件夹中的文件和目录:

代码语言:txt
AI代码解释
复制
$ ls /var/www/html/laravel-app
代码语言:txt
AI代码解释
复制
current  .dep  releases  shared

以下是每个文件和目录包含的内容:

  • releases目录包含Laravel应用程序的部署版本。
  • current是上一版本的符号链接。
  • .dep目录包含Deployer的特殊元数据。
  • shared目录包含.env配置文件和storage将与每个版本进行符号链接的目录。

但是,该应用程序将无法正常工作,因为该.env文件为空。此文件用于保存重要配置,例如应用程序密钥-用于加密的随机字符串。如果未设置的话,您的用户会话和其他加密数据将不安全。该应用程序.env本地计算机上有一个文件,但Laravel的.gitignore文件将其从Git仓库中排除,因为在Git存储库中存储密码等敏感数据不是一个好主意,而且,应用程序需要在服务器上进行不同的设置。该.env文件还包含数据库连接设置,这就是我们为第一次部署禁用数据库迁移的原因。

部署者用户身份登录到您的服务器:

代码语言:txt
AI代码解释
复制
$ ssh deployer@your_server_ip  -i ~/.ssh/deployerkey

在服务器上**运行以下命令,并将本地.env文件复制并粘贴到编辑器:

代码语言:txt
AI代码解释
复制
$ nano /var/www/html/laravel-app/shared/.env

在保存之前,您应该进行一些更改。设置APP_ENVproductionAPP_DEBUGfalseAPP_LOG_LEVELerror并且不要忘记用您自己的数据库替换数据库,数据库用户和密码。您也应该替换example.com为自己的域名:

/var/www/html/laravel-app/shared/.env

代码语言:txt
AI代码解释
复制
APP_NAME=Laravel
APP_ENV=production
APP_KEY=base64:cA1hATAgR4BjdHJqI8aOj8jEjaaOM8gMNHXIP8d5IQg=
APP_DEBUG=false
APP_LOG_LEVEL=error
APP_URL=http://example.com

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_database
DB_USERNAME=laravel_user
DB_PASSWORD=password

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

保存文件并关闭编辑器。

现在取消注释本地计算机上deploy.php文件的最后一行:

deploy.php

代码语言:txt
AI代码解释
复制
...
// Migrate database before symlink new release.

before('deploy:symlink', 'artisan:migrate');

警告:这将导致数据库迁移在每个部署中自动运行。这样可以避免手动迁移数据库,但在部署之前不要忘记备份数据库

要检查此配置是否正常,请再次部署该应用程序。在本地计算机上运行以下命令:

代码语言:txt
AI代码解释
复制
$ dep deploy

现在,您的应用程序将正常工作。如果您访问域名(http://example.com),您将看到以下页面:

Laravel界面
Laravel界面

在所有部署之前,您不必编辑服务器上的.env文件。典型的部署并不像第一次那么复杂,只需要几个命令即可完成。

第7步 - 运行典型部署

作为最后一步,本节将介绍您可以每天使用的简单部署过程。

首先在再次部署之前修改应用程序。例如,您可以在routes/web.php文件中添加新路由:

/routes/web.php

代码语言:txt
AI代码解释
复制
<?php

. . .

Route::get('/', function () {
    return view('welcome');
});

Route::get('/greeting', function(){
    return 'Welcome!';
});

提交这些更改:

代码语言:txt
AI代码解释
复制
$ git commit -am 'Your commit message.'

将更改推送到远程Git存储库:

代码语言:txt
AI代码解释
复制
$ git push origin master

最后,部署应用程序:

代码语言:txt
AI代码解释
复制
$ dep deploy

您已成功将应用程序部署到服务器。

结论

通过本教程,您已将本地计算机和服务器轻松部署了Laravel应用程序,本文仅介绍Deployer的基础知识,它有许多有用的功能。如果您想了解有关Deployer功能和使用攻略的更多信息,可以在腾讯云+社区找到更多信息。


参考文献:《How to Automatically Deploy Laravel Applications with Deployer on Ubuntu 16.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
保护敏感数据的艺术:数据安全指南
多年来,工程和技术迅速转型,生成和处理了大量需要保护的数据,因为网络攻击和违规的风险很高。为了保护企业数据,组织必须采取主动的数据安全方法,了解保护数据的最佳实践,并使用必要的工具和平台来实现数据安全。
小阑本阑
2023/10/13
7440
保护敏感数据的艺术:数据安全指南
Pandas高级数据处理:数据安全与隐私保护
在当今的数据驱动时代,数据安全和隐私保护已成为每个数据科学家和分析师必须重视的问题。无论是个人用户信息、企业敏感数据还是医疗记录,确保这些数据的安全性和隐私性不仅是一项法律义务,也是对用户的尊重和信任的体现。Pandas作为Python中广泛使用的数据分析库,提供了强大的功能来处理和分析数据。然而,在使用Pandas进行数据处理时,如何确保数据的安全性和隐私性同样至关重要。
Jimaks
2025/02/11
4070
分片重加密实现区块链可分享型隐私
我们习惯把数据都存储在各种云服务器上,带来方便的同时也存在很多数据隐私泄露的隐患,绝大多数的云服务供应商并不完全值得信任,他们完全可以在未经用户允许的情况下擅自泄露用户的数据,用户甚至毫不知情。
用户7358413
2020/05/24
1K0
​隐私保护:图像与视频隐私保护技术的发展
随着数字时代的到来,图像和视频数据的获取与传播变得异常容易。然而,这也带来了隐私泄露的风险,尤其是在公共场合或通过社交媒体分享的图像和视频。隐私保护技术的发展,旨在确保个人隐私在数字世界中的安全。本文将探讨图像与视频隐私保护技术的发展历程,包括关键技术、应用实例以及未来的发展方向。
二一年冬末
2024/04/29
1.1K0
【RSA2019创新沙盒】Duality:基于同态加密的数据分析和隐私保护方案
Duality Technologies成立于2016年,总部位于美国马萨诸塞州剑桥市,由著名的密码专家和数据科学家联合创立。公司致力于研究大数据/云环境下的数据安全与隐私保护技术,为企业组织提供了一个安全的数字协作平台,目前在美国和以色列开展业务。目前获得了由Team8领导的400万美元投资。2019年入选RSA大会的创新沙盒前十强,成为两家入选的数据安全公司之一(另一家是Wirewheel公司)。
绿盟科技研究通讯
2019/12/11
1.7K0
【RSA2019创新沙盒】Duality:基于同态加密的数据分析和隐私保护方案
Java - 深入理解加密解密和签名算法
Java应用接口安全性问题可能来源于多个方面,包括但不限于数据加密、身份验证、访问控制、输入验证等。下面我会对这些问题进行详细分析,并提供相应的解决方案和最佳实践。
小小工匠
2024/05/25
5650
Java - 深入理解加密解密和签名算法
密码技术在个人信息合规中的应用与落地
随着信息技术的高速发展,作为保障信息安全的重要手段,密码技术已经逐渐渗透到我们信息生活的方方面面,无论是浏览网页、即时通讯聊天,还是银行转账和智能家居等等,都涉及了密码技术的使用。2021年11月《个人信息保护法》(以下简称《个保法》)正式实施,《个保法》第五十一条明确要求个人信息处理者采取加密等安全技术措施,确保确保个人信息处理活动符合法律、行政法规的规定,并防止未经授权的访问以及个人信息泄露、篡改、丢失。事实上,密码技术除了在个人信息的传输与存储等环节作为安全保障措施外,也是个人信息去标识化/匿名化的有效方式。
FB客服
2022/02/25
1.2K0
密码技术在个人信息合规中的应用与落地
保护个人隐私数据很重要 !!!
今晚回顾了一下2018年科技界关于数据泄露而引发的个人隐私问题,特别是互联网产业大佬们的一些言论,让我对于中国用户的隐私数据有一种被过度使用的担忧,如果你也遇到了如下的几个问题,那么说明你的个人数据已经被卖了,哪里还有隐私可言。
icepy
2019/06/24
2K0
保护个人隐私数据很重要 !!!
PHP 加密与解密
在现代 Web 应用中,数据安全是至关重要的,尤其是处理用户的敏感信息时,如密码、个人身份信息、信用卡号等。为了保护这些敏感数据不被黑客窃取或篡改,我们常常需要使用加密技术对数据进行保护。PHP 作为一种广泛使用的服务器端脚本语言,也提供了多种加密和解密的方法,帮助开发者实现数据的安全保护。
繁依Fanyi
2025/02/06
7100
一文透析腾讯云如何为企业构建「数据全生命周期保护」
伴随数据成为企业的核心资产,数据安全已经成为所有企业在产业互联网时代必须直面的挑战。
腾讯安全
2019/12/26
1.9K0
一文透析腾讯云如何为企业构建「数据全生命周期保护」
关于密码存储这件事儿
在当今数字化时代,密码的安全性至关重要。不正确的密码存储方法可能导致用户数据泄露、账户被盗或系统遭受恶意攻击。因此,采用最佳实践和安全的技术方案来存储密码是至关重要的。
用户1107783
2024/03/18
3220
关于密码存储这件事儿
一款数据加密共享与签名方案
最近在研究区块链的时候关注了一下加密技术,小有心得,于是设计了一款数据加密共享与签名的方案,希望能够为做电子合同,数据存证,数据共享的朋友有所帮助吧。
深蓝studyzy
2022/06/16
4840
一款数据加密共享与签名方案
“零隐私”时代下 数字身份如何破局
“身份”这个词在人类社会中有着重要的意义。在百度百科上,它被诠释为人的出身和社会地位。也有人会将“身份”这个词拓展,将它的意义覆盖到到出身、阶层、职业、地位、状态等等。但不变的是,“身份”一直是在从不同的维度去证明,“我是谁”。
微位科技
2019/04/15
6280
“零隐私”时代下 数字身份如何破局
保护用户PII数据的8项数据匿名化技术
在当今数据驱动的市场中,数据为企业带来了更多的力量和机会。但正所谓“权力越大,责任越大。”随着越来越多的个人信息被组织收集和分析,保护个人隐私和防止滥用或未经授权访问个人数据的需求也随之而来。
FB客服
2023/08/08
1.1K0
保护用户PII数据的8项数据匿名化技术
【大数据安全】大数据安全的挑战与对策&基础设施安全
大数据安全是指在大数据环境下,为了保护数据不被非法获取、篡改或破坏,确保数据的安全性、完整性和可用性的一系列措施和技术。
Francek Chen
2025/01/22
4090
【大数据安全】大数据安全的挑战与对策&基础设施安全
加解密算法分析与应用场景
在日常开发中,无论是使用何种编程语言,我们都会遇到加解密的需求。例如,为了保护接口数据安全,我们需要对数据进行加密传输;在HTTPS协议中,通过非对称加密传输客户端私钥,然后双方使用该私钥进行对称加密通信;使用MD5算法进行文件一致性校验等。然而,面对众多的加解密方案,我们往往不清楚何时使用哪种方法。本文将为您梳理当前主流的加解密技术,并对算法进行科普性说明,但不涉及具体算法分析。根据日常应用场景,加解密技术大致可分为以下四类:
不惑
2024/05/13
7190
加解密算法分析与应用场景
Web安全系列——敏感信息泄露与加密机制
数字化时代,越来越多的数据正在被传输到Web应用程序中,这其中不乏个人或机构的敏感信息。
windealli
2023/10/13
1.4K0
Web安全系列——敏感信息泄露与加密机制
从滴滴出行下架看数据平台的隐私数据问题
7月4日晚,一则震惊互联网的消息在各媒体平台传播。这则消息是关于"滴滴出行"app的通告,由国家互联网信息办公室颁布,大意是“滴滴出行”App存在严重违法违规收集使用个人信息问题,依据相关法律规定,通知应用商店下架“滴滴出行”App,要求滴滴出行科技有限公司严格按照法律要求,参照国家有关标准,认真整改存在的问题。不久之前,《网络安全法》以及《个人信息处理法案》的重要补充——《数据安全法》于6月10日颁布。该法案9月1日开始正式实施,作为安全相关的法律,《数据安全法》规范的是数据处理活动中的数据安全,通过保障数据安全,来促进数据的进一步开发和利用,保护个人,组织的合法权益,维护国家主权及安全。数字经济蓬勃发展的今天,《网络安全法》将在其中扮演越来越重要的角色,防范国家数据安全风险,维护国家安全,保障公共利益。在进入正式问题讨论之前,我们先分析一下为什么数据安全会成为当下最重要的安全问题。主要是由于以下两点:
ThoughtWorks
2021/07/27
6950
【大数据安全】数据管理安全&安全分析&隐私保护
数据溯源技术对大数据平台中的明细数据、汇总数据使用后中各项数据的产生来源、处理、传播和消亡进行历史追踪。 大数据平台数据溯源的原则:
Francek Chen
2025/01/22
7330
【大数据安全】数据管理安全&安全分析&隐私保护
安全如何为数据库选择最佳加密方法
介绍 加密是对消息或信息进行编码以便只有授权方可以看到它的过程。加密已经进行了几个世纪。例如,在第二次世界大战中,盟军使用不成文的纳瓦霍语发送加密代码,日本人无法解码。
埃文科技
2022/05/23
7920
推荐阅读
相关推荐
保护敏感数据的艺术:数据安全指南
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档