为什么写这篇文章

完成 第二套 教程后,正好手上有一台闲置的服务器,所以就想着搭建到服务器上。一开始以为很简单(因为之前弄过一次),没想到还是弄了快一天才弄好。所以这里记录一下这次的搭建过程,以便下次省点力。
本次搭建的环境为 Ubuntu 18.04 LTS 。我会从初始化开始到安装软件再到部署 Laravel 代码。

注:本文命令全在 root 用户下执行,如果你的是普通用户,命令执行不成功,请在命令前面加上 sudo

安装软件

我是用的是 LNMP 所以要安装 NginxMySQLPHP。因为涉及到缓存,故要安装 Redis。另外还要安装版本控制工具:Git 和 PHP 包管理工具:Composer

更新软件源

安装软件之前,我们先要更新软件源:

  1. $ apt update

然后升级软件

  1. $ apt upgrade

输入 Y 或者直接回车,开始升级。

本地化配置

修改本地配置为 en_US.UTF-8

  1. $ locale-gen en_US.UTF-8
  2. $ update-locale LC_ALL=en_US.UTF-8

修改时区

  1. $ timedatectl set-timezone Asia/Shanghai

安装 Nginx

使用如下命令安装 Nginx :

  1. $ apt install nginx -y

这里添加了 -y 选项,表示同意下载软件,不会询问你是否同意安装软件,下同。

查看是否安装成功

  1. $ nginx -v
  2. # 输出
  3. nginx version: nginx/1.14.0 (Ubuntu)

在 80 向外开放的前提下(在安全组中加上 80 端口),在浏览器中输入服务器的公网 IP ,会出现 Nginx 欢迎页面,则代表 Nginx 运行成功。

安装 PHP

添加软件源

由于 Ubuntu 的官方软件源通常不包含最新版本的 PHP,因此需要添加一个包含最新 PHP 的第三方软件源。
在添加之前,我们首先安装名为 software-properties-common 的软件包,它提供了快速管理软件源的实用脚本:

  1. $ apt install -y software-properties-common

随后,执行以下脚本添加第三方 PHP 软件源:

  1. $ add-apt-repository -y ppa:ondrej/php

成功后别忘记刷新:

  1. $ apt-get update

安装 PHP 及其 拓展

我这里安装的是 PHP 7.4。执行下列命令,安装 PHP 及其拓展:

  1. $ apt install -y php7.4 php7.4-cli php7.4-fpm php7.4-mbstring php7.4-xml php7.4-bcmath php7.4-curl php7.4-gd php7.4-mysql php7.4-opcache php7.4-zip php7.4-sqlite3

查看 PHP 是否安装成功:

  1. $ php -v
  2. # 输出
  3. Copyright (c) The PHP Group
  4. Zend Engine v3.4.0, Copyright (c) Zend Technologies
  5. with Zend OPcache v7.4.6, Copyright (c), by Zend Technologies

安装 MySQL

执行如下命令安装 MySQL:

  1. $ apt install mysql-server -y

安装 MySQL 是我遇到的第一个坑,因为这里不会像安装其他 MySQL 版本一样提示设置 root 密码,而是通过一个脚本来进行交互。前前后后弄了半天也弄不好。好在找到这篇 文章 解决了这个问题。
查看 MySQL 是否安装成功

  1. $ mysql --version
  2. # 输出
  3. mysql Ver 14.14 Distrib 5.7.30, for Linux (x86_64) using EditLine wrapper

安装 Redis

执行如下命令安装 Redis:

  1. $ apt install redis -y

安装完成后,使用命令 redis-cli ping 输出 PONG 则代表 安装成功。

安装 Git

  1. $ apt install -y git

查看 Git 是否安装成功

  1. $ git --version
  2. # 输出
  3. git version 2.17.1

安装 composer

  1. $ wget https://raw.githubusercontent.com/composer/getcomposer.org/master/web/installer -O - -q | php -- --filename=composer --install-dir=/usr/local/bin

这个下载可能有慢一点,建议多等一会。
检查是否安装成功:

  1. $ composer -V
  2. # 输出
  3. Composer version 1.10.6 2020-05-06 10:28:10

配置 composer 镜像源:

  1. $ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

全局下载 Composer 多线程下载的工具:

  1. $ composer global require hirak/prestissimo

使用 systemctl 管理服务

