轻松部署 Laravel 应用 | 《02. 一键脚本》
:clap: 本系列持续更新中,欢迎关注:https://github.com/wi1dcard/laravel-deploy...。
由于课程上下文关联比较紧密,在开始前请先阅读 本文。
你的支持是我写作的动力;关注我的客官们,请在右上角点个赞,将会让文章在首页展示,帮助更多人。
感谢 :clap: !
书接上回。上篇文章介绍了 Web 管理面板的安装与使用,本节将会介绍使用一键安装脚本。
广义上来讲,Web 管理面板也是一键脚本的一种;只不过安装好之后,Web 面板通过网页管理,而一键脚本则是通过执行命令管理。虽然前者通常具备美观、易操作的 GUI,但相比之下缺点也很明显:
- 需要单独放行端口(配置安全组),不仅麻烦,还给黑客以可乘之机;无论是面板存在漏洞还是你的密码强度不足,都有可能造成服务器沦陷为肉鸡。
- 市面上常见的 Web 面板几乎都是由「集中」的组织或公司开发并闭源,而非开源社区维护;这就造成我们不易看到源码,遇到问题无从查起,更别说提交贡献了。
常见的一键脚本
GitHub 搜索 lnmp
关键字,排名靠前的有:
十分出人意料的是,以上项目均由国人开发,但这不是一件值得骄傲的事情 —— 部署技术依旧停留在一键脚本的「上古世纪」。
在众多的一键脚本中,有一款是咱们 Laravel-China 站长 Summer 编写的 summerblue/laravel-ubuntu-init,本篇将基于该脚本进行部署,原因请见文末。
安装运行环境
注意:由于兼容性原因,建议需要使用该脚本的用户采用 Ubuntu 16.04 系统。本小节将基于该系统进行部署。
登录服务器后,输入以下命令:
$ wget -qO- https://raw.githubusercontent.com/summerblue/laravel-ubuntu-init/master/download.sh - | bash
稍等片刻,将会出现以下提示:
===> 开始下载...
===> 下载完毕
安装脚本位于: /root/laravel-ubuntu-init
===> 正在初始化系统...
继续等待。
===> 正在初始化系统... [DONE]
===> 正在初始化软件源... [DONE]
===> 正在安装基础软件... [DONE]
===> 正在安装 PHP... [DONE]
===> 正在安装 Mysql / Nginx / Redis / Memcached / Beanstalkd / Sqlite3... [DONE]
===> 正在安装 Nodejs / Yarn... [DONE]
===> 正在安装 Composer... [DONE]
安装完毕
Mysql root 密码:gBRCuFTpGaorATvBybAHZYVIlteFsSB1
请手动执行 source ~/.bash_aliases 使 alias 指令生效。
出现以上输出,说明安装成功。注意保存密码,切勿丢失。随后请执行:
$ source ~/.bash_aliases
这样,运行环境就安装完成了。
配置运行环境
首先,我们需要增加 Nginx 站点:
$ ~/laravel-ubuntu-init/16.04/nginx_add_site.sh
根据提示,输入一些信息并回车:
请输入项目名:deployment
请输入站点域名(多个域名用空格隔开):laravel-deployment.wi1dcard.cn
请注意,站点名称(项目名)仅允许英文、数字、-
和 _
组合。另外,与上文宝塔面板类似,站点域名也可以使用公网 IP 代替。
请注意以下输出:
域名列表:laravel-deployment.wi1dcard.cn
项目名:deployment
项目目录:/var/www/deployment
是否确认? [y/N]
记住此处的项目目录,后续将会使用。检查无误后,输入 y
并回车。
没什么问题的话,将会看到成功提示:
配置文件创建成功
Nginx 重启成功
接下来,请在浏览器内输入服务器的公网 IP(或域名)并打开:
出现 Welcome to Nginx!
字样的提示,说明运行环境配置成功,Nginx 已经开始提供服务了。
部署项目
由于没有 Web 管理页面,所以本小节,我们采用基于 SSH 的 SCP 协议上传项目代码。
注意:在生产环境中这样做很危险!请关注后续章节。
请在 本地 的 Laravel 应用根目录执行以下命令:
$ scp -r . root@laravel-deployment.wi1dcard.cn:/var/www/deployment
其中:
scp
是文件传输命令。-r
表示传输整个目录以及其子目录内的文件。.
表示当前目录,该目录位于本地。root@laravel-deployment.wi1dcard.cn
与本课程开篇「登录服务器」类似,请替换为你的服务器公网 IP 或域名。/var/www/deployment
便是上文提到需要你记住的项目目录,该目录位于服务器端。
传输需要一段时间,你会看到一大堆输出,当没有新的文件进度展示时说明已经传输完成。
好了,现在请刷新运行环境配置成功后、包含 Welcome to Nginx!
字样的页面:
出现报错,不要慌。这是一种部署过程中十分常见的错误 —— Permission Denied
,意为没有权限。当出现类似字词时,你就需要检查 权限 相关配置了。
由于在服务器端运行 PHP 的并非根用户,而我们刚刚传输文件时使用的是 root
,因此需进行修改。
请登录到服务器,执行以下命令:
$ chown -R www-data:www-data /var/www/deployment
其中:
chown
命令用于修改文件或目录拥有者。-R
表示整个目录以及其子目录内的文件(与scp -r
类似)。www-data:www-data
表示分别将拥有者与拥有组设置为www-data
用户和www-data
用户组。/var/www/deployment
与scp
时使用的目录一致。
稍等几秒钟,虽然没有任何输出,但这是正常现象。许多传统 Unix 命令均为「沉默即成功」;相反,若是出现任何提示或许就是警告或错误。
最终效果
在浏览器内刷新刚刚报错的页面,你将会看到 Laravel 应用的默认主页:
恭喜你,部署成功。
为什么不是 Star 更多的那些?
一键脚本通常使用 Shell 语言编写(与我们输入的命令是同一种语言),其中的逻辑十分复杂,加之 Shell 语言起源于几十年前、可读性较差,鉴于后续文章中将会剖析脚本中做了什么,所以选择讲解专为 Laravel 开发的简易一键脚本,也方便大家自行研究探索。
本作品采用《CC 协议》,转载必须注明作者和本文链接
能否详细说下 443 https 的配置吗?活着 生成 HTTPS 的证书?
File not found.