本文目录
前言
在数字化转型的浪潮中,将应用从本地迁移到云端已成为趋势。本指南将带您踏上一场云端部署的实战之旅,从购买服务器开始,逐步深入到云服务器配置、代码上传、效果测试以及一系列常见问题的解决方案。在这个过程中,您不仅会学到如何打包压缩并通过FTP上传代码,还会面对并克服如Ubuntu远程MySQL连接被拒绝、PHP版本升级、文件权限不足导致访问报错等挑战。此外,我们还将探讨如何优化图片访问路径,确保资源正确加载,并介绍使用Git进行线上文件部署的高效方法。无论您是初次尝试云端部署的新手,还是寻求优化现有流程的专业人士,本指南都将为您提供宝贵的实战经验和技巧。
1、购买服务器
由于我们是测试,所以我们可以买按量付费的服务器进行测试:
因为我们是测试的所以设置成一个小时后自动释放。
配置入方向安全组
返回控制台查看我们云主机的公网ip。
2、云服务器配置
购买完之后,我们用终端连接云服务器,升级软件:
连接进来之后运行命令 apt update
更新完之后,安装我们需要的软件:
apt install nginx
安装 mysql
。运行命令apt install mysql-server
:
安装php
。apt install php
运行命令apt install php7.4-fpm
。(进行ftp
上传需要,当然也可以使用git
进行上传,我们这使用ftp
演示)
安装php
相关扩展:apt install php7.4-xml
apt install php7.4-mysql
apt install composer
3、打包压缩ftp上传代码
我们将根目录下的vendor
删除,这个第三方的包文件较大,我们删掉之后再云服务器下composer
再安装。
接着在虚拟机里code
文件夹下压缩我们的项目:
tar -zcvf shopProjectApi.tar.gz ./shopProjectApi
我们需要将shopProjectApi.tar.gz
传输到我们远程的云服务器上。
运行命令:scp shopProjectApi.tar.gz root@39.107.140.29:/tmp
然后输入密码
可以看到已经传输完成了。
查看远程服务器就有这个文件:
接下来把这个文件移动:mv /tmp/shopProjectApi.tar.gz /var/www/
运行命令解压:tar -zxvf shopProjectApi.tar.gz
运行composer install
安装依赖项:报错缺少什么就安装什么。
apt install php7.4-curl
apt install php7.4-dom
然后再composer install
接着发布配置:
1、
cp .env.example .env
2、修改.env
配置,主要是数据库配置等
3、发布DingoApi
配置:php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
4、发布JWT
配置:php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
5、生成JWT TOKEN
:php artisan jwt:secret
6、发布权限相关配置:php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"
但是数据库配置有问题,我们配置的是虚拟机的,而云服务器上还没配置,接下来配置下:
可以看到我们数据的密码和名称。
接下来我们先去创建一个数据库:
接着exit
推出。
编辑.env
文件:nano .env
:
control + x
推出输入Y
保存退出。
7、运行迁移同事填充数据:
php artisan migrate --seed
接着修改nginx
配置:nano /etc/nginx/sites-available/default
服务器:
try_files $uri $uri/ /index.php?$query_string;
control + x
推出输入Y
保存退出。
输入命令nginx -t
查看配置是否正确:
4、测试效果
接着重启nginx
:nginx -s reload
重启后访问发现报错:
可以看到我们项目已经部署到线上了。
5、Ubuntu远程Mysql 61“Connection refused”
Ubuntu 20.04.1线上数据库mysql连不上,有可能是线上mysql的配置为只本地访问到,我们需要修改线上mysql的配置,运行命令cd /etc/mysql/mysql.conf.d
,然后运行命令sudo nano mysqld.cnf
:
找到:bind-address = 127.0.0.1
改为:bind-address = 0.0.0.0
control + x
保存退出后,输入命令sudo systemctl restart mysql.service
重启mysql
。
如果还是连接不上的话,就查看防火墙mysql
的端口是否开放。
6、Ubuntu更新php8
运行命令sudo add-apt-repository ppa:ondrej/php && sudo apt-get update
Tips: 有报错请看,无报错忽略
报错sudo: add-apt-repository: command not found
解决:先运行命令apt-get -y install software-properties-common
,再执行命令sudo add-apt-repository ppa:ondrej/php && sudo apt-get update
,提示按enter
就按enter
。
接着运行sudo apt install php8.2.9
具体看你安装哪个版本,接着安装相对应的扩展只需将版本号加上即可。例如:apt install php8.2.9-curl
7、线上部署Permission denied
7.1、部署完之后访问域名出现报错:
UnexpectedValueException
The stream or file "/var/www/furniture-maintenance-api/storage/logs/laravel.log" could
not be opened in append mode: Failed to open stream: Permission denied The exception
occurred while attempting to log: The stream or file "/var/www/furniture-maintenance-
api/storage/logs/laravel.log" could not be opened in append mode: Failed to open
stream: Permission denied The exception occurred while attempting to log: The
/var/www/furniture-maintenance-api/bootstrap/cache directory must be present and
writable. Context: {"exception":{}} Context: {"exception":{}}
权限不足,我们运行命令:chmod -R 777 storage
7.2、The /bootstrap/cache directory must be present and writable.
部署完之后报错The /bootstrap/cache directory must be present and writable.
运行命令php artisan cache:clea
:
8、图片访问404
如果发现部署线上图片访问404,那么我们运行命令php artisan storage:link
,如果还是不行的话那么将/public
下的storage
删了,重新运行这个命令php artisan storage:link
。
如果还是404的话,请查看线上storage/app/public
是否有文件。
9、git部署线上文件
先将本地代码进行git
仓库连接(此步骤可以网上搜索)。
在终端进行ssh root@你的公网ip
输入密码,进行连接线上服务器后,进入到目录/var/www
后我们把刚刚本地代码克隆下来:
git clone 你本地代码的远程仓库连接
,这样就完成了git
部署线上文件。
在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。