LNMP搭建:Linux+Nginx+MySQL+PHP

关闭防火墙和核心防护,使用一台机器Node1搭建LNMP

systemctl stop firewalld; setenforce 0

所需源码包:可以去官网下载

编译Nginx

创建/data,在/data/下放源码包

root@Node1 \~#:mkdir /data;cd /data

安装依赖包

root@Node1 data#:yum -y install pcre-devel zlib-devel gcc gcc-c++ makeyum -y install pcre-devel zlib-devel gcc gcc-c++ make

nginx安装包

root@Node1 data#:ls

nginx-1.22.0.tar.gz

root@Node1 data#:tar xf nginx-1.22.0.tar.gz

root@Node1 data#:ls

nginx-1.22.0 nginx-1.22.0.tar.gz

创建运行用户

useradd -M -s /sbin/nologin nginx

编译安装

root@Node1 data#:cd nginx-1.22.0

root@Node1 nginx-1.22.0#:./configure \

> --prefix=/usr/local/nginx \

> --user=nginx \

> --group=nginx \

> --with-http_stub_status_module

root@Node1 nginx-1.22.0#:make -j2 && make install

软链接

root@Node1 nginx-1.22.0#:ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

自启动文件

root@Node1 nginx-1.22.0#:tee /lib/systemd/system/nginx.service <<eof

> Unit

> Description=nginx

> After=network.target

> Service

> Type=forking

> PIDFile=/usr/local/nginx/logs/nginx.pid

> ExecStart=/usr/local/nginx/sbin/nginx

> ExecReload=/bin/kill -1 $MAINPID

> ExecStop=/bin/kill -3 $MAINPID

> PrivateTmp=true

> Install

> WantedBy=multi-user.target

> eof

Unit

Description=nginx

After=network.target

Service

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/bin/kill -1 $MAINPID

ExecStop=/bin/kill -3 $MAINPID

PrivateTmp=true

Install

WantedBy=multi-user.target

重新加载和启动nginx

root@Node1 system#:systemctl daemon-reload

root@Node1 system#:systemctl start nginx

yum安装MySQL

源文件

root@Node1 data#:tee /etc/yum.repos.d/mysql.repo <<EOF

> mysql57-community

> name=MySQL 5.7 Community Server

> baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/

> enabled=1

> gpgcheck=0

> EOF

yum社区办数据库

root@Node1 data#:yum -y install mysql-community-server

启动mysql

root@Node1 data#:systemctl start mysqld

过滤密码登录mysql

root@Node1 data#:grep password /var/log/mysqld.log

2024-06-14T08:27:11.808743Z 1 Note A temporary password is generated for root@localhost: ev-lAgi)K2Z2

最后的就是密码,包括特殊符号:ev-lAgi)K2Z2

登录数据库,密码策略改密码

root@Node1 data#:mysql -uroot -p"ev-lAgi)K2Z2"

···

mysql> set global validate_password_policy=0;

Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;

Query OK, 0 rows affected (0.00 sec)

mysql> alter user root@'localhost' identified by 'Admin@123'; #修改密码

Query OK, 0 rows affected (0.00 sec)

Ctrl+D退出数据库

编译安装PHP

安装包准备

root@Node1 data#:ls

nginx-1.22.0 nginx-1.22.0.tar.gz php-7.1.10.tar.bz2

root@Node1 data#:tar xf php-7.1.10.tar.bz2

root@Node1 data#:ls

nginx-1.22.0 nginx-1.22.0.tar.gz php-7.1.10 php-7.1.10.tar.bz2

安装依赖环境

root@Node1 data#:yum -y install gd \

> libjpeg libjpeg-devel \

> libpng libpng-devel \

> freetype freetype-devel \

> libxml2 libxml2-devel \

> zlib zlib-devel \

> curl curl-devel \

> openssl openssl-devel

编译安装

root@Node1 data#:cd php-7.1.10/

root@Node1 php-7.1.10#:./configure \

> --prefix=/usr/local/php \

> --with-mysql-sock=/usr/local/mysql/mysql.sock \

> --with-mysqli \

> --with-zlib \

> --with-curl \

> --with-gd \

> --with-jpeg-dir \

> --with-png-dir \

> --with-freetype-dir \

> --with-openssl \

> --enable-fpm \

> --enable-mbstring \

> --enable-xml \

> --enable-session \

> --enable-ftp \

> --enable-pdo \

> --enable-tokenizer \

> --enable-zip

root@Node1 php-7.1.10#:make -j2 && make install

软链接

root@Node1 php-7.1.10#:ln -s /usr/local/php/bin/* /usr/local/bin/

root@Node1 php-7.1.10#:ln -s /usr/local/php/sbin/* /usr/local/sbin/

修改三个php配置文件:php.ini主配置文件,php-fpm.conf进程服务配置文件,www.conf扩展配置文件

root@Node1 php-7.1.10#:cp /data/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini

vim /usr/local/php/lib/php.ini

mysqli.default_socket = /var/lib/mysql/mysql.sock #1170行,定位命令行模式:1170G跳到1170行

