Linux系统——LNMP架构

目录

一、LNMP架构定义

1.LNMP定义

1.1LNMP工作原理 

2.FASTCGI

2.1CGI的由来

2.2为什么会有FastCGI

3.PHP

3.1什么是PHP-FPM

3.2PHP配置

3.1.1对配置文件的修改生效方法

3.1.2/etc/php.ini配置文件格式

3.1.3注释符:

3.1.4php.ini配置参考文档

3.1.5php常见设置

二、搭建LNMP架构

1.编译安装Nginx

2.编译安装Mysql

3.编译安装php

4.修改Nginx配置

5.安装论坛

6.搭建博客


一、LNMP架构定义

1.LNMP定义

LNMP(Linux Nginx Mysql Php)是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写;Linux系统下Nginx+MySQL+PHP这种网站服务器架构。

  • Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
  • Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好
  • MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。MySQL不仅是开放源代码的,也因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
  • PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。因为PHP的开源性、免费性、快捷性等特点使其成为目前最流行的编程语言。

四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。Nginx使用更少的资源,支持更多的并发连接,体现更高的效率;Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务;Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法);Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

1.1LNMP工作原理 

  • 第一步:用户在浏览器输入域名或者IP访问网站
  • 第二步:用户在访问网站的时候,向web服务器发出http request请求,服务器响应并处理web请求,返回静态网页资源,如CSS、picture、video等,然后缓存在用户主机上。
  • 第三步:服务器调用动态资源,PHP脚本调用fastCGI传输给php-fpm,然后php-fpm调用PHP解释器进程解析PHP脚本。
  • 第四步:出现大流量高并发情况,PHP解析器也可以开启多进程处理高并发,将解析后的脚本返回给php-fpm,然后php-fpm再调给fast-cgi将脚本解析信息传送给nginx,服务器再通过http response传送给用户浏览器。
  • 第五步:浏览器再将服务器传送的信息进行解析与渲染,呈现给用户。

2.FASTCGI

2.1CGI的由来

最早的Web服务器只能简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给测览器,也就是静态html文件,但是后期随着网站功能增多网站开发也越来越复杂,以至于出现动态技术,比如像php(1995年)、java(1995)、python(1991)语言开发的网站,但是nginx/apache服务器并不能直接运行 php、java这样的文件,apache实现的方式是打补丁,但是nginx却通过与第三方基于协议实现,即通过某种特定协议将客户端请求转发给第三方服务处理,第三方服务器会新建新的进程处理用户的请求,处理完成后返回数据给Nginx并回收进程**,最后nginx在返回给客户端,那这个约定就是通用网关接口(common gateway interface,简称CGI),CGI(协议)是web服务器和外部应用程序之间的接口标准,是cgi程序和web服务器之间传递信息的标准化接口。

CGI全称"通用网关接口"(Common Gateway Interface),用于HTTP服务器与其它机器上的程序服务通信交流的一种工具,CGI程序须运行在网络服务器上。

传统CGI接口方式的主要缺点是性能较差,因为每次HTTP服务器遇到动态程序时都需要重启解析器来执行解析,然后结果被返回给HTTP服务器。这在处理高并发访问几乎是不可用的,因此就诞生了FastCGI。另外传统的CGI接口方式安全性也很差。

FastCGI特点:

  • FastCGI是HTTP服务器和动态脚本语言间通信的接口或者工具。
  • FastCGI优点是把动态语言解析和HTTP服务器分离开来。
  • Nginx、Apache、Lighttpd以及多数动态语言都支持FastCGI。
  • FastCGI接口方式采用C/S架构,分为客户端(HTTP服务器)和服务端(动态语言解析服务器)。
  • PHP动态语言服务端可以启动多个FastCGI的守护进程。
  • HTTP服务器通过FastCGI客户端和动态语言FastCGI服务端通信。

2.2为什么会有FastCGI

FastCGI是一个可伸缩地、高速地在HTTP服务器和动态脚本语言间通信的接口(FastCGI接口在Linux下是socket(可以是文件socket,也可以是ip socket)),主要优点是把动态语言和HTTP服务器分离开来。多数流行的HTTP服务器都支持FastCGI,包括Apache、Nginx和lightpd。

