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 安装成功并正常运行。
安装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 个软件包:
PHP
- PHP 自身。PHP-CLI
- PHP 的命令行接口,通俗地说,在命令行内执行php
便依赖于此包。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 服务
通过 service
和 systemctl
命令管理 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
ps aux
用于列出系统当前正在运行的所有进程的所有信息|
名为管道操作符,将前一条命令的标准输出连接到下一条命令的标准输入。grep
是一款文本搜索工具,常用来过滤命令行输出;php
是搜索的关键词。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_name
,root
和 fastcgi_pass
。
重载 Nginx
配置完成后,请务必重启(Restart)或 重载(Reload)Nginx。
重载 Nginx
service nginx reload
# 另一种等效的方法
nginx -s reload
重启 Nginx
service nginx restart
重载或重启 Nginx 后,在浏览器输入 服务器公网IP 或 域名,即可访问到站点。
恭喜你,部署成功!