本文搭建的 LNMP 环境软件组成版本及说明如下:
Linux:Linux 系统,本文以 Ubuntu 22.04 为例。
Nginx:Web 服务器程序,用来解析 Web 程序,本文以 Nginx 1.18.0 为例。
MySQL:一个数据库管理系统,本文以 MySQL 8.0.39 为例。
PHP:Web 服务器生成网页的程序,本文以 PHP 8.1.2 为例。
一、安装环境
1、安装配置 Nginx
# 更新 Ubuntu 系统内的软件包
apt update
# 执行以下命令,安装 Nginx
apt -y install nginx
# 查看 Nginx 版本
nginx -v
# 修改 Nginx 默认配置文件
vim /etc/nginx/sites-enabled/default
2、安装配置 MySQL
# 更新 Ubuntu 系统内的软件包
apt update
# 执行以下命令,安装 mysql
apt -y install mysql-server
# 查看 MySQL 版本
mysql -V
# 首次登录设置root密码
mysql -u root -p
3、安装配置 PHP
# 更新 Ubuntu 系统内的软件包
apt update
# 执行以下命令,安装PHP
apt -y install php-fpm
# 查看 PHP 版本
php -v
# 启动PHP
systemctl start php8.1-fpm
# 查看已安装插件
php -m
# 安装常用php扩展
apt update
apt install php-mbstring
apt install php-mysqli
apt install php-mysql
apt install php-sqlite3
# 重启服务
systemctl start php8.1-fpm
4、安装docker
apt update
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
docker version
docker compose version
systemctl enable docker
二、nginx配置示例
在nginx.conf
中增加下面两行配置,否则有些上传如alist程序会报错:
client_max_body_size 300m;
client_header_timeout 5m;
用到PHP的相关配置:
# typecho博客配置
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name linjoey.cn www.linjoey.cn m.linjoey.cn;
# 强制301定向到https
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name linjoey.cn www.linjoey.cn m.linjoey.cn;
# 证书配置
ssl_certificate /root/cert/cert.crt;
ssl_certificate_key /root/cert/cert.key;
root /root/www/typecho/;
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
# 处理静态文件请求(可选)
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP8.1的配置
location ~ .*\.php(\/.*)*$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
# fastcgi_pass 127.0.0.1:9000;
}
}
反向代理的相关配置:
# onenav反向代理
server {
listen 80;
server_name mark.linjoey.cn;
return 301 https://$host$request_uri; # 强制 HTTPS
}
server {
listen 443 ssl;
server_name mark.linjoey.cn;
# 证书配置
ssl_certificate /root/cert/cert.crt;
ssl_certificate_key /root/cert/cert.key;
location / {
proxy_pass http://localhost:10001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}