CGI协议虽然解决了语言解析器和 Web Server 之间通讯的问题,但是它的效率很低,因为 Web Server每收到一个请求都会创建一个CGl进程,PHP解析器都会解析php.ini文件,初始化环境,请求结束的时候再关闭进程,对于每一个创建的CG进程都会执行这些操作,所以效率很低,而FastCGI是用来提高CGI性能的,FastCG!每次处理完请求之后不会关闭掉进程,而是保留这个进程,使这个进程可以处理多个请求。这样的话每个请求都不用再重新创建一个进程了,大大提升了处理效率。

CGI相当于兼职,一次性的过河拆桥式的服务;FASTCGI相当于专职,全周期的持续式的服务 

  • Nginx不支持对外部动态程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。
  • FastCGI接口在Linux下是socket(可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper,这个wrapper绑定在某个固定socket上,如端口或者文件socket。
  • 当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接收到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端,这就是Nginx+FastCGI的整个运作过程。
名称在Web服务器方面在对数据进行处理的进程方面
CGIfork一个新的进程进行处理读取参数,处理数据,然后就结束生命周期
FASTCGI用tcp方式跟远程机子的进程或本地进程建立连接要开启tcp端口,进入循环,等待数据的到来,处理数据

3.PHP

3.1什么是PHP-FPM

PHP官网:http://www.php.net/

PHP-FPM(FastCGl Process Manager:FastCG!进程管理器)是一个实现了Fastcgi的程序,并且提供进程管理的功能。进程包括master进程和worker进程。master进程只有一个,负责监听端口,接受来自web server的请求。worker进程一般会有多个,每个进程中会嵌入一个PHP解析器,进行PHP代码的处理。
PHP(Hypertext Preprocessor 超文本预处理器)是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用
Rasmus Lerdor于1994年开始开发PHP,最初是一组被Rasmus Lerdor称作“PersonalHome Page Too”的Per)脚本,可以用于显示作者的简历并记录用户对其网站的访问。后来,RasmusLerdorf使用C语言将这些Perl脚本重写为CG!程序,还为其增加了运行Web forms的能力以及与数据库交互的特性,并将其重命名为“Personal Home Page/Forms Interpreter”或“PHP/EI”。此时,PHP/F!已经可以用于开comp.infosystems.www.authoring.cgi Usenet讨论组,从此PHP开始走进人们的视野。1997年,其2.0版本发布

1997年,两名以色列程序员Zeev Suraski和Andi Gutmans重写的PHP的分析器(parser)成为PHP发展到3.0的基础,而且从此将PHP重命名为PHP: Hypertext Preprocessor。此后,这两名程序员开始重写整个PHP核心,并于1999年发布了Zend Engine 1.0,这也意味着PHP 4.0的诞生,2004年7月,Zend Engine2.0发布,由此也将PHP带入了PHP5时代。PHP5包含了许多重要的新特性,如增强的面向对象编程的支持、支持PDO(PHP Data Obiects)扩展机制以及一系列对PHP性能的改进

Zend Engine是开源的、PHP脚本语言的解释器,它最早是由以色列理工学院(Technion)的学生Andi Gutmans和Zeev suraski所开发,Zend也正是此二人名字的合称。后来两人联合创立了Zend Technologies公司

Zend Engine 1.0于1999年随PHP4发布,由C语言开发且经过高度优化,并能够做为PHP的后端模块使用。Zend Engine为PHP提供了内存和资源管理的功能以及其它的一些标准服务,其高性能、可靠性和可扩展性在促进PHP成为一种流行的语言方面发挥了重要作用

Zend Engine的出现将PHP代码的处理过程分成了两个阶段:首先是分析PHP代码并将其转换为称作Zend opcode的二进制格式opcode(类似Java的字节码),并将其存储于内存中;第二阶段是使用Zend Engine去执行这些转换后的Opcode  

3.2PHP配置

