一个已经去世的应用重获新生,需要在服务端重新部署,因此就有了这篇文章。

服务器环境

  • 系统:Ubuntu 20.04
  • CPU:4核 Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz
  • 内存:8G

前置工作

Ubuntu 20.04只有php7.2,但我至少需要php7.4,因此先更新php源:

sudo add-apt-repository ppa:ondrej/php

然后安装HTTP服务器、Mysql、PHP、以及Laravel的一些依赖。

sudo apt install apache2 \
mysql-server \
php7.4 \
libapache2-mod-php7.4 \
php7.4-mysql \
php7.4-opcache php7.4-mbstring \
php-ssh2 php-tokenizer \
php7.4-xml php7.4-json \
php7.4-bcmath php7.4-zip \
php7.4-curl php7.4-gd

将项目文件解压到/var/www/目录下

unzip finelyteam.zip
sudo mv finelyteam /var/www/finelyteam

配置Apache

配置VirtualHost

配置Apache网站文件/etc/apache2/sites-available/finelyteam.conf

<VirtualHost *:80>
ServerAdmin root@localhost
ServerName dev.finely-team.com
DocumentRoot /var/www/finelyteam/public

ErrorLog ${APACHE_LOG_DIR}/error.finely-team.log
CustomLog ${APACHE_LOG_DIR}/access.finely-team.log combined
</VirtualHost>

启用VirtualHost

sudo a2ensite finelyteam.conf

启用Apache模块

sudo a2enmod php7.4 ssl rewrite

编辑apache全局设置

编辑文件/etc/apache2/apache2.conf,注意AllowOverride选项变更为all

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>

重启 Apache 服务

sudo service apache2 restart

配置MySQL

生成管理员用户

为了让PHP访问数据库,我们需要生成一个MySQL用户。 MySQL初始只允许root免密登录。这是不安全的,而且Laravel应用无法使用这个账户。

MySQL cli里执行以下指令以生成用户并赋予所有权限。

CREATE USER laravel_admin@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO laravel_admin@localhost;
FLUSH PRIVILEGES;

添加数据库

CREATE DATABASE finelyteam;

配置PostgreSQL

安装PHP驱动

如果你安装的不是mysql而是pgsql,则需要安装php驱动:

sudo apt install php7.4-pgsql

进入cli时不能使用root用户,只能使用特定用户:postgres

su postgres
psql

创建管理员用户

create user laravel_admin superuser password '123456';

创建数据库

CREATE DATABASE laravel;

配置PHP

安装Composer

ComposerPHP的包管理工具。

sudo apt-get remove composer # 不要使用 Ubuntu 库中的Composer
cd # 回家
curl -sS https://getcomposer.org/installer | php
mv ./composer.phar /usr/local/bin/composer
# 如果提示 'Failed to decode zlib stream' 则执行
# sudo apt install zlib

Composer换源与安装

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ # 切换国内 Composer 镜像
cd /var/www/finelyteam
composer update # 自动安装

配置Laravel

DOT ENV

现在来到Laravel项目的文件夹下,先生成.env文件。

cd /var/www/finelyteam
mv .env.example .env
php artisan key:generate # 生成 APP KEY

如果之前使用的是pgsql,则需要修改数据库连接,尤其是端口:

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=laravel_admin

目录权限

为以下目录分配权限以保证访问正常。

sudo chmod -R 777 public storage bootstrap/cache

数据库迁移

php artisan migrate --seed

All done.