轻松部署 Laravel 应用 | 《01. 宝塔面板》

:clap: 本系列持续更新中,欢迎关注:https://github.com/wi1dcard/laravel-deploy...

由于课程上下文关联比较紧密,在开始前请先阅读 本文

你的支持是我写作的动力;关注我的客官们,请在右上角点个赞,将会让文章在首页展示,帮助更多人。

感谢 :clap: !

和许多国内 PHP 程序员一样,最早接触服务器部署就是依靠 一键 Web 管理面板

常见 Web 面板

目前市面上流行的面板很多,例如:

前前后后几年开发过程中,以上四款面板我均有过深度使用,个人比较喜欢 AMH 和 AppNode。

宝塔是这个圈子里的后起之秀,16 年才开始做面板。不过凭借着相对美观的 UI,以及长期免费、简单易用等优势,抢占了不少零基础用户。

安装宝塔

注意:由于兼容性原因,建议需要使用宝塔面板的用户采用 CentOS 7 系统。本小节将基于该系统进行部署。

登录服务器,执行以下命令即可:

$ wget -O install.sh http://download.bt.cn/install/install.sh
$ bash install.sh

其中,第一条命令是下载一键安装脚本;第二条命令则是执行脚本。

稍等片刻,出现以下提示:

Do you want to install Bt-Panel to the /www directory now?(y/n):

意为询问你是否现在安装宝塔面板到 /www 目录?请输入 y 继续。

随后大概需要 2 分钟左右安装,会有一大堆输出,我们不必关注。

注意:安装过程中,请保证优良的网络环境,若 SSH 连接断开则需要重新来过。

若安装成功,你将会看到如下输出:

==================================================================
Congratulations! Installed successfully!
==================================================================
Bt-Panel: [管理面板 URL]
username: [宝塔面板用户名]
password: [宝塔面板密码]
Warning:
If you cannot access the panel,
release the following port (8888|888|80|443|20|21) in the security group

请记住此处的面板 URL、用户名和密码,稍后我们会用到。

注意:这里的用户名是宝塔面板的专用用户名,并非 root;密码也与 SSH 连接服务器时使用的密码不同,请勿混淆。

注意:若出现无法安装、报错等问题,请到宝塔官方论坛进行提问,或联系其官方寻求技术支持。由于闭源,我无法提供任何帮助。

安全组

为了能够打开 Web 面板的管理页面,需在云服务商管理页面配置安全组,放行 8888 端口,这里有几篇来自宝塔的官方说明可供参考:

你也可以查看云服务商的帮助文档,或是寻求技术支持。

登录管理页