php的配置文件:/etc/php.ini,/etc/php.d/*.ini

配置文件在php解释器启动时被读取

3.1.1对配置文件的修改生效方法
  • Modules:重启httpd服务
  • FastCGI:重启php-fpm服务
3.1.2/etc/php.ini配置文件格式
[foo]:Section Header
directive = value
3.1.3注释符:
  • 以#开头,纯粹的注释信息
  • 以;开头,用于注释可启用的directive

提示:较新的版本中,已经完全使用“ ; ” 进行注释

3.1.4php.ini配置参考文档
  • php.ini的核心配置选项文档:http://php.net/manual/zh/ini.core.php
  • php.ini配置选项列表:http://php.net/manual/zh/ini.list.php
3.1.5php常见设置
expose_php = On
#响应报文显示首部字段x-poered-by:PHP/x.y.z,暴露php版本,建议为off

max_execution_time = 30
#最长执行时间为30s

memory_limit=128M
#可调大

display_errors=off
#调试使用,不要打开,否则可能暴露重要信息

display_startup_errors=off
#建议关闭

post_max_size=8M
#最大上传数据大小,可能调大,比下面的项大

upload_max_filesize=2M
#最大上传文件,可能调大

max_file_uploads = 20
#同时上传最多文件数

date.timezone = Asia/Shanghai
#指定时区

short_open_tag=on
#开启短标签,如:<? phpinfo();?>

二、搭建LNMP架构

1.编译安装Nginx

需要实现准备nginx-1.22.0.tar.gz压缩包

[root@localhost ~]#cd /opt
[root@localhost opt]#ls
Discuz_X3.4_SC_UTF8.zip    nginx-1.22.0.tar.gz
mysql-boost-5.7.20.tar.gz  php-7.1.10.tar.bz2
[root@localhost opt]#tar xf nginx-1.22.0.tar.gz 
[root@localhost opt]#cd nginx-1.22.0/
[root@localhost nginx-1.22.0]#yum -y install pcre-devel zlib-devel gcc gcc-c++ make
#安装依赖包
[root@localhost nginx-1.22.0]#useradd -M -s /sbin/nologin nginx
#(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)
[root@localhost nginx-1.22.0]#./configure \
> --prefix=/usr/local/nginx \
#指定nginx的安装路径
> --user=nginx \
#指定用户名
> --group=nginx \
#指定组名
> --with-http_stub_status_module
#启用http_stub_status_module 模块以支持状态统计
[root@localhost nginx-1.22.0]#make -j2
[root@localhost nginx-1.22.0]#make install
[root@localhost nginx-1.22.0]#ln -s /usr/local/nginx/sbin/nginx /usr/bin
#让系统识别nginx的操作命令可以自动补全   nginx     $PATH
[root@localhost 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 
ExecStop=/bin/kill -3 
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@localhost nginx-1.22.0]#systemctl daemon-reload
[root@localhost nginx-1.22.0]#systemctl enable --now nginx.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@localhost nginx-1.22.0]#systemctl status nginx

2.编译安装Mysql

需要事先准备mysql-boost-5.7.20.tar.gz压缩包

#安装Mysql环境依赖包
[root@localhost nginx-1.22.0]#yum -y install \
> ncurses \
> ncurses-devel \
> bison \
> cmake


[root@localhost nginx-1.22.0]#yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel   ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel

#创建运行用户
[root@localhost nginx-1.22.0]#useradd -M -s /sbin/nologin  mysql

#编译安装
[root@localhost nginx-1.22.0]#cd /opt
[root@localhost opt]#ls
Discuz_X3.4_SC_UTF8.zip    nginx-1.22.0         php-7.1.10.tar.bz2
mysql-boost-5.7.20.tar.gz  nginx-1.22.0.tar.gz
[root@localhost opt]#tar xf mysql-boost-5.7.20.tar.gz 
[root@localhost opt]#cd mysql-5.7.20/
[root@localhost mysql-5.7.20]#ls
boost            Doxyfile-perfschema  mysql-test  storage
BUILD            extra                mysys       strings
client           include              mysys_ssl   support-files
cmake            INSTALL              packaging   testclients
CMakeLists.txt   libbinlogevents      plugin      unittest
cmd-line-utils   libbinlogstandalone  rapid       VERSION
config.h.cmake   libevent             README      vio
configure.cmake  libmysql             regex       win
COPYING          libmysqld            scripts     zlib
dbug             libservices          sql
Docs             man                  sql-common
[root@localhost mysql-5.7.20]#cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
> -DSYSCONFDIR=/etc \
> -DSYSTEMD_PID_DIR=/usr/local/mysql \
> -DDEFAULT_CHARSET=utf8  \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DWITH_EXTRA_CHARSETS=all \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
> -DMYSQL_DATADIR=/usr/local/mysql/data \
> -DWITH_BOOST=boost \
> -DWITH_SYSTEMD=1
[root@localhost mysql-5.7.20]#make -j2
[root@localhost mysql-5.7.20]#make install
[root@localhost mysql-5.7.20]#ls /usr/local/mysql/
bin      COPYING-test  include  man         README       share          usr
COPYING  docs          lib      mysql-test  README-test  support-files


#修改mysql 配置文件

[root@localhost mysql-5.7.20]#vim /etc/my.cnf


[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
 
[mysqld]
user = 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
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
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_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES



#更改mysql安装目录和配置文件的属主属组
[root@localhost mysql-5.7.20]#chown -R mysql:mysql /usr/local/mysql/
[root@localhost mysql-5.7.20]#chown mysql:mysql /etc/my.cnf


#设置路径环境变量
[root@localhost mysql-5.7.20]#echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@localhost mysql-5.7.20]#source /etc/profile
[root@localhost mysql-5.7.20]#echo $PATH
/usr/local/mysql/bin:/usr/local/mysql/lib:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


#初始化数据库
[root@localhost mysql-5.7.20]#cd /usr/local/mysql/bin/
[root@localhost bin]#ls
innochecksum                mysql_config               mysqlslap
lz4_decompress              mysql_config_editor        mysql_ssl_rsa_setup
myisamchk                   mysqld                     mysqltest
myisam_ftdump               mysqld_pre_systemd         mysqltest_embedded
myisamlog                   mysqldump                  mysql_tzinfo_to_sql
myisampack                  mysqldumpslow              mysql_upgrade
my_print_defaults           mysql_embedded             mysqlxtest
mysql                       mysqlimport                perror
mysqladmin                  mysql_install_db           replace
mysqlbinlog                 mysql_plugin               resolveip
mysqlcheck                  mysqlpump                  resolve_stack_dump
mysql_client_test           mysql_secure_installation  zlib_decompress
mysql_client_test_embedded  mysqlshow
[root@localhost bin]#./mysqld \
> --initialize-insecure \
> --user=mysql \
> --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data
> --datadir=/usr/local/mysql/data
[root@localhost bin]#cd ..
[root@localhost mysql]#ls
bin      COPYING-test  docs     lib  mysql-test  README-test  support-files
COPYING  data          include  man  README      share        usr


#添加mysqld系统服务
[root@localhost mysql]#cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost mysql]#systemctl daemon-reload
[root@localhost mysql]#systemctl start mysqld.service
[root@localhost mysql]#systemctl enable mysqld
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
[root@localhost mysql]#systemctl status mysqld.service 


#修改mysql 的登录密码
[root@localhost mysql]#mysqladmin -u root -p password "abc123"
Enter password: 
#给root账号设置密码为abc123,提示输入的是原始密码(为空)要求输入的是原密码直接回车即
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

3.编译安装php

事先要准备好php-7.1.10.tar.bz2 压缩包

[root@localhost mysql]#cd /opt
[root@localhost opt]#ls
Discuz_X3.4_SC_UTF8.zip  mysql-boost-5.7.20.tar.gz  nginx-1.22.0.tar.gz
mysql-5.7.20             nginx-1.22.0               php-7.1.10.tar.bz2
[root@localhost opt]#tar xf php-7.1.10.tar.bz2 
[root@localhost opt]#cd php-7.1.10/


#安装环境依赖包
[root@localhost php-7.1.10]#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@localhost 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@localhost php-7.1.10]#make -j2
[root@localhost php-7.1.10]#make install
[root@localhost php-7.1.10]#ls php.ini-development 
php.ini-development


#调整主配置文件
[root@localhost php-7.1.10]#cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
[root@localhost php-7.1.10]#vim /usr/local/php/lib/php.ini 

[root@localhost php-7.1.10]#cd /usr/local/php/
[root@localhost php]#ls
bin  etc  include  lib  php  sbin  var
[root@localhost php]#cd etc/
[root@localhost etc]#ls
pear.conf  php-fpm.conf.default  php-fpm.d

#调整进程服务配置文件
[root@localhost etc]#cp  php-fpm.conf.default php-fpm.conf
[root@localhost etc]#ls
pear.conf  php-fpm.conf  php-fpm.conf.default  php-fpm.d
[root@localhost etc]#vim php-fpm.conf

#调整扩展配置文件
[root@localhost etc]#cd php-fpm.d/
[root@localhost php-fpm.d]#ls
www.conf.default
[root@localhost php-fpm.d]#cp www.conf.default www.conf
[root@localhost php-fpm.d]#ln -s /usr/local/php/bin/* /usr/local/bin/
[root@localhost php-fpm.d]#ln -s /usr/local/php/sbin/* /usr/local/sbin/
#路径优化
[root@localhost fpm]#cp /opt/php-7.1.10/sapi/fpm/php-fpm.service /usr/lib/systemd/system/
[root@localhost php-fpm.d]#cd /opt/php-7.1.10/sapi/
[root@localhost sapi]#ls
apache2handler  cgi  cli  embed  fpm  litespeed  phpdbg  tests
[root@localhost sapi]#cd fpm/
[root@localhost fpm]#systemctl daemon-reload 
[root@localhost fpm]#systemctl start php-fpm.service
[root@localhost fpm]#systemctl status php-fpm.service
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
   Active: active (running) since 三 2024-02-28 13:03:35 CST; 5s ago
 Main PID: 34991 (php-fpm)
   CGroup: /system.slice/php-fpm.service
           ├─34991 php-fpm: master process (/usr/local/php/etc/php-fpm.conf...
           ├─34993 php-fpm: pool www
           └─34994 php-fpm: pool www

2月 28 13:03:35 localhost.localdomain systemd[1]: Started The PHP FastCGI ...
2月 28 13:03:35 localhost.localdomain systemd[1]: Starting The PHP FastCGI...
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost fpm]#ss -natp|grep 9000
LISTEN     0      128    127.0.0.1:9000                     *:*                   users:(("php-fpm",pid=34994,fd=0),("php-fpm",pid=34993,fd=0),("php-fpm",pid=34991,fd=6))
#PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析

4.修改Nginx配置

[root@localhost fpm]#vim /usr/local/nginx/conf/nginx.conf

[root@localhost fpm]#cd /usr/local/nginx/
[root@localhost nginx]#ls
client_body_temp  fastcgi_temp  logs        sbin       uwsgi_temp
conf              html          proxy_temp  scgi_temp
[root@localhost nginx]#nginx -s reload
[root@localhost html]#vim /usr/local/nginx/conf/nginx.conf
[root@localhost nginx]#nginx -s reload

[root@localhost html]#ls
50x.html  index.html
[root@localhost html]#vim index.php

使用浏览器去访问该主机的php页面,出现下面的页面服务

[root@localhost html]#mysql -uroot -pabc123
#验证数据库是否正常
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.20 Source distribution

Copyright (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> create database bbs;
#创建一个数据库文件
Query OK, 1 row affected (0.01 sec)

mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
#授权 +  新建文件
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
#授权 +  新建文件
Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql> flush privileges;
#刷新数据库
Query OK, 0 rows affected (0.00 sec)
mysql> ^DBye
[root@localhost html]#vim /usr/local/nginx/html/index.php


<?php
$link=mysqli_connect('192.168.241.11','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

使用浏览器再次访问php页面服务

5.安装论坛

事先需要有Discuz_X3.4_SC_UTF8.zip压缩包

[root@localhost html]#cd /opt
[root@localhost opt]#ls
Discuz_X3.4_SC_UTF8.zip    nginx-1.22.0         php-7.1.10.tar.bz2
mysql-5.7.20               nginx-1.22.0.tar.gz
mysql-boost-5.7.20.tar.gz  php-7.1.10
[root@localhost opt]#unzip Discuz_X3.4_SC_UTF8.zip
[root@localhost opt]#cd dir_SC_UTF8/
[root@localhost dir_SC_UTF8]#cp -r upload/   /usr/local/nginx/html/bbs/
[root@localhost dir_SC_UTF8]#cd /usr/local/nginx/html/bbs/
[root@localhost bbs]#ls
admin.php  connect.php      group.php  member.php  search.php  uc_server
api        crossdomain.xml  home.php   misc.php    source
api.php    data             index.php  plugin.php  static
archiver   favicon.ico      install    portal.php  template
config     forum.php        m          robots.txt  uc_client

[root@localhost bbs]#chmod -R 777 ./config/
[root@localhost bbs]#chmod -R 777 ./data/
[root@localhost bbs]#chmod -R 777 ./uc_client/
[root@localhost bbs]#chmod -R 777 ./uc_server/
[root@localhost bbs]#ll
总用量 68
-rw-r--r--  1 root  root  2748 2月  28 13:20 admin.php
drwxr-xr-x 10 root  root   149 2月  28 13:20 api
-rw-r--r--  1 root  root   727 2月  28 13:20 api.php
drwxr-xr-x  2 root  root    23 2月  28 13:20 archiver
drwxrwxrwx  2 nginx nginx   90 2月  28 13:20 config
-rw-r--r--  1 root  root  1017 2月  28 13:20 connect.php
-rw-r--r--  1 root  root   106 2月  28 13:20 crossdomain.xml
drwxrwxrwx 12 nginx nginx  202 2月  28 13:20 data
-rw-r--r--  1 root  root  5558 2月  28 13:20 favicon.ico
-rw-r--r--  1 root  root  2245 2月  28 13:20 forum.php
-rw-r--r--  1 root  root   821 2月  28 13:20 group.php
-rw-r--r--  1 root  root  1280 2月  28 13:20 home.php
-rw-r--r--  1 root  root  5885 2月  28 13:20 index.php
drwxr-xr-x  5 root  root    64 2月  28 13:20 install
drwxr-xr-x  2 root  root    23 2月  28 13:20 m
-rw-r--r--  1 root  root  1025 2月  28 13:20 member.php
-rw-r--r--  1 root  root  2435 2月  28 13:20 misc.php
-rw-r--r--  1 root  root  1788 2月  28 13:20 plugin.php
-rw-r--r--  1 root  root   977 2月  28 13:20 portal.php
-rw-r--r--  1 root  root   582 2月  28 13:20 robots.txt
-rw-r--r--  1 root  root  1155 2月  28 13:20 search.php
drwxr-xr-x 10 root  root   168 2月  28 13:20 source
drwxr-xr-x  7 root  root    86 2月  28 13:20 static
drwxr-xr-x  3 root  root    38 2月  28 13:20 template
drwxrwxrwx  7 nginx nginx  106 2月  28 13:20 uc_client
drwxrwxrwx 14 nginx nginx  256 2月  28 13:20 uc_server

目前论坛就搭好了,可以去测试一下

本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号 

然后可以看到我们搭建好的论坛的页面

目前是以新建的王一博用户进行登录;如果我们切换到管理员用户

6.搭建博客

事先我们要准备好wordpress-6.1.1-zh_CN.zip

[root@localhost bbs]#cd /opt
[root@localhost opt]#ls
dir_SC_UTF8              mysql-boost-5.7.20.tar.gz  php-7.1.10
Discuz_X3.4_SC_UTF8.zip  nginx-1.22.0               php-7.1.10.tar.bz2
mysql-5.7.20             nginx-1.22.0.tar.gz        说明.htm
[root@localhost opt]#rz -E
rz waiting to receive.
[root@localhost opt]#ls
dir_SC_UTF8                nginx-1.22.0         wordpress-6.1.1-zh_CN.zip
Discuz_X3.4_SC_UTF8.zip    nginx-1.22.0.tar.gz  说明.htm
mysql-5.7.20               php-7.1.10
mysql-boost-5.7.20.tar.gz  php-7.1.10.tar.bz2
[root@localhost opt]#unzip wordpress-6.1.1-zh_CN.zip
[root@localhost opt]#ls
dir_SC_UTF8                nginx-1.22.0         wordpress
Discuz_X3.4_SC_UTF8.zip    nginx-1.22.0.tar.gz  wordpress-6.1.1-zh_CN.zip
mysql-5.7.20               php-7.1.10           说明.htm
mysql-boost-5.7.20.tar.gz  php-7.1.10.tar.bz2
[root@localhost opt]#cp -r wordpress/   /usr/local/nginx/html/
[root@localhost opt]#cd /usr/local/nginx/html/
[root@localhost html]#ls
50x.html  bbs  index.html  index.php  wordpress
[root@localhost html]#chmod 777 wordpress/ -R
[root@localhost html]#ll
总用量 20
-rw-r--r--  1 root root  497 2月  28 11:36 50x.html
drwxr-xr-x 13 root root 4096 2月  28 13:20 bbs
-rw-r--r--  1 root root  615 2月  28 11:36 index.html
-rw-r--r--  1 root root  127 2月  28 13:15 index.php
drwxrwxrwx  5 root root 4096 2月  28 13:44 wordpress

[root@localhost html]#mysql -uroot -pabc123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 69
Server version: 5.7.20 Source distribution

Copyright (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> CREATE DATABASE blog;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123'; 
Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> ^DBye

现在我们就可以在自己搭建的博客上面写博客了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值