汕头做网站:从开发到部署的简单工作流程

2019.08.12 mf_web

150

在本文中,我将介绍如何构建一个简单而强大的工作流程来开发需要PHP和MySQL的站点。我将向您展示如何使用Vagrant在您自己的计算机上创建和运行Web服务器,并运行您的实时站点的PHP版本。我还演示了使用托管服务以强大的方式将文件部署到实时服务器的过程。汕头做网站

如果您当前无法在本地测试PHP和MySQL站点,或使用MAMP或XAMPP之类的东西,那么本文适合您。本文的后半部分将帮助您从使用FTP上传文件转移到不太可能导致问题的过程。

良好的本地开发环境可为您节省时间和压力。它为您提供了一个测试的地方。这意味着您可以选择一个项目,进行一些更改,部署它们并向客户开账单以完成另一项工作。

无灾难部署

如果您保留对您的站点所做的更改列表,然后逐个传输文件,那么您将面临人为错误和连接问题导致的困难。我们看到支持我们产品的许多问题都归结为FTP传输失败。密钥文件无法上传,并且深入核心产品。忘记传输文件很容易,并且很容易留下旧文件。如果您使用的软件已删除某些文件以解决安全问题,则将其保留在服务器上即使您已升级也可能使您面临风险。

一个好的部署方法可确保您的实时服务器上的文件与本地文件完全匹配。如果有任何部署失败,您应该收到通知,以便您可以在客户或其客户首先看到之前解决问题!

第1步:抓住一些工具

我们将使用一些免费工具来创建我们的开发环境。首先,下载VirtualBox,这是一个免费的应用程序,允许您在计算机上运行虚拟机。如果您在Mac上工作并使用Windows虚拟机进行测试,则可能已经遇到虚拟机。虚拟机就像名称所暗示的那样,是一台在您的计算机上运行的完整虚拟操作系统。

为您的操作系统安装VirtualBox版本。

现在下载并安装Vagrant。Vagrant是一款可帮助您管理虚拟机的应用程序。

Vagrant主页的屏幕截图。
Vagrant主页。(查看大图)

可以在不使用Vagrant的情况下使用虚拟机。但是,每次要设置新VM时,都必须完成安装Web服务器软件和配置服务器的过程。Vagrant可帮助您自动执行该过程,以便在几分钟内即可拥有运行您站点的本地Web服务器。

如果您使用的是Mac OS X或Linux,请在命令行运行以下命令:

sudo vagrant plugin install vagrant-bindfs
复制

对于所有操作系统,运行下一个命令以安装Vagrant Host Manager以保存您手动编辑hosts文件。

sudo vagrant plugin install vagrant-hostmanager
复制

Vagrant需要一个项目文件夹,其中包含在根目录中保存名为Vagrantfile的文本文件。在Vagrantfile中,您可以指定VM的设置方式。您可以为Vagrant编写自己的配置脚本,但在大多数情况下,您不需要像其他人那样已经为您完成了艰苦的工作。在这里,我们将使用一个名为PuPHPet的工具。

PuPHPet网站的屏幕截图。
PuPHPet网站。(查看大图)

PUPHPET

PuPHPet是一个在线配置工具,可帮助您配置Vagrant项目。您可以浏览网站上的表单,为站点选择选项,然后下载包含Vagrantfile和其他脚本的程序包以设置虚拟机。

第2步:了解您的Live Server上的内容

要使用PuPHPet设置一个尽可能接近您将用于站点的主机的开发服务器,首先要找出实时服务器上的内容。你要知道:

  1. Linux的类型

  2. Web服务器:Apache或Nginx(可能是Apache,如果共享主机)

  3. PHP版本:这将是PHP 5.4或5.5等。

  4. 已配置的文件上载,内存等资源限制

  5. 已安装的PHP模块; 例如:gd,curl

  6. MySQL版本

如果您还没有访问托管服务,那么您需要向主持人询问这些问题。如果您有访问权限,那么您可以自己找到。

将文件上传到名为info.php的服务器,该服务器包含以下PHP函数:

<?php phpinfo(); ?>
复制

使用Web浏览器,您可以访问http://yourdomain.com/info.php并在服务器上查看有关PHP的各种信息。

1. Linux类型

