近期需要搭建个简易的小型网站,原想着用服务器面板解决,但是网站程序要求苛刻(如使用PHP函数、安装模块、资源性能分配等),环视了一圈服务器面板也没有找到中意的,不是限制太多就是自身占用过大,因此决定自己搭建配置LNMP三件套来部署网站程序,以达到最佳性能与最小损耗...
预备
LNMP是一种用于配置网站前端程序的运行环境组合。‘L’指Linux系统环境,‘N’指Nginx,‘M’指MySQL或者MariaDB数据库,‘P’指PHP程序。类似的环境组合还有LAMP,该包使用Apache作为网页服务器驱动程序,与Nginx相比占用较大但是相对稳定,但是近年来搭建小型网站项目依然是Nginx更加流行。
此处我预备的环境版本为:
Linux = Debian 10.2 64bit
Nginx = 稳定版1.20.2
MySQL = 8.0.29
PHP = 8.1/7.4
服务器使用腾讯云的香港区域服务器,配置为2C2G,搭建小型网站性能足够使用
LNMP环境包之‘L’——Linux
服务器使用腾讯云提供的纯净Debian 10.2镜像,无预装其他环境
进入系统后先更新软件包:
apt update
apt upgrade
由于腾讯云的服务器都是预置好软件源的,因此购买大厂的机器后一般无需手动换源即可开箱即用
LNMP环境包之‘N’——Nginx
本文使用的Nginx版本官网下载链接(适用于Debian buster系统): nginx_1.20.2-1~buster_amd64.deb
CentOS 8系统Nginx下载链接: nginx-1.20.2-1.el8.ngx.x86_64.rpm
其他系统或者版本下载链接可见列表: http://nginx.org/packages/
安装步骤
通过SSH连接至服务器,并获取root权限:
su
下载Nginx 1.20.2软件安装包(下载链接可根据自己的系统环境从上方列表查找),本文以Debian 10.2为例:
wget http://nginx.org/packages/debian/pool/nginx/n/nginx/nginx_1.20.2-1~buster_amd64.deb
安装Nginx软件包:
dpkg -i nginx_1.20.2-1~buster_amd64.deb
安装完成后查看版本:
nginx -v
如果显示为nginx version: nginx/1.20.2
即为安装成功,删除软件包即可
初始化配置
Nginx的配置文件一般存放于/etc/nginx/conf.d/
文件夹内,编辑里面的文件即可
默认网站配置文件名为default.conf
,使用nano编辑器进行初始配置:
nano /etc/nginx/conf.d/default.conf
文件内容有这几处需要修改:
在"location"项的index内需要添加 index.php
,root项内的路径可指定好也可保持默认,后面配置网页时可再修改。如图所示:
找到"location ~ .php$"项,将其与大括号内的内容注释取消掉,并修改:
- root项指定好网站根目录
- 修改
fastcgi_pass
项为unix:/run/php-fpm/www.sock;
,Nginx 通过 UNIX 套接字与 PHP-FPM 建立联系,该配置与/etc/php-fpm.d/www.conf
文件内的 listen 配置一致。 - 将
fastcgi_param SCRIPT_FILENAME
后的/scripts$fastcgi_script_name;
替换为$document_root$fastcgi_script_name;
。
修改完成后如下图所示:
按Ctrl+O写入文件,Ctrl+X退出编辑
最后将Nginx配置为开机启动即可:
systemctl start nginx
systemctl enable nginx
验证配置
本文修改后的配置文件如图:
由于测试所用的为一个静态页面,因此只需要指定根目录与域名即可。另存为test.conf,重启Nginx,检查无报错后所用浏览器访问域名,网页加载正常,说明Nginx配置验证成功。
拓展:多网站配置
如果要配置多个网站,只需要在域名服务商多解析几个到服务器IP的域名,然后将/etc/nginx/conf.d/default.conf文件重复拷贝作为模板使用,每次修改完配置文件,需要重新启动Nginx服务使其生效,同时要确保Nginx没有报错。
在配置文件时,只需要使location
项内的root
所指定的网站根目录不相同、server_name
所指定的域名不相同,即可通过不同域名访问到不同站点根目录的index文件。
反代、伪静态本文暂且不提及。