当前位置:首页 > 文章列表 > 文章 > linux > 阿里云ECS部署Laravel详细教程

阿里云ECS部署Laravel详细教程

2025-08-05 08:15:55 0浏览 收藏

大家好,今天本人给大家带来文章《阿里云ECS部署Laravel项目教程》,文中内容主要涉及到,如果你对文章方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

购买并配置阿里云ECS,选择靠近用户的地域和CentOS/Ubuntu系统,配置安全组开放80、443、22及3306端口;2. 通过SSH连接服务器,安装Nginx或Apache、PHP及扩展、Composer和MySQL/MariaDB;3. 使用FTP或SCP上传Laravel项目至/var/www/html目录,或通过git clone拉取代码;4. 配置Nginx或Apache的虚拟主机,指向项目public目录并设置伪静态规则;5. 进入项目目录执行composer install、复制.env文件、生成APP_KEY、配置数据库信息并运行php artisan migrate;6. 设置storage和bootstrap/cache目录权限为www-data:www-data(Ubuntu)或apache:apache(CentOS);7. 重启Web服务使配置生效,浏览器访问域名或IP验证部署结果;8. 若Nginx伪静态不生效,检查配置语法、root路径、try_files指令、PHP-FPM socket及文件权限;9. 使用Supervisor管理队列,安装后创建配置文件指定artisan queue:work命令、运行用户、进程数和日志路径,再通过supervisorctl加载并启动进程;10. 配置HTTPS需申请SSL证书,修改Nginx或Apache配置启用SSL,设置证书路径并重定向HTTP到HTTPS;11. 安全加固包括及时更新系统、使用强密码、禁用非必要服务、配置防火墙、启用Fail2ban、使用SSH密钥登录并限制登录IP、安装IDS及定期备份数据;所有步骤完成后即可成功部署Laravel项目并保障基本安全与功能稳定。

阿里云 ECS 上部署 Laravel 项目教程(含伪静态配置)

阿里云 ECS 上部署 Laravel 项目,核心在于服务器环境配置、项目上传和伪静态设置。简单来说,就是搭好房子、搬进去、再把门牌号弄对。

解决方案

  1. 购买并配置阿里云 ECS

    • 选择合适的地域和可用区,靠近你的用户可以降低延迟。
    • 操作系统推荐选择 CentOS 或 Ubuntu,这两个系统社区支持完善,遇到问题容易找到解决方案。
    • 配置安全组规则,开放 80 和 443 端口(HTTP 和 HTTPS),以及 22 端口(SSH)。如果需要连接数据库,还需要开放 3306 端口(MySQL)。注意安全,不要开放不必要的端口。
    • 通过 SSH 连接到你的 ECS 服务器。推荐使用工具如 Xshell、SecureCRT 或者直接使用阿里云提供的 Web Terminal。
  2. 安装必要的软件

    • 安装 Web 服务器 (Nginx 或 Apache)

      • Nginx (推荐):

        sudo yum update  # CentOS
        sudo apt update  # Ubuntu
        sudo yum install nginx  # CentOS
        sudo apt install nginx  # Ubuntu
        sudo systemctl start nginx
        sudo systemctl enable nginx
      • Apache:

        sudo yum update  # CentOS
        sudo apt update  # Ubuntu
        sudo yum install httpd  # CentOS
        sudo apt install apache2  # Ubuntu
        sudo systemctl start httpd
        sudo systemctl enable httpd
    • 安装 PHP 和必要的扩展

      sudo yum install php php-fpm php-mysqlnd php-gd php-xml php-mbstring  # CentOS 7
      sudo apt install php php-fpm php-mysql php-gd php-xml php-mbstring  # Ubuntu

      根据 Laravel 的要求,可能还需要安装其他的 PHP 扩展,例如 php-zipphp-curl 等。

    • 安装 Composer

      curl -sS https://getcomposer.org/installer | php
      sudo mv composer.phar /usr/local/bin/composer
    • 安装 MySQL 或 MariaDB

      • MySQL:

        sudo yum install mysql-server  # CentOS 7
        sudo apt install mysql-server  # Ubuntu
        sudo systemctl start mysqld
        sudo systemctl enable mysqld
        sudo mysql_secure_installation  # 安全配置
      • MariaDB:

        sudo yum install mariadb-server  # CentOS 7
        sudo apt install mariadb-server  # Ubuntu
        sudo systemctl start mariadb
        sudo systemctl enable mariadb
        sudo mysql_secure_installation  # 安全配置
  3. 上传 Laravel 项目

    • 使用 FTP 工具 (例如 FileZilla) 或 SCP 命令将你的 Laravel 项目上传到服务器。通常上传到 /var/www/html 目录下。
    • 如果项目使用了 Git 进行版本控制,也可以直接在服务器上 git clone 项目。
  4. 配置 Web 服务器

    • Nginx 配置 (推荐):

      • 创建 Nginx 配置文件 /etc/nginx/conf.d/laravel.conf (文件名可以自定义)。

        server {
            listen 80;
            server_name your_domain.com; # 替换为你的域名或服务器 IP
        
            root /var/www/html/your_project/public; # 替换为你的项目 public 目录
        
            index index.php;
        
            location / {
                try_files $uri $uri/ /index.php?$query_string;
            }
        
            location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据你的 PHP 版本修改
            }
        
            location ~ /\.ht {
                deny all;
            }
        }
      • 重启 Nginx 服务:sudo systemctl restart nginx

    • Apache 配置:

      • 修改 Apache 配置文件 /etc/httpd/conf/httpd.conf (CentOS) 或 /etc/apache2/apache2.conf (Ubuntu)。

      • 确保 AllowOverride All 指令在 块中启用。

      • 在项目根目录下创建或修改 .htaccess 文件,内容如下:

        <IfModule mod_rewrite.c>
            <IfModule mod_negotiation.c>
                Options -MultiViews -Indexes
            </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
            <IfModule mod_headers.c>
                RewriteEngine On
                RewriteCond %{HTTP:Authorization} .
                RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
            </IfModule>
        </IfModule>
      • 重启 Apache 服务:sudo systemctl restart httpd (CentOS) 或 sudo systemctl restart apache2 (Ubuntu)

  5. 配置 Laravel 项目

    • 进入项目目录:cd /var/www/html/your_project
    • 安装依赖:composer install
    • 复制 .env.example 文件并重命名为 .envcp .env.example .env
    • 生成 APP_KEY:php artisan key:generate
    • 配置数据库连接信息,修改 .env 文件中的 DB_HOSTDB_DATABASEDB_USERNAMEDB_PASSWORD
    • 运行数据库迁移:php artisan migrate
    • 设置文件存储权限:sudo chown -R www-data:www-data storage bootstrap/cache (Ubuntu) 或 sudo chown -R apache:apache storage bootstrap/cache (CentOS)
  6. 配置伪静态

    伪静态的配置已经在 Web 服务器配置中完成,Nginx 和 Apache 的配置文件都包含了伪静态规则。

  7. 访问你的网站

    在浏览器中输入你的域名或服务器 IP 地址,如果一切配置正确,你应该能看到你的 Laravel 项目。