安装完软件后,我们还要知道如何使用安装的服务,在 Linux 中,我们可以使用 systemctl 来管理服务的启动/开机启动与查看状态。
systemctl 的使用方法为:

  1. $ systemctl [command] [unit]
  2. command 主要有:
  3. start : 立即启动 unit
  4. stop : 立即关闭 unit
  5. restart : 重新启动 unit,即先执行 stop 在执行 strat 的意思
  6. reload : 不关闭 unit 的情况下,重新加载配置文件,让设置生效
  7. enable : 打开 unit 下次开机自启
  8. disable : 关闭 unit 下次开机自启
  9. status : 查看 unit 的状态

这里的 unit 则代表服务,例:Nginx 的服务就是 nginx.server 。

注意:PHP 的服务是 php7.4-fpm.service ,PHP-FPM 是用户管理 PHP 进程,并提供 FastCGI 接口与 Nginx 交互;浏览网页时的请求便是由 Nginx 交由 PHP-FPM 处理的。

查看 nginx 状态:

  1. $ systemctl status nginx.server
  2. # 会输出如下信息。
  3. nginx.service - A high performance web server and a reverse proxy server
  4. Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
  5. Active: active (running) since Fri 2020-05-22 15:40:36 CST; 2min 17s ago
  6. .
  7. .
  8. .
  • Loaded:说明 nginx 是否开机自启,enabled 为开机自启,disabled 开机不会启动。可以看到 第二个选项是 enabled 说明是开机自启(注意,不要看到最后一个选项了,那是 vendor preset ,意为供应商预设)。如果是 disabled ,执行 systemctl enable nginx 命令来达到开机自启。
  • Active:说明 Nginx 是正在执行(running)还是没有执行(dead)。如果为 dead 的话,执行 systemctl start nginx 命令来启动 Nginx。

    部署代码

    在部署代码之前,我们先创建数据库: ``` $ mysql -u root -p

    输入密码进入 mysql

    创建数据库

    mysql> CREATE DATABASE [your_databases_name] DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. 拉取代码,并进行基础配置

切换至 www 目录

$ cd /var/www

使用 Git 拉取代码

$ git clone https://gitee.com/good_man_yikang/laraveltow.git

进入项目目录

$ cd laraveltow

使用 composer 安装依赖,不下载开发下的依赖

$ composer install —optimize-autoloader —no-dev

生成 .env 文件

$ php -r “file_exists(‘.env’) || copy(‘.env.example’, ‘.env’);”

生成 APP_KEY

$ php artisan key:generate —ansi

修改目录文件用户和用户组

$ chown -R www-data:www-data .

修改文件权限

$ chmod -R 750 . $ chmod -R 770 storage bootstrap/cache

  1. 根据自己的实际情况配置 `.env` 文件,线上的话要将 `APP_ENV` 设置为 `production`(生产环境),`APP_DENUG` 设置为 `false`。<br />配置完成后,执行 `php artisan migrate` 来运行迁移文件,创建数据表。
  2. ### 配置 Nginx 站点
  3. 首先进入 Nginx 的配置目录,接着创建配置文件:

$ cd etc/nginx/sites-enabled $ vim laraveltow.conf

  1. 根据 [laravel 文档](https://learnku.com/docs/laravel/7.x/deployment/7452#62e0b5) 我们可以快速写出 Nginx 配置文件:

server { listen 80; server_name 101.200.187.138; # 修改为服务器公网 IP 或域名 root /var/www/laraveltow/public; # 指向站点根目录的 public 子目录

  1. add_header X-Frame-Options "SAMEORIGIN";
  2. add_header X-XSS-Protection "1; mode=block";
  3. add_header X-Content-Type-Options "nosniff";
  4. index index.html index.htm index.php;
  5. charset utf-8;
  6. # Laravel 默认重写规则;删除将导致 Laravel 路由失效且 Nginx 响应 404。
  7. location / {
  8. try_files $uri $uri/ /index.php?$query_string;
  9. }
  10. location = /favicon.ico { access_log off; log_not_found off; }
  11. location = /robots.txt { access_log off; log_not_found off; }
  12. error_page 404 /index.php;
  13. location ~ \.php$ {
  14. fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 请注意核对 PHP 版本
  15. fastcgi_index index.php;
  16. fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
  17. include fastcgi_params;
  18. }
  19. location ~ /\.(?!well-known).* {
  20. deny all;
  21. }

}

  1. 配置完成后,使用 reload 来重新加载 nginx 配置文件:

$ systemctl reload nginx

别忘了开启你的 PHP-FPM 进程管理

$ systemctl reload php7.4-fpm

``` 至此,访问你的服务器 IP 公网地址,即可看到网站主页。

参考链接

  1. Ubuntu 18.04 通过 apt 安装 MySQL 5.7
  2. 轻松部署 Laravel 应用
  3. 鸟哥的 Linux 私房菜