您应该在报告“系统”的第一行中看到基本操作系统的指示。知道你有Debian,Ubuntu或CentOS系统可能对更高级的配置有所帮助。

2. Web服务器

这可能是Apache。如果您在初始部分或下面的标题中看到任何关于Apache的提及,那就是Apache。最可能的替代方案是Nginx。对于简单站点,Web服务器之间的最大区别在于重写规则不同,因此如果要创建友好URL,则需要知道要使用的正确语法。

3. PHP版本

PHP的版本将位于PHP徽标旁边的文档顶部。它可能是一个很长的字符串 - 你最感兴趣的是点后的一个数字。因此,如果您看到“PHP版本5.4.4-14 + deb7u14”,那么您需要记下的是PHP 5.4。

4. PHP模块

PuPHPet将为您安装一些默认模块。但是,如果您想确定某些事物存在,则可以指定它们。在报告的“核心”部分之后列出了PHP模块及其详细信息。需要注意的常见模块有:

  • curl:用于向其他服务器发出请求

  • gd和/或imagemagick:用于图像处理

  • mysql,mysqli和pdo:连接数据库的方法。你应该在这一点上使用mysqli或pdo

5.资源限制和配置选项

在“核心”部分下,您将找到有关PHP的各种信息。记下的有用设置是:

  • max_execution_time:脚本可以运行多长时间

  • max_file_uploads:一次可以上传多少文件

  • max_input_vars:表单限制为多少个字段

  • post_max_size:表单帖子的最大大小

  • upload_max_filesize:文件上传限制

根据您的托管,其中一些可能会被更改。例如,您通常可以增加可以上载的文件的大小。

6. MySQL版本

在mysql,mysqli和pdo_mysql的PHP模块信息下,您应该看到“Client Library Version”的值:这是您的MySQL版本。同样,在点之后只知道一个值就可以了。

小心旧PHP!

在进行此测试时,如果您发现服务器运行的是早于PHP 5.4的任何内容 - 请立即停止并了解如何将托管升级到更新的PHP版本。对于一个新网站,我建议您确保至少使用PHP 5.5。版本5.6甚至更好。

PHP5.3不仅是寿命终结,与较新的PHP版本相比,它也非常慢。这是一个很好的计划,以确保您在您的网站上使用受支持的核心技术版本。通过帮助Perch的客户,我们发现,一般情况下,如果您提出请求,主机很乐意将您升级到更新的服务器。如果他们不是,我会认真考虑移动主机。

第3步:使用PuPHPet构建项目

既然您掌握了自己的信息,就可以使用它来构建一个与PuPHPet相关的项目,该项目可以合理地反映您的环境。我将引导您完成界面。如果我没有提及设置而您对此没有意见,请保留默认值。

部署目标

在PuPHPet网站上,选择侧栏中的“ 部署目标→本地 ”。在主屏幕中选择VirtualBox作为提供者。

在Distro下,您可以选择正在使用的Linux类型(如果已列出)。如果未列出,我建议使用默认的Ubuntu。

该IP地址必须是您的网络,而不是一个真正的外部IP的独特的东西。我倾向于使用格式为10.1.0.130的IP地址。

该主机名标识服务器。再次,这可以是一些东西。

共享文件夹是一个重要的设置。当您使用虚拟机时,您运行的是一台全新的计算机,其计算机上有自己的文件系统。如果要继续在计算机上的通常位置编辑文件 - 而不必将它们传输到VM中进行查看 - 您需要将自己计算机上的驱动器映射到VM上的驱动器。这就是我们在创建共享文件夹时所做的事情。

在我的Mac上,在/ Users / rachel / Sites内,我有一个名为vm的文件夹。这是我为每个项目放置一个文件夹的地方。当我设置VM时,我使用路径/ Users / rachel / Sites / vm作为文件夹源,映射到/ var / www作为文件夹目标。

PuPHPet配置屏幕的屏幕截图。
在PuPHPet上设置共享文件夹。(查看大图)

如果这是一个新站点并且您还没有创建文件,此时我建议为您正在为其设置虚拟机的项目创建一个文件夹,并将index.html弹出到该文件夹<h1>It works!</h1>中。这样您就可以在运行安装程序后看到一切正常。

