目录
一、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服务器方面 | 在对数据进行处理的进程方面 |
---|---|---|
CGI | fork一个新的进程进行处理 | 读取参数,处理数据,然后就结束生命周期 |
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
现在我们就可以在自己搭建的博客上面写博客了!