CentOS 7.6 源码安装搭建LNMP架构(Nginx、MYSQL、PHP)
LNMP架构
- LNMP是什么
- 搭建环境
- 搭建准备
- LNMP软件包
- 搭建nginx
- 搭建mysql数据库
- 搭建php
- 搭建Discuz!论坛
LNMP是什么
LNMP:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Mysql是一个小型关系型数据库管理系统。PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
原理:浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx.服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。
搭建环境
LNMP服务器:192.168.245.140(CentOS 7.6)
搭建准备
yum安装以下所需库
gcc
gcc-c++
make
cmake
ncurses
ncurses-devel
bison
pcre
pcre-devel
expat
expat-devel
perl
perl-devel
autoconf
gd
libpng
libpng-devel
libxml2
libxml2-devel
libjpeg
libjpeg-devel
libpng
libpng-devel
freetype
freetype-devel
zlib
zlib-devel
curl
curl-devel
openssl
openssl-devel
LNMP软件包
- nginx-1.12.2.tar.gz
- mysql-boost-5.7.20.tar.gz
- php-7.1.10.tar.bz2
- Discuz_X3.4_SC_UTF8.zip
搭建nginx
第一步:解压nginx源码包到/opt目录下
[root@server opt]# tar xzfv nginx-1.12.2.tar.gz
第二步:自定义配置
[root@server opt]# cd nginx-1.12.2/
[root@server nginx-1.12.2]#./configure \
--prefix=/usr/local/nginx \ <---指定安装目录
--user=nginx \ <---指定管理用户
--group=nginx \ <---指定管理组
--with-http_stub_status_module <---安装统计模块
第三步:编译安装
[root@server nginx-1.12.2]#make && make install
第四步:为nginx建立一个单独的管理用户nginx
[root@server nginx-1.12.2]# useradd -M -s /sbin/nologin nginx
[root@server nginx-1.12.2]#
[root@server nginx-1.12.2]#
[root@server nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ <---把nginx命令加到系统环境变量下便于直接使用
第五步:制作systemctl管理文件,修改权限,用systemctl启动nginx
[root@server conf]# vim /lib/systemd/system/nginx.service[Unit]
Description=nginx
After=network.target[Service]
Type=forking
PIDFile =/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -S HUP $MAINPID
ExecStop=/usr/bin/kill -S QUIT $MAINPID
PrivateTmp=true[Install]
WantedBy=multi-user.target[root@server conf]#
[root@server conf]#
[root@server conf]# chmod 754 /lib/systemd/system/nginx.service
[root@server conf]# systemctl start nginx.service
搭建mysql数据库
MYSQL的新特性
1、性能更快3倍
2、新的优化器
3、原生的JSON支持
4、多源复制
5、GIS空间扩展
第一步:为mysql创建一个管理用户mysql
[root@server ~]# useradd -s /sbin/nologin mysql
第二步:解压mysql源码包
[root@server ~]# cd /opt
[root@server opt]# tar xzvf mysql-boost-5.7.20.tar.gz
第三步:自定义配置
[root@server opt]# cd mysql-5.7.20/
[root@server mysql-5.7.20]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ <---指定安装目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql.sock \ <---指定mysql的sock路径
-DSYSCONFDIR=/etc \ <---指定配置文件路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \ <---指定pid路径
-DDEFAULT_CHARSET=utf8 \ <---指定默认字符集
-DDEFAULT_COLLATION=utf8_general_ci \ <---指定默认编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ <---安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ <---安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ <---安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ <---安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \ <---指定数据存放路径
-DWITH_BOOST=boost \ <----boost库主要是在对mysql的数据备份时用到
-DWITH_SYSTEMD=1 <---这是MySQL 5.7原生支持Systemd的选项,如果要是用systemctl启动,就必须开启。
第四步:安装编译
[root@server mysql-5.7.20]# make && make install
第五步:修改mysql属主和属组为mysql,否则影响启动!
[root@server mysql-5.7.20]# chown -R mysql.mysql /usr/local/mysql/
第六步:修改my.cnf配置文件(mysql 可以通过sql_mode 来控制mysql 数据库的行为)
[root@server ~]# vim /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysqld]
user = mysql <---指定默认启动用户为mysql
basedir = /usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DAT E,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
第七步:优化设置
[root@server ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@server ~]# echo 'export PATH' >> /etc/profile
[root@server ~]# source /etc/profile
第八步:初始化配置mysql(Mysql 5.7.6以后的5.7系列版本使用mysqld --initialize
或mysqld --initialize-insecure命令来初始化数据库)
[root@server bin]# mysqld \
--initialize-insecure \ <---初始化数据库的时候不随机生成密码,设置数据库空密码
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
2020-08-08T05:39:36.615339Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-08-08T05:44:46.685380Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-08-08T05:44:46.712869Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-08-08T05:44:46.770159Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 446f5f0a-d93a-11ea-99d3-000c295a2680.
2020-08-08T05:44:46.773250Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-08-08T05:44:46.774057Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
第九步:拷贝启动文件,使用systemctl启动mysql
[root@server bin]# cd ..[root@server mysql]# cp usr/lib/systemd/system/mysqld.service /lib/systemd/system
[root@server mysql]# systemctl start mysqld.service
[root@server mysql]# netstat -antp | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 27393/mysqld
第十步:为mysql创建管理账户root,密码为abc123
[root@server mysql]# mysqladmin -u root -p password
Enter password: (密码为空,直接回车)
New password:
Confirm new password:
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
第十一步:用管理员账户登陆数据库成功
[root@server mysql]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.20 Source distributionCopyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> quit
Bye
搭建php
第一步:解压php源码包到/opt下
[root@server mysql]# cd /opt
[root@server opt]# tar xvjf php-7.1.10.tar.bz2
第二步:自定义配置
[root@server opt]# cd php-7.1.10/
./configure \
--prefix=/usr/local/php \ <----指定安装目录
--with-mysql-sock=/usr/local/mysql/mysql.sock \ <----定位mysql的unix 套接字指针。如果未指定,则按默认位置搜索。
--with-mysqli \ <----mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定。
--with-zlib \ <----启用zlib支持
--with-curl \ <----编译php使用curl库
--with-gd \ <----启用GD支持
--with-jpeg-dir \ <---- 指定libjpeg的安装目录
--with-png-dir \ <----指定libpng的安装目录
--with-freetype-dir \ <----指定freetype字体库的安装目录
--with-openssl \ <----启用openssl支持
--enable-fpm \ <----启用fpm支持,这个非常重要!!!是LNMP的核心!
--enable-mbstring \ <----启用多字节字符串的支持
--enable-xml \ <----启用XML支持。
--enable-session \ <----启用session支持
--enable-ftp \ <----启用ftp支持
--enable-pdo \ <----PHP数据对象,是PHP应用中的一个数据库抽象层规范
--enable-tokenizer \ <----启用tokenizer支持
--enable-zip <----包含zip读写支持
关于PHP-FPM:PHP-FPM(PHP FastCGI Process Manager):PHP FastCGI 进程管理器,用于管理PHP 进程池的软件,用于接受web服务器的请求。而php-fastcgi 只是一个cgi程序,只会解析php请求,并且返回结果,不会管理(因此才出现的php-fpm)。
PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。php-fpm是 FastCGI 的实现,并提供了进程管理的功能。
进程包含 master 进程和 worker 进程两种进程。
master 进程只有一个,负责监听端口,接收来自 Web Server 的请求,而 worker 进程则一般有多个(具体数量根据实际需要配置),每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方。PHP在 5.3.3 之后已经把php-fpm并入到php的核心代码中了。 所以php-fpm不需要单独的下载安装。要想php支持php-fpm,只需要在编译php源码的时候带上 --enable-fpm 就可以了
第三步:编译安装
[root@server php-7.1.10]# make && make install
第四步:拷贝默认配置文件并修改配置
[root@server php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
[root@server php-7.1.10]#
[root@server php-7.1.10]# vim /usr/local/php/lib/php.inimysqli.default_socket = /usr/local/mysql/mysql.sock <---指定mysql的socket
date.timezone = Asia/Shanghai <---指定时区为上海
第五步:查看php加载的模块
[root@server php-7.1.10]# /usr/local/php/bin/php -m
[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib[Zend Modules]
第六步:php-fpm有一个默认配置文件在/usr/local/php/etc/php-fpm.conf.default,我们需要把名字改成php-fpm.conf才能被识别,www.conf.default是php-fpm进程服务的扩展配置文件,也需要改名去掉default
[root@server php-7.1.10]# cd /usr/local/php/etc/
[root@server etc]# ls
pear.conf php-fpm.conf.default php-fpm.d
[root@server etc]# cp php-fpm.conf.default php-fpm.conf
[root@server etc]# vim php-fpm.conf
pid = run/php-fpm.pid
[root@server etc]# cd php-fpm.d/
[root@server php-fpm.d]# ls
www.conf.default
[root@server php-fpm.d]# cp www.conf.default www.conf
第七步:启动php-fpm,端口号是9000
[root@server php-fpm.d]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
[root@server php-fpm.d]# netstat -anpt | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 34677/php-fpm: mast
第八步:把php的命令制作软链接到系统环境变量/usr/local/bin/下便于使用管理
[root@server php-fpm.d]# ln -s /usr/local/php/bin/* /usr/local/bin/
第九步:修改nginx配置文件,使它可以支持php,以下这段本身是被注释的,取消注释修改DocumentRoot为/usr/local/nginx/html
[root@server php-fpm.d]# vim /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;include fastcgi_params;
}
第十步:启动nginx
[root@server php-fpm.d]# systemctl restart nginx.service
第十一步:修改nginx主页为php格式
[root@server php-fpm.d]# cd /usr/local/nginx/html/
[root@server html]# ls
50x.html index.html
[root@server html]# vim index.php<?php
phpinfo();
?>
第十二步:真机访问php网页成功
搭建Discuz!论坛
第一步:管理员登陆mysql数据库
[root@server mysql]# mysql -u root -p
Enter password:
mysql> CREATE DATABASE bbs; <----创建bbs数据库
Query OK, 1 row affected (0.00 sec)mysql> GRANT all ON bbs.* To 'bbsuser'@'%' IDENTIFIED BY 'admin123'; <----创建登陆用户bbsuser和密码admin123,方式是从任何地方访问
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> GRANT all ON bbs.* To 'bbsuser'@'localhost' IDENTIFIED BY 'admin123'; <----创建登陆用户bbsuser和密码admin123,方式是从本机
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> flush privileges; <----不重启数据库刷新
Query OK, 0 rows affected (0.00 sec)
第二步:修改nginx的主页,写入如下内容,测试连接数据库
[root@server html]# vim index.php
<?php
$link=mysqli_connect('192.168.245.140','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!"
?>
第三步:在真机上测试连接数据库成功
访问http://192.168.245.140/index.php
第四步:解压论坛源码包
[root@server html]# cd /opt
[root@server opt]# unzip Discuz_X3.4_SC_UTF8.zip
第五步:将论坛的网页目录拷贝到nginx的默认主页目录下,起名为bbs
[root@server opt]# cd dir_SC_UTF8/
[root@server dir_SC_UTF8]# ls
readme upload utility
[root@server dir_SC_UTF8]# cp -r upload/ /usr/local/nginx/html/bbs
第六步:切换到论坛网页目录下,修改以下目录的权限(否则论坛无法安装)
[root@server dir_SC_UTF8]# cd /usr/local/nginx/html/bbs[root@server bbs]# chown -R root:nginx ./config/
[root@server bbs]# chown -R root:nginx ./data/
[root@server bbs]# chown -R root:nginx ./uc_client/
[root@server bbs]# chown -R root:nginx ./uc_server/
[root@server bbs]#
[root@server bbs]# chmod -R 777 ./config/
[root@server bbs]# chmod -R 777 ./data/
[root@server bbs]# chmod -R 777 ./uc_client/
[root@server bbs]# chmod -R 777 ./uc_server/
第七步:访问http://192.168.245.140/bbs/install/index.php会跳出安装界面,选择“我同意”
选择“下一步”
选择“下一步”
填写数据库信息,选择“下一步”
安装完成会出现如下页面,右下角“点此访问”可以进入论坛主页
第八步:访问http://192.168.245.140/bbs/admin.php登陆论坛后台
CentOS 7.6 源码安装搭建LNMP架构(Nginx、MYSQL、PHP)相关推荐
- linux 源码搭建lnmp_详解CentOS 7.0源码包搭建LNMP 实际环境搭建
Centos7+Nginx1.11.7+MySQL5.7.16+PHP7.1.0+openssl-1.1.0c 一.linux 系统限制配置 1.关闭系统防火墙 systemctl stop fire ...
- linux7squid编译安装,CentOS 7.3 源码安装squid 4.12 及安装过程遇到的一些问题
CentOS 7.3 源码安装squid 4.12 及安装过程遇到的一些问题 一.源码安装squid 4.12 1.下载squid-4.12源码包 wget http://www.squid-cach ...
- CentOS 7中源码安装MySQL 5.7.16 ----已测试验证
最近在CentOS 7中源码安装MySQL 5.7.6+,发现MySQL5.7.6+以后的安装方式真的与以前版本的MySQL安装方式大大的不同呀.不自己安装一把,你都不知道不同之处在哪,下面这篇文章是 ...
- 【小程序源码】检讨书生成微信小程序工具源码-安装搭建简单
对于经常写检讨的小伙伴来说,福音来了 因为这是一款检讨书生成小程序 所以再也不用为了写检讨而烦恼了哦 支持自定义字数下线,主题自定义 支持多种类型检讨比如:学生党的,男朋友,领导演讲稿,共青团申请书等 ...
- CentOS上PHP源码安装和配置
CentOS上PHP源码安装和配置 此文是在CentOS 7上已经部署了Nginx的基础上进行的 关于CentOS7上安装Nginx,可参考我之前的文章: CentOS上Nginx安装记录 我们现在在 ...
- 基于Centos7.5源码编译搭建LAMP架构
简介LAMP源码编译搭建LAMP架构 为什么要源码编译 一般来说,我们软件的安装方式有Yum(rpm),和源码编译两种方式,那么为什么我们需要源码编译安装一部分软件?选择源码编译安装软件有以下几个原因 ...
- linux nginx安装php5.5,linux下搭建LNMP(linux+nginx+mysql+php)环境之mysql5.5安装
linux下搭建LNMP(linux+nginx+mysql+php)环境之mysql5.5安装: 首先安装依赖包: yum -y install gcc gcc-c++ autoconf libjp ...
- lnmp php 5.4,linux下搭建LNMP(linux+nginx+mysql+php)环境之php5.4安装
安装准备:依赖包下载wget http://ah1.down.chinaz.com/201303/PHP-v5.4.13.tar.gz wget http://soft.7dot.com/soft/l ...
- Centos7快速搭建LNMP (Nginx + MySQL + PHP)
Centos7快速搭建LNMP (Nginx + MySQL + PHP) 1.安装前简单介绍一下yum 2.Nginx安装 3.MySQL安装(这里直接安装MySQL8) 3.1.安装前清理旧版本的 ...
最新文章
- MyEclipse插件安装
- Ansible02-实施playbook
- 如何使用命令行中的“message”和“description”进行更改? [重复]
- c++作业5 9.22
- JavaScript学习笔记:你必须要懂的原生JS(一)
- Codeforces Round #726 (Div. 2) D. Deleting Divisors 博弈
- exp imp 及参数
- Cisco路由配置命令
- 深度解读 | ElasticDL 深度学习框架简化编程,提升集群利用率和研发效率的秘诀...
- css中关于transform、transition、animate的区别
- while和do-while的区别
- 机器学习--线性回归1_线性回归-进入迷人世界的第一步
- 《Sharding-JDBC》——数据库分表+数据库脱敏实现方案
- 明明有 Windows 11,为什么还要用国产操作系统?
- 12个可以免费自学编程的网站
- sql with ties_SQL WITH TIES子句
- 一个好玩的编程小游戏—— 母牛生小牛
- javaweb开发和j2ee区别
- 使用ajax发送数组请求,Ajax请求传递数组参数
- Mac卸载程序清除残留文件
热门文章
- 2023年省信息教师培训day17
- 化学相关计算机知识,化学练习_电脑基础知识_it计算机_专业资料.ppt
- 高等数学--向量代数运算与模(八)
- ckeditor5+vue2 实现自定义文件上传插件
- Google SEO 教程-跨境知道
- 2022年宝安区工业互联网资源池企业申报工作的通知
- 计算机管理员限制会怎么样,电脑被管理员限制登录微信了怎么办
- 「镁客·请讲」美好明天机器人张超:与其做雷同的机器人产品,不如不做
- windows11 窗口移动缓慢、卡顿、 两个鼠标等问题 暂时解决
- 《计算机组成与CPU设计实验》实验3:寄存器组(堆)实验