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 应用了。如果在过程中遇到任何问题,欢迎在评论区留言,我会尽力帮你解决。祝你玩得开心!