最后,如果您使用的是Mac OS X或Linux,请选择NFS作为共享文件夹类型。

系统

您可以将所有内容保留为默认值。值得一提的是,在此选项下,您可以为计划任务配置cron作业,并在您要安装某些内容时添加系统包。

WEB服务器

除非您已确定您拥有Nginx,否则请选择Apache并选中Install Apache。这将开辟更多选项。您可以在此处配置虚拟主机。

虚拟主机意味着每个服务器不能拥有一个网站,而是可以在服务器上拥有多个网站。使用虚拟机,您可以根据需要创建任意数量的虚拟机,因此无论您是配置单个虚拟主机还是其他虚拟主机,都由您决定。您不应该做的是配置一个虚拟主机,然后将多个网站粘贴到该主机的子文件夹中。每个站点都需要自己的VM或VM上的虚拟主机,以便在您上线时,root文件的路径不会发生变化。

虚拟主机的基本设置如下:

服务器名称: clientname.dev或您喜欢的任何组成域。

文档根目录:来自/ var / www。如果您按照我建议的方式共享了一个文件夹,/ var / www就是您计算机上的目录 - 包含所有项目文件夹的目录 - 因此您可以在此处指定/ var / www / clientname。

虚拟主机设置的屏幕截图。
使用PuPHPet配置虚拟主机。(查看大图)

如果要添加其他主机,请向下滚动到添加Apache vhost并创建下一个主机。

语言

选择PHP并选中Install PHP。

语言设置的屏幕截图。
在PuPHPet上设置语言。(查看大图)

在PHP版本下,选择您在主机上标识的版本。

在PHP模块下添加您在主机上识别出的任何特定模块(例如,“gd”和“curl”)。

数据库

选择MySQL,如果您知道MySQL的版本,请在此处选择它。

您现在可以使用密码创建数据库用户。我倾向于在本地开发机器上使用“vagrant”这两个名称。

您还可以创建可供您的站点使用的数据库。请记住这些详细信息,因为您需要它们来安装CMS或使用您自己的连接到MySQL的自定义代码。

邮件工具

如果您使用的是CMS,那么最好先查看它发送的电子邮件。PuPHPet建议您在本地安装MailCatcher以执行此任务,因为它可以保存配置邮件服务器。

这应该是它的设置。从侧栏选择Create Archive并下载您的文件。解压缩文件并将其放在系统上的某个位置 - 我的所有文件都位于我的主目录中名为vagrant的子目录中。

你的第一台虚拟机

你几乎准备好了。打开终端窗口并切换到解压缩项目的文件夹。

cd /Users/rachel/vagrant/mynewproject
复制

现在运行命令:

vagrant up
复制

终端窗口的屏幕截图。
运行vagrant up命令。(查看大图)

你第一次这样做需要一段时间。Vagrant会看到你还没有下载基本操作系统,所以它会下载它。当您将来创建一个新项目并使用相同版本的Linux时,Vagrant将复制该框以便更快。

你会看到很多东西滚动 - 不要担心它; 您需要几分钟时间才能完成所有设置。如果您使用的是NFS,则在此过程中将提示您输入密码,以允许Vagrant编辑您的导出文件。

Vagrant完成后,您应该可以使用Web浏览器访问为虚拟主机设置的域并查看您的站点!如果您对文件进行了更改并重新加载浏览器,则会看到您的更改。

基本的流浪者命令

使用命令行中的一些简单命令控制Vagrant。我们已经使用过vagrant up哪个会启动虚拟机。如果VM是全新的,它还将配置它 - 设置您配置为要安装的软件包,创建虚拟主机等等。如果您vagrant up在已经配置的VM上运行,Vagrant将不会重新配置它。

了解命令及其将执行的操作非常重要,但如果您不想使用命令行,请查看Vagrant Manager。Vagrant Manager是适用于Mac OS X和Windows的应用程序,它为您提供了一种管理VM的好方法,同时也可以查看哪些VM正在运行。

Vagrant Manager网站的屏幕截图。
流浪经理网站。(查看大图)

如果要重新配置VM,首先确保它正在运行vagrant up,然后键入:

vagrant provision
复制

要阻止VM运行,您可以使用:

vagrant suspend
复制

