LEMP这个是国外的一种叫法,不同于国内的LAMP、LNMP一键安装包!实际上LEMP堆栈就是LNMP,E代表Engine。
以下内容以centos 8为例:
搭建前,首先要有一台服务器,甲骨文免费的可以去看看,终身免费哦!
安装:
1、NGINX
安装Nginx安装包:
sudo dnf install nginx
开启 NGINX 服务:
sudo systemctl enable nginx
sudo systemctl start nginx
2、MariaDB
MariaDB也是MySQL的一种,流行的建站软件都支持!
安装MariaDB及PHP支持
sudo dnf install mariadb-server php-mysqlnd
MariaDB 设置为在启动时启动并首次启动守护程序
sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service
登录到 MariaDB 的 SQL shell
mysql -u root
完成修改登录时:mysql -u root -p
创建测试数据库和具有访问权限的用户
CREATE DATABASE testdb;
CREATE USER 'testuser' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser';
记得改为自己的想要设置的密码;
退出 SQL
quit
使用mysql_secure_installation工具配置其他安全选项。此工具将询问您是否要为MySQL根用户设置新密码,但您可以跳过该步骤:
sudo mysql_secure_installation
在以下提示下回答 Y:(自己认为有用就留着,没有用就删掉)
- 删除匿名用户?
- 是否允许远程根登录?
- 删除测试数据库并对其进行访问?
- 现在重新加载权限表?
3、PHP
安装 PHP FastCGI 处理管理器,其中包含核心 PHP 依赖项:
sudo dnf install php-fpm
启用并启动 php-fpm.service:
sudo systemctl enable php-fpm.service
sudo systemctl start php-fpm.service
将 中的默认值从 更改为 :user/etc/php-fpm.d/www.confapachenginx
File: /etc/php-fpm.d/www.conf
…
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
…
4、设置 NGINX 站点配置文件
创建网站内容所在的根目录。将 example.com 替换为您网站的网域。
sudo mkdir -p /var/www/html/example.com/public_html
将目录的所有权分配给 :$USER
sudo chown -R $USER:$USER /var/www/html/example.com/public_html
使用 SELinux 的命令更改 Web 内容的文件安全上下文,请替换为您的域名:chcon example.com
sudo chcon -t httpd_sys_content_t /var/www/html/example.com -R
sudo chcon -t httpd_sys_rw_content_t /var/www/html/example.com -R
更新文件中 Web 内容的文档根位置。/etc/nginx/nginx.conf
File: /etc/nginx/nginx.conf
server {
listen 80;
listen [::]:80;
server_name _;
root /var/www/html/example.com/public_html;
# Load configuration files for the default server block.
#include /etc/nginx/conf.d/*.conf; (如无必要,无需解除注释,此处是坑)
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
在目录中为您的域创建配置文件。将 example.com 替换为文件内容中的域:
文件: /etc/nginx/conf.d/example.com.conf
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/html/example.com/public_html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
location ~* \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
注:Nginx对PATHINFO支持不够,如果不配置,亲身实验会造成typecho后台404的情况,解决不好,后台无法登录会显示Access denied,需要更改支持PATHINFO的主机的配置文件,php.ini也要改,默认cgi.fix_pathinfo参数是0的,我们需要改成1,然后保存退出,最后重启PHP。
官方给的解决方式是一般的出现这种情况时,nginx.conf
里的 location
设置都是类似这样
location ~ .*\.php$
要支持 pathinfo,要改成
location ~ .*\.php(\/.*)*$
在某些老版本的 php 里面,可能还要打开 php.ini 里的 cgi.fix_pathinfo
cgi.fix_pathinfo = 1
5、配置防火墙D
为 CentOS 8 启用了 FirewallD,但 HTTP 和 HTTPS 不包括在默认服务集中。
查看默认服务集:
sudo firewall-cmd --zone=public --list-services
cockpit dhcpv6-client ssh
要允许连接到NGINX,请将HTTP和HTTPS添加为服务:
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
注意:此外,如果您计划在服务器上使用任何 HTTPD 脚本,请更新相应的 SELinux 布尔变量。若要允许 HTTPD 脚本和模块连接到网络,请使用命令。
sudo setsebool -P httpd_can_network_connect on
6、测试 LEMP 堆栈
要确保您的域名可以访问您的服务器,确保对DNS正确解析IP 地址。
重新启动PHP并重新加载NGINX配置:
sudo systemctl restart php-fpm
sudo nginx -s reload
测试NGINX配置:
sudo nginx -t
创建一个测试页面来验证NGINX是否可以渲染PHP并连接到MariaDB数据库
文件:/var/www/html/example.com/public_html/test.php
<html>
<head>
<h2>LEMP Stack Test</h2>
</head>
<body>
<?php echo '<p>Hello,</p>';
// Define PHP variables for the MySQL connection.
$servername = "localhost";
$username = "testuser";
$password = "password";
// Create a MySQL connection.
$conn = mysqli_connect($servername, $username, $password);
// Report if the connection fails or is successful.
if (!$conn) {
exit('<p>Your connection has failed.<p>' . mysqli_connect_error());
}
echo '<p>You have connected successfully.</p>';
?>
</body>
</html>
注:记得换成自己的数据名字和密码哦!
转到浏览器实验,地址:http://example.com/test.php
看看是否成功:
如果您看到错误消息或页面根本没有加载,请重新检查您的配置。
完结散花!
7、DEMO
演示站:iesome.com (撸的Oracle 云主机,好像是终身免费来着,不要白不要哈哈,小鸡编译性能差,尽量手动安装哈!)