服务器 (Ubuntu 20.04) 手动部署 LNMP

Linux系统
419
0
0
2022-09-04
标签   Ubuntu

Wi1dcard 的 轻松部署 Laravel 应用 系列课程中的:

04. 手动部署 - 初始化系统

05. 手动部署 - 安装 Nginx

06. 手动部署 - 安装 PHP-FPM

07. 手动部署 - 安装 Git 和 Composer

08. 手动部署 - 部署应用代码

09. 手动部署 - 配置 Nginx 站点

根据以上课程完成的本次部署和笔记,课程后面的优化部分暂未学习。

再次感谢 Wi1dcard !

服务器参数

配置:1核2G1M

系统:Ubuntu 20.04 server 64bit

PHP:8.0

Laravel:8

安装运行环境

刷新服务器软件源

软件源 服务器上获取一份最新的包列表并建立本地缓存,包括软件名称、描述、最新版本、下载地址等等。

在服务器执行:

apt update

执行后类似输出,稍等一会即可刷新完成。

root@ecs-84096:~# apt update
Hit:1 http://repo.huaweicloud.com/ubuntu focal InRelease
Get:2 http://repo.huaweicloud.com/ubuntu focal-updates InRelease [114 kB]
Get:3 http://repo.huaweicloud.com/ubuntu focal-backports InRelease [108 kB]
Get:4 http://repo.huaweicloud.com/ubuntu focal-security InRelease [114 kB]

最终输出结果:

176 packages can be upgraded. Run 'apt list --upgradable' to see them.

表示有 176 个软件包可以升级,执行apt list --upgradable 命令来查看它们。

执行升级:

升级不升级都可以,对后续部署基本没有影响,根据服务器性能不同升级快慢也不同。
apt upgrade

确认提示:

168 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
Need to get 225 MB of archives.
After this operation, 74.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] 

表示操作将占用 225 MB 空间,输入 y 或回车直接升级,等待升级完成即可。

小知识:在提供选项供用户选择时,以大写项为默认值,[Y/n] 那么 Y 即为默认值;同理,若是 [a/b/c/D/e],那么 D 即为默认值。

安装 Nginx

安装 Nginx:

apt install nginx -y
在命令后面加 -y,表示有选项时直接选默认值。

管理 Nginx

service nginx start # 启动 Nginx
service nginx stop # 停止 Nginx
service nginx restart # 重启 Nginx

使用 systemctl命令开关服务的开机自启:

通常情况下,在 APT 安装后已默认启用 Nginx 开机启动。
systemctl enable nginx # 启用 Nginx 开机启动
systemctl disable nginx # 禁用 Nginx 开机启动

查看 Nginx 是否正常运行

在浏览器内输入服务器公网 IP(或域名)并打开,出现默认欢迎页面说明 Nginx 安装成功并正常运行。

PHP


安装MySQL

参考:ubuntu如何安装mysql8.0.19 文章中的安装部分。

依次执行以下命令:

sudo apt-get install mysql-server -y

sudo apt install mysql-client -y

sudo apt install libmysqlclient-dev -y

安装成功!

篇幅有限,关于 MySQL 的配置和开启远程登陆查看:Ubuntu 20.04 安装和卸载 MySQL 8.0.27 学习笔记

mysql 常用命令

启动 mysql:

service mysqld start

停止 mysql:

service mysqld stop

重启 mysql:

service mysqld restart

登陆 mysql:

mysql -u root -p  //root 表示 用户


安装 PHP

配置第三方软件源

由于 Ubuntu 的官方软件源通常不包含最新版本的 PHP,因此需要添加一个包含最新 PHP 的第三方软件源。

先安装 software-properties-common 软件包,它提供了快速管理软件源的实用脚本。

add-apt-repository -y ppa:ondrej/php

然后添加第三方 PHP 软件源。

add-apt-repository -y ppa:ondrej/php

添加成功后刷新一下服务器软件源。

apt update

安装 PHP

安装 PHP 实际上是安装 3 个软件包:

  1. PHP - PHP 自身。
  2. PHP-CLI - PHP 的命令行接口,通俗地说,在命令行内执行php 便依赖于此包。
  3. PHP-FPM - 全称为PHP FastCGI Process Manager,用于管理 PHP 进程,并提供 FastCGI 接口与 Nginx 交互;浏览网页时的请求便是由 Nginx 交由 PHP-FPM 处理的。

