监控系统实践第11天:配置Laravel8.5与开关网站方法
Posted 家铭didphp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了监控系统实践第11天:配置Laravel8.5与开关网站方法相关的知识,希望对你有一定的参考价值。
监控系统实践第11天:配置Laravel8.5与开关网站方法
昨天部署了Laravel8.5
的站点,可以正常访问了。
今天来稍微细说一下配置与维护的方法,相当于是对昨天的一个补充了。
如果不知道怎么使用Composer
下载Laravel
,记住今天的内容就够了。
补充强调Laravel的安装方法
之前是用Composer
下载了Laravel 8.5
的最新版本,当时知道最新版本是8.5.18
,使用的命令是:
composer create-project --prefer-dist laravel/laravel=8.5.18
这个命令指定了版本,执行后,会在当前的文件夹内创建一个名为laravel
的文件夹,同时会把Laravel 8.5.18
的文件放进去。
有一点一定要注意,官方说通过Composer
下载的Laravel
框架文件,是有.env
这个文件的,实际是没有的!
如果说我现在不知道最新的版本号,但是我就是想要最新版本,而且就要在之前的文件夹里下载,不想影响到之前创建的laravel
文件夹,怎么操作呢?
这样操作:composer create-project laravel/laravel 文件夹名称
,即原先的--prefer-dist laravel/laravel=8.5.18
修改为laravel
,最后面加上你想要的文件夹名称。
比如我现在不知道最新版本号是什么,我想把文件夹名称定为laravel_last
,我输入这个即可:
composer create-project laravel/laravel laravel_last
记住,使用Composer
下载的Laravel
,是没有.env
的,一样要去Laravel
的github
上下载这个文件,文件地址为:https://raw.githubusercontent.com/laravel/laravel/8.x/.env.example
Linux 下使用 wget 软件下载这个:
wget https://raw.githubusercontent.com/laravel/laravel/8.x/.env.example
Windows 下直接浏览器打开这个网址,另存为文件就行。
下载完.env
文件后,将其放到Laravel
框架的根目录即可。
完整的配置Laravel框架
还记得昨天提到的需要修改Laravel
文件权限的方法,才能让Laravel
正常运行的方法吗?
记得的,你的记性真好!不记得,你最好不要翻回去看了,记不住最好了!
为什么这么说呢?因为昨天只是用宝塔进行了一个粗略的配置,下面要详细的介绍完整的配置方法了,而且是不用宝塔的。
现在来操作一把。
我的Laravel
文件所在目录:/www/wwwroot/laravel.didphp.com
第一步,处理文件夹storage
。
我要确保框架的根目录下存在文件夹storage
, 这个文件夹是存放框架产生的日志
、缓存
、文件
的。
它与它的子文件夹非常重要,如果缺少,框架也是运行不起来的,会直接报错。
检查一下它与它的子文件夹是不是这样的层级关系,如果缺少,自建文件夹补上:
/app
/app/public
/framework
/framework/cache
/framework/cache/data
/framework/sessions
/framework/testing
/framework/views
/logs
- 因为之前从公司的 git 上拉下来的,习惯性的忽略了有日志的目录,缺少了这些文件夹,现在补上:
cd /www/wwwroot/laravel.didphp.com/
cd storage/
mkdir ./app
mkdir ./app/public
mkdir ./framework
mkdir ./framework/cache
mkdir ./framework/cache/data
mkdir ./framework/sessions
mkdir ./framework/testing
mkdir ./framework/views
mkdir ./logs
第二步,确保文件夹权限用户组是否为www
,同时是否存在读写权限
整个网站目录,及网站目录下的子目录、子文件的权限,一定得属于用户组www
下的用户www
的。
为什么不是别的用户组和别的用户?因为宝塔会自动创建一个名为www
的用户组,然后再创建一个名为www
的用户,专门用来处理web
服务的。
设置网站目录及其子目录、子文件为www:www
权限:
chown -R www:www /www/wwwroot/laravel.didphp.com
执行后返回:
chown: changing ownership of ‘/www/wwwroot/laravel.didphp.com/public/.user.ini’: Operation not permitted
发现并不是很顺利,有个文件阻碍了它的顺利操作,这个文件是在用宝塔添加网站时,宝塔自动创建的文件:.user.ini
。
这个问题也不是很大,只是文件被锁定了而已,解锁就行:
chattr -i /www/wwwroot/laravel.didphp.com/public/.user.ini
解完锁,再来重新设置用户组权限:
chown -R www:www /www/wwwroot/laravel.didphp.com
刚才.user.ini
被锁定,为了设置用户组权限,就把它解锁了。
可能有人不知道这个文件为什么是锁定的,也不知道解锁后有没有什么影响,不确定是不是要锁回去。
这个时候不要慌,不要急着给它锁回去,因为还需要给文件夹设置读写权限,这个时候锁回去了,等下又得再解锁。
刚才操作完了用户组权限,现在来继续来操作读写权限。
我这里先给网站目录及其子目录、子文件一个755
的权限:
chmod -R 755 /www/wwwroot/laravel.didphp.com/
再来给存放日志
、缓存
、文件
的目录storage
以及它的各个子文件夹一个777
权限,不然到时候文件写不进去,影响网站运行:
chmod -R 777 /www/wwwroot/laravel.didphp.com/storage/
实际上,还有一个文件和一个文件夹是需要给权限的,只是通常它们都是有权限的,所以官网文档里没有特意的提到,这里我提出来,只是预防偶然发生的文件没权限的问题发生。
它们就是根目录下的文件.env
以及文件夹config
。
有时候,单纯的使用Laravel
框架自带的命令,或者第三方类库的命令会有文件读写涉及到这两个地方,为了以防万一,也要给它们权限:
chmod -R 777 /www/wwwroot/laravel.didphp.com/.env
chmod -R 777 /www/wwwroot/laravel.didphp.com/config/
最后我们把一开始影响设置权限的.user.ini
锁回去:
chattr +i /www/wwwroot/laravel.didphp.com/public/.user.ini
好了,到这里就把文件的权限都设置了,看看最终的文件权限效果图:
第三步,生成Laravel框架密钥
Laravel
框架为了有更高的安全性,会要求用户生成一个密钥,如果密钥为空,网站是不能运行的。
这个密钥要执行的前提是,根目录的.env
必须有可写
的权限。
事先已经给.env
赋予过777
的完全读写权限,所以这里不用担心,直接到框架的根目录,执行生成密钥的命令即可:
php artisan key:generate
当出现Application key set successfully.
时,代表生成成功。
第四步:通过宝塔运行网站
不管你的Laravel
文件放在哪里,不管你用什么域名,也不管你是用nginx
还是Apache
,要跑Laravel
,运行目录一定要指向框架根目录下的文件夹:public
。
如果你用的是 Nginx,网站配置文件的server {}
段中,有一段
location / {
try_files $uri $uri/ /index.php$is_args$query_string;
}
比如我的就是Nginx配置文件就是
server
{
listen 80;
server_name laravel.didphp.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/laravel.didphp.com/public;
location / {
try_files $uri $uri/ /index.php$is_args$query_string;
}
#禁止访问的文件或目录
location ~ ^/(\\.user.ini|\\.htaccess|\\.git|\\.svn|\\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \\.well-known{
allow all;
}
location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
access_log /www/wwwlogs/laravel.didphp.com.log;
error_log /www/wwwlogs/laravel.didphp.com.error.log;
}
如果你用的是 Apache
,在运行目录public
下新建一个.htaccess
文件,内容填这些就可以了:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
其它的配置
还有一些其它的配置,比如时区、开发模式等,今天就不一一讲解了,因为这些跟Laravel的命令:php artisan config:cache
以及方法env()
、config()
存在一些关系,如果一开始就讲了,容易误导人。
开关网站的方法
所谓开关网站,无非就是开启与关闭网站。
官网文档叫这个为维护模式,开启维护模式就是开启网站,关闭维护模式就是关闭网站的意思。
不是我故意叫得这么高端,是中文社区的文档是这么翻译的。
开启维护模式后,使用框架编写的web端将不可访问,cli脚本不受影响。
开启维护模式,也就是关闭网站的命令是:
php artisan down
执行成功后,返回内容:Application is now in maintenance mode.
同时网站返回HTTP 503
的错误页面
关闭网站后,用户无法正常访问网站,这个时候可以做一些维护之类的工作了。
关闭启维护模式,也就是开启网站的命令是:
php artisan up
执行成功后,返回内容:Application is now live.
记得开启与关闭维护模式的命令,都需要到框架根目录下执行。
最后小结
如果全部按今天这个操作,整个Laravel
框架是可以完美运行的。
还有最后的维护模式实际不止那些。比如我不想返回503
也是可以的,维护模式是可以指定返回的HTTP状态码
的。
比如我想返回404
:
php artisan down --status=404
实际也不止这些,除了可以返回指定的状态码,还可以跳转到指定的URL上,指定的页面上,碍于时间关系,这里就不一一列举了。
以上的阐述只对有基础的朋友有作用,如果对以上的知识点有质疑或者不懂的可以在下方留言。
以上是关于监控系统实践第11天:配置Laravel8.5与开关网站方法的主要内容,如果未能解决你的问题,请参考以下文章
监控系统实践第10天:用宝塔部署Laravel8.5框架的站点
监控系统实践第9天:使用Composer下载Laravel8.5
监控系统实践第15天:5天上手Laravel8.5之HTTP请求篇(4/5)
监控系统实践第15天:5天上手Laravel8.5之HTTP请求篇(4/5)