Nginx 伪静态配置不生效怎么办?

首先,确认 Nginx 配置文件中的 root 指令指向的是 Laravel 项目的 public 目录。其次,检查 try_files 指令是否正确配置。如果仍然有问题,可以尝试以下方法:

  • 检查 Nginx 配置文件语法错误: 使用 sudo nginx -t 命令检查配置文件是否存在语法错误。
  • 检查 PHP-FPM 配置: 确保 fastcgi_pass 指令指向正确的 PHP-FPM socket 文件。
  • 检查文件权限: 确保 Nginx 用户 (通常是 www-datanginx) 对 Laravel 项目的 storagebootstrap/cache 目录具有读写权限。
  • 清理浏览器缓存: 有时候浏览器缓存会导致页面显示不正确。

如何使用 Supervisor 管理 Laravel 的队列?

Supervisor 是一个进程管理工具,可以用来监控和管理 Laravel 的队列进程。

  1. 安装 Supervisor:

    sudo yum install supervisor  # CentOS
    sudo apt install supervisor  # Ubuntu
  2. 创建 Supervisor 配置文件:

    /etc/supervisor/conf.d/ 目录下创建一个配置文件,例如 laravel-queue.conf

    [program:laravel-queue]
    process_name=%(program_name)s_%(process_num)02d
    command=php /var/www/html/your_project/artisan queue:work --sleep=3 --tries=3
    autostart=true
    autorestart=true
    user=www-data  ; Ubuntu
    ;user=apache   ; CentOS
    numprocs=8
    redirect_stderr=true
    stdout_logfile=/var/www/html/your_project/storage/logs/queue.log
    stopwaitsecs=3600
    • command 指令指定了 Laravel 队列的启动命令。
    • user 指令指定了运行队列进程的用户。
    • numprocs 指令指定了启动的队列进程数量。
    • stdout_logfile 指令指定了队列进程的日志文件。
  3. 更新 Supervisor 配置并启动队列进程:

    sudo supervisorctl reread
    sudo supervisorctl update
    sudo supervisorctl start laravel-queue:*
  4. 检查队列进程状态:

    sudo supervisorctl status

如何配置 HTTPS?

