云端部署实战:从服务器配置到问题解决的全流程指南

前言

在数字化转型的浪潮中,将应用从本地迁移到云端已成为趋势。本指南将带您踏上一场云端部署的实战之旅,从购买服务器开始,逐步深入到云服务器配置、代码上传、效果测试以及一系列常见问题的解决方案。在这个过程中,您不仅会学到如何打包压缩并通过FTP上传代码,还会面对并克服如Ubuntu远程MySQL连接被拒绝、PHP版本升级、文件权限不足导致访问报错等挑战。此外,我们还将探讨如何优化图片访问路径,确保资源正确加载,并介绍使用Git进行线上文件部署的高效方法。无论您是初次尝试云端部署的新手,还是寻求优化现有流程的专业人士,本指南都将为您提供宝贵的实战经验和技巧。

1、购买服务器

由于我们是测试,所以我们可以买按量付费的服务器进行测试:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为我们是测试的所以设置成一个小时后自动释放。
在这里插入图片描述
配置入方向安全组
在这里插入图片描述

返回控制台查看我们云主机的公网ip。

2、云服务器配置

购买完之后,我们用终端连接云服务器,升级软件:
在这里插入图片描述
连接进来之后运行命令 apt update
在这里插入图片描述
更新完之后,安装我们需要的软件:
apt install nginx
在这里插入图片描述


安装 mysql。运行命令apt install mysql-server
在这里插入图片描述


安装phpapt 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 TOKENphp 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、测试效果

接着重启nginxnginx -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的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你华还是你华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值