【Ubuntu】如何轻松在Apache服务器上部署Laravel博客系统

Laravel 是一个 PHP 框架,和 Angular 以及 Symfony 类似,它能让你快速且高效地搭建出功能强大的网站。在这篇文章里,我将手把手教你如何在 Ubuntu 系统上使用 Apache 和 MySQL 部署 Laravel 应用。

步骤 1:更新系统

首先,咱们得把系统的软件包列表更新一下,并把所有过时的包升级到最新版本。这就好比给你的电脑来一次大扫除,确保一切都能顺畅运行。

bash 复制代码
$ sudo apt update
$ sudo apt upgrade -y

步骤 2:安装必要的软件包

要让 Laravel 能正常工作,你需要先安装一些基本的软件包,比如 Apache、MySQL、PHP 以及一些 PHP 扩展模块。这些就像为 Laravel 准备的食材,缺一不可。

bash 复制代码
$ sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql php-xml php-mbstring php-mcrypt php-curl php-zip

步骤 3:配置 MySQL

现在咱们已经把需要的软件都装好了,接下来就是配置 MySQL 来配合 Laravel 使用。我们会通过运行一个 MySQL 脚本来调整几个安全相关的设置,这个过程就像是给 MySQL 加一把锁,让它更安全。

bash 复制代码
$ sudo mysql_secure_installation

执行上面的命令后,你会被问到一系列问题,按照下面的回答来:

  • 要不要设置 VALIDATE PASSWORD 组件?N
  • 删除匿名用户?Y
  • 禁止 root 用户远程登录?Y
  • 删除测试数据库及其访问权限?Y
  • 现在重新加载权限表?Y

是时候为 Laravel 创建一个数据库和一个新的用户了。让我们先进入 MySQL 控制台吧。

bash 复制代码
$ sudo mysql -u root

接着,你可以创建一个名为 laravel_app 的示例数据库和一个名为 laravel_user 的示例用户。当然,你可以根据自己的喜好更改数据库名和用户名,但一定要记得设置一个更安全的密码哦。

bash 复制代码
mysql> CREATE DATABASE laravel_app;
mysql> CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'changeme';
mysql> GRANT ALL PRIVILEGES ON laravel_app.* TO 'laravel_user'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

步骤 4:安装 Composer

到了这一步,我们该安装 Composer 了,它是用来创建 Laravel 应用的好帮手。跟着下面的脚本走就对了。

bash 复制代码
$ curl -sS https://getcomposer.org/installer | php

之后,我们需要把 "composer.phar " 文件移到 "/bin" 目录下,并赋予它可执行权限,这样就可以直接用 composer 命令啦。

bash 复制代码
$ sudo mv composer.phar /usr/local/bin/composer
$ sudo chmod +x /usr/local/bin/composer

步骤 5:安装 Laravel

终于可以创建 Laravel 项目了!我们就把它命名为 "laravel_proj" 吧。

bash 复制代码
$ composer create-project --prefer-dist laravel/laravel laravel_proj

然后进入项目目录并编辑 ".env" 文件,这是 Laravel 的环境配置文件,相当于它的身份证。

bash 复制代码
$ cd laravel_proj
$ vim .env

在文件中找到以下几行,去掉 # 号以取消注释,并确保它们的值是你刚才设置的数据库名、用户名和密码(如果你用了默认的名字和密码的话)。

bash 复制代码
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_app
DB_USERNAME=laravel_user
DB_PASSWORD=changeme

保存并关闭文件,然后运行下面的命令,利用 "database/migrations" 目录下的迁移文件快速创建数据库表结构,同时实现数据库版本控制。

bash 复制代码
$ php artisan migrate

步骤 6:本地开发

现在你已经可以在本地系统上访问 Laravel 应用了。只需运行以下命令,应用就会在 localhost 的 80 端口上运行。

bash 复制代码
$ sudo php artisan serve --host=localhost --port=80

打开浏览器,输入 "http://localhost/" 就能看到你的 Laravel 应用了。

步骤 7:部署 Laravel 应用

为了把应用部署到服务器上,你需要把 Laravel 目录(我们叫它 "laravel_proj ")移动到 "/var/www/html" 目录下。虽然这不是硬性规定,但这是最传统的方法,我们就这么办吧。

bash 复制代码
$ cd ..
$ sudo mv laravel_proj/ /var/www/html/

接下来,我们递归地把 "www-data " 设置为目录的所有者,并授予 "storage" 目录必要的权限,以便 Laravel 应用能够顺利写入数据。

bash 复制代码
$ sudo chgrp -R www-data /var/www/html/laravel_proj/
$ sudo chmod -R 775 /var/www/html/laravel_proj/storage/

下一步是为 Laravel 应用创建一个 Apache 配置文件。使用下面的命令创建一个 "laravel.conf" 文件。

bash 复制代码
$ sudo nano /etc/apache2/sites-available/laravel.conf

把下面这段代码粘贴进去:

<VirtualHost *:80>

ServerAdmin webmaster@localhost

DocumentRoot /var/www/html/laravel_proj/public

复制代码
<Directory /var/www/html/laravel_proj>  
    Options Indexes FollowSymLinks  
    AllowOverride All  
    Require all granted  
</Directory>  

ErrorLog ${APACHE_LOG_DIR}/error.log  
CustomLog ${APACHE_LOG_DIR}/access.log combined  

保存并关闭文件,别忘了禁用默认的 Apache 配置文件。

bash 复制代码
$ sudo a2dissite 000-default.conf

之后,激活我们为 Laravel 应用创建的配置文件。

bash 复制代码
$ sudo a2ensite laravel.conf

最后,启用 Apache 的 rewrite 模块并重启 Apache 服务,让所有更改生效。

bash 复制代码
$ sudo a2enmod rewrite
$ sudo systemctl restart apache2

步骤 8:允许防火墙

UFW(Uncomplicated Firewall)是预装在 Ubuntu 上的防火墙工具,如果你正在用它管理防火墙规则,记得要开启 Apache 所需的端口,这样才能保证外部可以访问你的网站。

bash 复制代码
$ sudo ufw allow "Apache Full"

结语

好啦,到这里你就完成了 Laravel 应用的部署!你可以通过 IP 地址或域名来访问你的 Laravel 应用了。如果在过程中遇到任何问题,欢迎在评论区留言,我会尽力帮你解决。祝你玩得开心!

相关推荐
报错小能手12 小时前
Swift EventBus讲解
开发语言·ios·swift
aq553560012 小时前
GitSubmodule深度避坑指南
java·开发语言·php
止语Lab12 小时前
Go 的测试框架不想让你 TDD
开发语言·golang·tdd
yaoxin52112312 小时前
391. Java 文件操作基础 - 方法链式调用
java·开发语言·python
t***54412 小时前
如何在 Dev-C++ 中配置 Clang 编译器集
开发语言·c++
小碗羊肉12 小时前
【从零开始学Java | 第四十一篇】深入多线程
java·开发语言
覆东流12 小时前
第7天:Python小项目
开发语言·后端·python
qq_2546177712 小时前
attribute((constructor)) 在C/C++中的应用
开发语言·c++
xyq202412 小时前
HTML5 Input 类型详解
开发语言
云深麋鹿13 小时前
C++ | 多态
开发语言·c++