配置 HTTPS 需要申请 SSL 证书,并配置 Web 服务器使用该证书。

  1. 申请 SSL 证书:

    • 可以从阿里云、腾讯云等云服务商购买 SSL 证书。
    • 也可以使用 Let's Encrypt 申请免费的 SSL 证书。
  2. 配置 Nginx 或 Apache 使用 SSL 证书:

    • Nginx:

      修改 Nginx 配置文件,添加 HTTPS 的配置。

      server {
          listen 80;
          server_name your_domain.com;
          return 301 https://$server_name$request_uri; # 将 HTTP 请求重定向到 HTTPS
      }
      
      server {
          listen 443 ssl;
          server_name your_domain.com;
      
          ssl_certificate /path/to/your/ssl_certificate.pem; # 替换为你的 SSL 证书路径
          ssl_certificate_key /path/to/your/ssl_certificate_key.key; # 替换为你的 SSL 证书密钥路径
      
          root /var/www/html/your_project/public;
          index index.php;
      
          location / {
              try_files $uri $uri/ /index.php?$query_string;
          }
      
          location ~ \.php$ {
              include snippets/fastcgi-php.conf;
              fastcgi_pass unix:/run/php/php7.4-fpm.sock;
          }
      
          location ~ /\.ht {
              deny all;
          }
      }
    • Apache:

      修改 Apache 配置文件,启用 SSL 模块并配置 SSL 证书。

      <VirtualHost *:443>
          ServerName your_domain.com
          DocumentRoot /var/www/html/your_project/public
      
          SSLEngine on
          SSLCertificateFile /path/to/your/ssl_certificate.crt # 替换为你的 SSL 证书路径
          SSLCertificateKeyFile /path/to/your/ssl_certificate_key.key # 替换为你的 SSL 证书密钥路径
      
          <Directory /var/www/html/your_project>
              AllowOverride All
          </Directory>
      </VirtualHost>
  3. 重启 Web 服务器:

    重启 Nginx 或 Apache 服务,使配置生效。

如何进行服务器安全加固?

服务器安全加固是一个持续的过程,需要不断地更新和调整。以下是一些常见的安全加固措施:

  • 更新系统和软件: 及时更新操作系统和软件,修复安全漏洞。
  • 使用强密码: 使用强密码,并定期更换密码。
  • 禁用不必要的服务: 禁用不必要的服务,减少攻击面。
  • 配置防火墙: 使用防火墙限制网络访问,只允许必要的端口开放。
  • 安装入侵检测系统 (IDS): 安装入侵检测系统,监控服务器的安全事件。
  • 定期备份数据: 定期备份数据,防止数据丢失。
  • 使用 SSH 密钥登录: 使用 SSH 密钥登录,禁用密码登录。
  • 限制 SSH 登录 IP: 限制 SSH 登录 IP,只允许特定的 IP 地址登录。
  • 配置 Fail2ban: 使用 Fail2ban 防止暴力破解。

部署 Laravel 项目到阿里云 ECS 上可能遇到的问题很多,但只要耐心排查,总能找到解决方案。 记住,遇到问题多查资料,多尝试,不要轻易放弃。

本篇关于《阿里云ECS部署Laravel详细教程》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

豆包AI优化Nginx高并发的5个步骤豆包AI优化Nginx高并发的5个步骤
上一篇
豆包AI优化Nginx高并发的5个步骤
JavaScriptreduce方法使用教程
下一篇
JavaScriptreduce方法使用教程
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    499次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • PandaWiki开源知识库:AI大模型驱动,智能文档与AI创作、问答、搜索一体化平台
    PandaWiki开源知识库
    PandaWiki是一款AI大模型驱动的开源知识库搭建系统,助您快速构建产品/技术文档、FAQ、博客。提供AI创作、问答、搜索能力,支持富文本编辑、多格式导出,并可轻松集成与多来源内容导入。
    36次使用
  • SEO  AI Mermaid 流程图:自然语言生成,文本驱动可视化创作
    AI Mermaid流程图
    SEO AI Mermaid 流程图工具:基于 Mermaid 语法,AI 辅助,自然语言生成流程图,提升可视化创作效率,适用于开发者、产品经理、教育工作者。
    847次使用
  • 搜获客笔记生成器:小红书医美爆款内容AI创作神器
    搜获客【笔记生成器】
    搜获客笔记生成器,国内首个聚焦小红书医美垂类的AI文案工具。1500万爆款文案库,行业专属算法,助您高效创作合规、引流的医美笔记,提升运营效率,引爆小红书流量!
    864次使用
  • iTerms:一站式法律AI工作台,智能合同审查起草与法律问答专家
    iTerms
    iTerms是一款专业的一站式法律AI工作台,提供AI合同审查、AI合同起草及AI法律问答服务。通过智能问答、深度思考与联网检索,助您高效检索法律法规与司法判例,告别传统模板,实现合同一键起草与在线编辑,大幅提升法律事务处理效率。
    882次使用
  • TokenPony:AI大模型API聚合平台,一站式接入,高效稳定高性价比
    TokenPony
    TokenPony是讯盟科技旗下的AI大模型聚合API平台。通过统一接口接入DeepSeek、Kimi、Qwen等主流模型,支持1024K超长上下文,实现零配置、免部署、极速响应与高性价比的AI应用开发,助力专业用户轻松构建智能服务。
    949次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码