好了,现在你可以打开先前安装成功后展示的面板 URL(通常为 http://<服务器公网IP>:8888),输入用户名、密码并登录。

安装运行环境

登录成功后,将出现默认提示:

这类似于国产安卓机首次打开应用市场时推荐的「装机必备」,你可以根据需要快速选择需要安装的组件。作为演示,我采用 LNMP,并安装以下组件的指定版本:

LNMP = Linux + Nginx + MySQL + PHP

确认无误后,点击 一键安装 即可。

可以看到,宝塔面板已开始自动调度并在后台执行安装任务了:

你可能会发现 CPU 使用率、系统负载迅速飙高,不必担心,这是正常现象。

由于安装过程是完全后台的,所以可以随意关闭这个窗口甚至浏览器,断网也没关系。重新登录后,点击左上角的数字(例如 3⃣️)即可回到安装进度:

安装耗时可能在数分钟到数小时不等,以日常经验来看,喝杯咖啡是足够的。

当你发现左上角的橙底数字变为 0⃣️,或是看到类似下图的页面:

即说明运行环境已经安装完成了。

配置运行环境

首先,请在宝塔管理页面单击左侧菜单内的 网站

点击 添加站点

输入域名等信息,若没有域名可使用服务器公网 IP 代替:

注意:如果你的服务器位于国内,则必须备案后才可通过域名访问;详情请自行搜索「网站备案」。

确认无误后点击 提交,站点即可创建成功:

接下来,请在浏览器内输入服务器的公网 IP(或域名)并打开:

出现类似以上页面,说明运行环境配置成功,接下来可以上传代码、部署项目了。

部署项目

我们首先来尝试最直接的方式 —— 将代码打包成压缩包并上传至服务器解压。

注意:在生产环境中这样做很危险!请关注后续章节。

在开始之前,请在你本地的系统中将示例 Laravel 应用打包为 .zip 压缩包。

随后,在刚刚的列表内,点击新站点的对应目录:

跳转至文件管理后,请点击左上角的 上传 按钮:

选择刚刚打包的 Zip 文件,上传;稍等片刻即可上传成功:

回到文件列表,找到该压缩包并解压:

在弹出窗口内点击 解压 即可。解压成功后,点击解压后的文件夹,全选文件并点击右上角的 剪切

回到上层目录点击右上角的 粘贴所有,将所有文件移动到网站根目录。

最后,我们还需要进行一些特殊配置,点击左侧菜单内的 网站,找到我们的站点,点击右侧的 设置 按钮。

选择设置窗口左侧的 网站目录,运行目录一项请选择 /public 并保存:

伪静态 内,选择 Laravel 5 并保存:

最终效果

在浏览器内刷新运行环境配置成功的页面,你将会看到 Laravel 应用的默认主页:

恭喜你,部署成功。

为什么是宝塔?

上文说到,我个人并不十分喜欢宝塔。相比它,AMH 和 AppNode 代码更加规范可靠,扩展性也更好。但使用一键 Web 面板就是图个简单易用,后续文章介绍的方案将会比 AMH 具有更大的优势,如果你觉得宝塔不够好,说明 Web 面板已经不适合你了,请继续阅读吧。

本作品采用《CC 协议》,转载必须注明作者和本文链接
Former WinForm and PHP engineer. Now prefer Golang and Rust, and mainly working on DevSecOps and Kubernetes.
本帖由系统于 4年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 15

哈哈 你这个可以
是不是下一步 oneinstack :joy:

5年前 评论

@LittleAngel 下一篇就是说的一键脚本:博客:轻松部署 Laravel 应用 | 《02. 一键脚本》,不过这两种方式都不是特别推荐。

5年前 评论

@Wi1dcard 嗯 是的 自己动手安装,修改起来也比较顺手

5年前 评论

宝塔的redis端口6379建议修改,很容易被攻击然后用来挖矿

5年前 评论

@人厶八夂 你redis不会设置密码吗

5年前 评论

@BIBIBABIBO 不会 因为是个人测试服务器,上密码是没事找事

5年前 评论

这个太有用了,谢谢你

4年前 评论

file
楼主你好,请问后续章节里哪里提到了危险的原因?该系列内容有点多,没法快速查找 :joy:Thanks♪(・ω・)ノ

4年前 评论

@select_and_action 原因很多,陆陆续续强调了一些,最直接的是 .env 内的数据原封不动上传到了服务器,调试模式可能没有关闭、APP_KEY 与本地一致(该 Key 应当在生产环境保持唯一且不能够被其它人访问)。

4年前 评论
cnguu

懒人开发神器,线上环境部署还是自己手动命令来管好,博主用的版本挺老的

4年前 评论

@cnguu 如果没记错的话,写文章时用的是最新的。宝塔似乎迭代比较快。

4年前 评论

WDCP的该如何配置laravel的站点

4年前 评论
Wi1dcard (楼主) 4年前
RenCanZhang (作者) 4年前

@Wi1dcard 博主 宝塔部署出现 这样的问题是什么原因failed to open stream: No such file or directory in /vendor/composer/autoload_real.php on line 66

4年前 评论
Wi1dcard (楼主) 4年前

我使用appnode进行lavavel项目部署 现在报错 The Process class relies on proc_open, which is not available on your PHP installation. 请问 这个函数 在appnode的web界面中 该如何修改呢 宝塔是有个对应的修改php禁用函数的界面 这个我找了半天没找到呢 望告知 谢谢

4年前 评论
Wi1dcard (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
67
粉丝
590
喜欢
1236
收藏
1133
排名:13
访问:32.4 万
私信
所有博文
社区赞助商