apt install 支持多参数,所以同时安装 3 个软件包:

这里安装的 PHP 是 8.0 版本。
apt install -y php8.0 php8.0-cli php8.0-fpm

管理 PHP-FPM 服务

通过 servicesystemctl 命令管理 PHP-FPM 服务:

service php8.0-fpm restart # 重启 PHP-FPM
service php8.0-fpm start # 启动 PHP-FPM
service php8.0-fpm stop # 停止 PHP-FPM

# 默认设置
systemctl enable php8.0-fpm # 启用 PHP-FPM 开机启动
systemctl disable php8.0-fpm # 禁用 PHP-FPM 开机启动

不同版本的 PHP-FPM 服务名是不一致的。例如 php8.0 为 php8.0-fpm,8.1 为 php8.1-fpm,以此类推。

查看 PHP-FPM 是否运行

ps aux | grep php
  1. ps aux 用于列出系统当前正在运行的所有进程的所有信息
  2. | 名为管道操作符,将前一条命令的标准输出连接到下一条命令的标准输入。
  3. grep 是一款文本搜索工具,常用来过滤命令行输出;php 是搜索的关键词。
  4. ps 将进程信息输出到 grep 进行过滤,后者筛选出包含 php 字样的行,再将它们输出。

输出结果:

root@ecs-84096:~# ps aux | grep php
root       56527  0.0  0.9 194608 19432 ?        Ss   18:07   0:00 php-fpm: master process (/etc/php/8.0/fpm/php-fpm.conf)
www-data   56541  0.0  0.3 194848  6676 ?        S    18:07   0:00 php-fpm: pool www
www-data   56542  0.0  0.3 194848  6676 ?        S    18:07   0:00 php-fpm: pool www
root       56721  0.0  0.0   8900   736 pts/0    S+   18:20   0:00 grep --color=auto php

可以观察到有 php-fpm 在执行。

如果 php-fpm 未执行,输出为:

root@ecs-84096:~# ps aux | grep php
root       56749  0.0  0.0   8900   724 pts/0    S+   18:21   0:00 grep --color=auto php

安装 Git

使用 apt 安装:

apt install -y git

安装 Conposer

通过 PHP 安装 ,参照 :Composer 中文网 的安装方法。

第一步:下载安装脚本 - composer-setup.php - 到当前目录:

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"

下载下来的 composer-setup.php 脚本将简单地检测 php.ini 中的参数设置,如果某些参数未正确设置则会给出警告;然后下载最新版本的 composer.phar 文件到当前目录。

第二步:执行安装过程:

php composer-setup.php

第三步:删除安装脚本:

php -r "unlink('composer-setup.php');"

第四步:全局环境变量:

将前面下载的 composer.phar 文件移动到 /usr/local/bin/ 目录下
sudo mv composer.phar /usr/local/bin/composer

到这里便安装完了,可以使用 composer -v 查看安装的 Composer 的版本。

执行可能会收到收到这样一条警告:

root@ecs-84096:~# composer -v
Do not run Composer as root/super user! See https://getcomposer.org/root for details

表示请勿使用 根用户 执行 Composer,这里暂时不管它,后续技术提高了再解决。

使用 Composer 安装时与 PHP 版本不匹配(Your requirements … packages.) 。composer install --ignore-platform-reqs

等待安装完成即可。

Laravel 8.5 部署文档 的说明,Nginx 配置文件稍作调整:server {
    listen 80;
    server_name example.com; # 必改项,替换为 服务器公网IP 或 域名
    root /var/www/example.com/public; # 必改项,指向站点根目标的 public 子目录

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.0-fpm.sock; # 必改项,对应 PHP 版本
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

以上文件要修改 3 个地方:server_namerootfastcgi_pass

重载 Nginx

配置完成后,请务必重启(Restart)或 重载(Reload)Nginx。

重载 Nginx

service nginx reload

# 另一种等效的方法
nginx -s reload

重启 Nginx

service nginx restart

重载或重启 Nginx 后,在浏览器输入 服务器公网IP 或 域名,即可访问到站点。

PHP

恭喜你,部署成功!