这将暂停该框并向主机返回其使用的内存,但不会删除VM上的任何内容或关闭操作系统。如果你vagrant up再次跑,它会像你暂停之前一样回来。

要关闭VM上的操作系统,请使用:

vagrant halt
复制

运行vagrant up再次暂停的盒子启动系统。

如果要将虚拟机设置回其初始状态,请运行:

vagrant destroy
复制

这将删除您在服务器上安装的任何内容。它不会触及映射驱动器中的文件,因为它们托管在主机上,但它会删除MySQL数据库,例如。如果您需要这些数据,请先将其导出。

要访问VM类型上的命令行:

vagrant ssh
复制

然后,您将在您的VM上运行任何命令。您可能会做的一件事是导入或导出数据库文件。

导入数据库文件

我们的流程创建一个空数据库。如果您要安装CMS或其他软件,则很可能会为您创建表。如果要导入从实时服务器导出的文件,可以在命令行执行此操作。

使用vagrant ssh以达到你的虚拟机的命令行。确保导出的数据库SQL脚本位于站点的根目录中,位于共享文件夹中。然后,键入以下内容(我假设数据库名称为dbMySite,用户名和密码都设置为“vagrant”。

mysql -u vagrant -p dbMySite < /var/www/clientname/db.sql
复制

然后会提示您输入密码。输入您的密码,然后导入数据库。

部署Live

执行这些步骤后,您应该有一个很好的方法一次在一个或多个项目上本地工作。您可以设置与live类似的虚拟机,而不是在子文件夹中进行开发。我们可以通过从FTP迁移到使用部署服务来继续增强我们的工作流程。

将文件导入源代码管理

如果您已经在使用Git,那么您就是简单部署的一部分。如果没有,那是我们需要做的第一件事。我们的过程是在我们自己的计算机上将文件提交到Git,然后在托管的Git存储库上创建一个帐户,并从那里将我们的文件推送到实时服务器。

如果您还没有在本地运行Git,请下载并安装Git。

在命令行中,使用以下命令为Git命名:

git config --global user.name "YOUR NAME"
复制

使用下一个命令为Git提供您的电子邮件地址。我们将使用托管存储库,因此请使用您将用于注册的电子邮件地址。

git config --global user.email "YOUR EMAIL ADDRESS"
复制

继续使用命令行并切换到保存站点文件的目录。如果您的文件位于/ Users / rachel / Sites / vm / clientname中,则应键入:

cd /Users/rachel/Sites/vm/clientname
复制

下一个命令告诉Git我们想在这里创建一个新的Git存储库:

git init
复制

然后我们添加我们的文件:

git add .
复制

然后提交文件:

git commit -m "Adding initial files"
复制

引号后面的注释-m是描述提交的消息。你的本地文件现在在Git中!在您工作时,您可以添加和提交文件。

如果您不想在命令行中工作,有很多应用程序可以帮助您使用Git。塔是一个受欢迎的选择。开发塔的人也制作了一本关于用Git学习版本控制的好书。您可以在线免费阅读或购买电子书版本。

Tower网站的屏幕截图。
塔网站。(查看大图)

创建托管存储库

为了简化部署,我们将使用托管的Git存储库,它将安全地存储您的文件并允许您实时部署它们。我在这里建议的托管服务是Beanstalk,因为它同时托管了Git和部署。还有其他服务将从GitHub帐户或其他托管的Git服务部署; Beanstalk将它们捆绑在一起,使事情变得简单明了。

Beanstalk网站的屏幕截图。
Beanstalk的网站。(查看大图)

设置Beanstalk帐户后,在那里创建一个存储库。您现在需要将文件推送到该存储库。在命令行中,确保您位于包含文件的目录中,并键入:

git remote add beanstalk git@accountname.beanstalkapp.com:/gitreponame.gitgit push beanstalk
复制

您的文件现在将传输到Beanstalk。你应该能够在那里看到并浏览它们。

我们现在可以编辑我们的文件,在我们自己的Web服务器上预览它们。我们可以在本地提交它们并将更改推送到Beanstalk。我们的最后一步是让他们活下去。

部署

Beanstalk上的部署可以是手动或自动的。当您将一些代码推送到GitHub上的分支时,会发生自动部署。通常情况下,您可以在暂存环境中执行此操作,如果您推送的代码损坏,则无关紧要。

对于实时站点,尤其是以我们简单的方式工作,您将需要进行手动部署。您将登录Beanstalk并自行触发部署。

部署时,Beanstalk将确保服务器上的文件与Git中的文件相同。如果存在新文件,则会添加该文件,更新已更改的文件,并且将从服务器中删除从Git删除的任何文件。

要开始部署文件,请转到您在Beanstalk上创建的存储库,然后选择Deployments。在这里,您可以创建新的环境和服务器。如果要为实时服务器创建部署,请将其命名为“Live”或“Production”,将“ 部署模式 ”保留为“ 手动”并指定主分支。

然后,您可以添加服务器类型。如果要部署到共享主机,那么该类型最好是SFTP,但也可以是FTP。在下一个屏幕上,然后添加服务器详细信息。这些正是您用来连接FTP客户端的方法。

Beanstalk上的服务器类型的屏幕截图。
在Beanstalk上选择服务器类型。(查看大图)

Beanstalk允许您运行测试以检查您的服务器是否可以连接。设置好服务器并验证连接后,您就可以将文件部署到实际站点了。它就像点击按钮并等待一样简单。部署完成后,Beanstalk将执行以下操作:

  • 连接到您的服务器。

  • 确保服务器上的文件与您正在部署的分支中的文件匹配。

  • 在初始部署时,必须检查服务器上的所有现有文件。你的第一次部署会很慢!

  • 后续部署仅更改Git中已更改的内容。

部署提示

以下是一些建议,可以更轻松地以这种方式部署您的网站。

创建多服务器配置文件

在几个环境中工作意味着您将需要管理特定于每个环境的内容,例如数据库设置或文件路径。我喜欢创建一个打开主机名的配置文件,因此同一个文件可以在任何地方使用,您不能不小心用开发服务器替换您的实时详细信息。您可以看到Perch的示例,但您可以对具有配置文件作为代码一部分的任何其他系统执行相同的操作。

使用.gitignore使事情远离Beanstalk

您可能不希望将文件和资产推送到Beanstalk。你可以使用.gitignore文件让Git忽略它们。GitHub上的各种系统都有一些很好的起点文件。

在GitHub上排除文件和文件夹

如果您希望文件和文件夹最终作为存储库的一部分在Beanstalk上运行,但不会部署到您的服务器上,您也可以将它们从部署中排除。也许您想要在Git中管理一些源资产以及站点,但不想部署。您可以在设置或编辑部署时配置模式,特定文件或目录。

在紧急情况下编辑Beanstalk上的文件

当您离开办公桌并需要解决问题时,Beanstalk可以节省一天的时间。您可以使用Web界面直接在Beanstalk上编辑文件并将其推送。

这不如在部署之前在本地测试,但在紧急情况下方便。与直接在服务器上进行编辑不同,如果一切都出错,您可以使用安全网回滚到以前的版本。您还在Git中拥有更改的文件,因此下次部署时不会覆盖更改。

使用Navicat同步数据库更改

如果您需要对实时数据库进行更改以使其与本地数据库保持同步,则可能会出现部署更改的最大问题之一。Navicat可以帮助完成这项工作。您可以选择源和目标,比较差异并运行查询以进行更改。

您的新工作流程

如果您已经阅读了本文,那么您现在应该可以在本地开发一个或多个站点,使用类似于站点在实时服务器上运行的设置。

您的文件现在受版本控制,并被推送到远程Git存储库。

您可以放心地部署在实时服务器上的内容应该是该服务器上的内容 - 不多也不少。

当您将来需要对项目进行更改时,您可以确保拥有来自Beanstalk的最新文件,进行更改,测试,提交和部署,而不必担心您可能会破坏某些内容。您完成工作流程所花费的时间应该在您第一次需要对几周未触及的正在运行的网站进行更新时获得回报。

这不是实现可靠的开发环境和部署过程的唯一方法,但它是一个相当简单的方法。一旦您了解了这种类型的工作流程,您就可以探索如何进一步简化它,花时间做更多有趣的事情,而不是与服务器和托管进行斗争!

汕头做网站

最新案例

寒枫总监

来电咨询

400-6065-301

微信咨询

寒枫总监

TOP