date.timezone = Asia/Shanghai #939行,时区,上海

#修改第二个配置文件:

root@Node1 php-7.1.10#:cd /usr/local/php/etc/

root@Node1 etc#:cp -a php-fpm.conf.default php-fpm.conf

vim php-fpm.conf

pid = run/php-fpm.pid #开启第17行

#修改第三个配置文件:

root@Node1 etc#:cd /usr/local/php/etc/php-fpm.d/

root@Node1 php-fpm.d#:cp -a www.conf.default www.conf

#把这个php-fpm.service文件复制到/usr/lib/systemd/system/下

root@Node1 php-fpm.d#:cd /data/php-7.1.10/sapi/fpm/

root@Node1 fpm#:cp php-fpm.service /usr/lib/systemd/system/php-fpm.service

重新加载启动php

root@Node1 fpm#:systemctl daemon-reload

root@Node1 fpm#:systemctl restart php-fpm.service

可以测试一下,监听的是9000端口,发现已开启

root@Node1 fpm#:ss -natp | grep 9000

LISTEN 0 128 127.0.0.1:9000 *:* users:(("php-fpm",pid=15513,fd=0),("php-fpm",pid=15512,fd=0),("php-fpm",pid=15511,fd=6))

配置nginx支持php解析

修改主配置文件设置路径和添加主页面

root@Node1 fpm#:vim /usr/local/nginx/conf/nginx.conf

43 location / {

44 root html;

45 index index.html index.htm index.php; #在45行后添加一个index.php文件

46 }

65 location ~ \.php$ {

66 root html;

67 fastcgi_pass 127.0.0.1:9000;

68 fastcgi_index index.php;

69 fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

#69行指定路径,去后端服务器的哪个目录下找php程序,比如论坛,博客安装程序

70 include fastcgi_params;

71 }

重启并设置页面,在浏览器上访问验证

root@Node1 fpm#:nginx -s reload

root@Node1 fpm#:cd /usr/local/nginx/html

root@Node1 html#:vim index.php

<?php

phpinfo();

?>

在浏览器上访问:192.168.114.10/index.php。出现以下页面就算成功。

数据库的创建和用户的创建

root@Node1 html#:mysql -uroot -p"Admin@123"

···

mysql> CREATE DATABASE bbs;

Query OK, 1 row affected (0.00 sec)

mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'Admin@123';

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'Admin@123';

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

ctrl + D退出

准备页面,并在浏览器测试

root@Node1 html#:vim /usr/local/nginx/html/index.php

<?php

$link=mysqli_connect('192.168.114.10','bbsuser','Admin@123');

if($link) echo "<h1>Success!!</h1>";

else echo "Fail!!";

?>

浏览器测试:数据库连接成功!

安装论坛

源码包放在/data/下

root@Node1 html#:cd /data

root@Node1 data#:unzip Discuz_X3.4_SC_UTF8.zip

root@Node1 data#:ls
dir_SC_UTF8 nginx-1.22.0 php-7.1.10 说明.htm
Discuz_X3.4_SC_UTF8.zip nginx-1.22.0.tar.gz php-7.1.10.tar.bz2

root@Node1 data#:cp -r dir_SC_UTF8/upload/ /usr/local/nginx/html/bbs

修改论坛目录权限

root@Node1 data#:cd /usr/local/nginx/html/bbs/

root@Node1 bbs#:chown -R nobody ./config/

root@Node1 bbs#:chown -R nobody ./data/

root@Node1 bbs#:chown -R nobody ./uc_client/

root@Node1 bbs#:chown -R nobody ./uc_server/

在浏览器上访问数据库:192.168.114.10/bbs

点击我同意

都是对钩,就是成功。点击下一步:

默认全新安装,点击下一步

数据库名bbs,数据库用户名bbsuser,数据库密码Admin@123,管理员密码123456,重复密码123456

点击下一步

最后出现这个界面就是成功。

----end-----

相关推荐
xingyuzhisuan6 小时前
网络 Token 常见故障原理,基础排查科普
运维·服务器·网络·php
z落落7 小时前
C#String字符串
开发语言·c#·php
wljy17 小时前
二、进制状态转换
linux·运维·服务器·c语言·c++
handler017 小时前
【MySQL】常用命令总结(库与表增删查改)
运维·数据库·mysql·命令·总结
week@eight7 小时前
Linux - Doris
linux·运维·数据库·mysql
平行云8 小时前
实时云渲染预启动技术解析:UE数字孪生应用的延迟优化机制(二)
linux·unity·ue5·webgl·实时云渲染·云桌面·像素流
看到代码头都是大的8 小时前
CentOS环境下手动升级openssl、openssh
linux·运维·centos
浮生若城8 小时前
Linux——Ext系列文件系统
linux·运维·服务器
枳实-叶9 小时前
【Linux驱动开发】第16天:按键中断完整实战
linux·运维·驱动开发
難釋懷9 小时前
Nginx-UrlRewrite
运维·nginx