源码编译安装LAMP

1. Apache概述

Apache 是一款免费开源的 Web 服务器软件,用来处理 HTTP 请求和相应的网页请求。 Apache
Apache 软件基金会开发和维护。在互联网上, Apache 是最广泛使用的 Web 服务器软件之一。它支持多种操作系统,并且可以与多种编程语言进行集成,例如 PHP Python Perl 等。 它不仅可以用于静态网站,还可以支持动态内容的生成 ,比如使用 CGI 脚本来动态生成网页内容。
"Apache" 并不是 "A Patchy Server" 的缩写。它实际上来自于它最初的名称: "A patchy server" ,但是这个名称仅仅是为了表示它是一个由许多补丁和代码组合而成的服务器。后来,这个名称被简化
"Apache" ,它被正式采用为 Apache 软件基金会的名称。 "Apache" 不再代表 "A patchy server"
apache 官网 : www.apache.org

2. Apache 功能

提供 http 协议服务 web
多个虚拟主机: IP Port FQDN 用一台 物理服务器搭建多个网站 百度 jd 淘宝
CGI Common Gateway Interface ,通用网关接口 , 支持动态程序
反向代理: 代理的是 服务端 正向代理: 代理的是客户端
负载均衡
路径别名
丰富的用户认证机制: basic digest
支持第三方模块

3.apache特性

Apache 是一款开源 Web 服务器软件,其主要特点包括 :
1. 跨平台性: Apache 可以运行于 Linux Windows Mac OS 等多种操作系统环境中;
2. 可扩展性: Apache 支持插件式架构,能够方便地扩展新的功能模块;
3. 安全性: Apache 通过 access control SSL/TLS 加密等多种手段保障服务器和数据的安全;
4. 稳定性: Apache 拥有强大的稳定性和健壮性,在高压力下表现良好;
5. 易用性: Apache 提供了简单易用的配置文件,允许管理员以文本方式编辑;
6. 速度快: Apache 优化了请求和响应处理机制,能够提高 Web 服务器的性能。
重要概念
高度模块化: core + modules
DSO Dynamic Shared Object 动态加载 / 卸载
MPM multi-processing module 多路处理模块
注意: httphttp 的 工作模式、怎么处理 高并发的
mpm :同一时间多个用户同时访问
长连接是处理什么的? 单个用户多次请求

MPM multi-processing module 工作模式

prefork 多进程 I/O 模型,每个进程响应一个请求, CentOS 7 httpd 默认模型一个主进程:生成和回收n个子进程,创建套接字,不响应请求多个子进程:工作 work 进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求
Prefork MPM 预派生模式,有一个主控制进程,然后生成多个子进程 , 每个子进程有一个独立的线程响应用户请求,相对比较占用内存,但是比较稳定,可以设置最大和最小进程数,是最古老的一种模式,也是最稳定的模式,适用于访问量不是很大的场景
优点:稳定, 服务周到
缺点:慢,占用资源,不适用于高并发场景
worker :复用的多进程 I/O 模型 , 多进程多线程, IIS 使用此模型
一个主进程:生成 m 个子进程,每个子进程负责生个 n 个线程,每个线程响应一个请求,并发响应请求: m*n
worker MPM 是一种多进程和多线程混合的模型,有一个控制进程,启动多个子进程,每个子进程里面包含固定的线程,使用线程程来处理请求,当线程不够使用的时候会再启动一个新的子进程,然后在进程里面再启动线程处理请求,由于其使用了线程处理请求,因此可以承受更高的并发。
优点:相比 prefork 占用的内存较少,可以同时处理更多的请求
缺点:使用 keep-alive 的长连接方式,某个线程会一直被占据,即使没有传输数据,也需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。(该问题在prefork 模式下,同样会发生)
event :事件驱动模型( worker 模型的变种), CentOS8 默认模型 处理 并发请求不太理想
一个主进程:生成 m 个子进程,每个子进程负责生个 n 个线程,每个线程响应一个请求,并发响应请求: m*n,有专门的监控线程来管理这些 keep-alive 类型的线程,当有真实请求时,将请求传递给服务线程,执行完毕后,又允许释放。这样增强了高并发场景下的请求处理能力
它和 worker 模式很像,最大的区别在于,它解决了keep-alive 场景下,长期被占用的线程的资源浪费问题(某些线程因为被keep-alive ,空挂在哪里等待,中间几乎没有请求过来,甚至等到超时)。 event MPM 中,会有一个专门的线程来管理这些keep-alive 类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执 行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力 event 只在有数据发送的时候才开始建立连接,连接请求才会触发工作线程,即使用了TCP 的一个选项,叫做延迟接受连接TCP_DEFER_ACCEPT,加了这个选项后,若客户端只进行 TCP 连接,不发送请求,则不会触发 Accept 操作,也就不会触发工作线程去干活,进行了简单的防攻击(TCP 连接)
优点:单线程响应多请求,占据更少的内存,高并发下表现更优秀,会有一个专门的线程来管理 keep alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放
缺点:没有线程安全控制, 进程之间的 切换问题
httpd-2.4 event 稳定版, centos7 以后默认
httpd-2.2 event 测试版, centos6 默认

4.LAMP概述

4.1、 LAMP 平台概述
LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web 站点服务及其应用开发环境
LAMP 是一个缩写词,具体包括 Linux 操作系统, Apache 网站服务器, MySQL 数据库服务器, PHP (或 perl, Python )网页编程语言
4.2 、构建 LAMP 平台顺序
在构建 LAMP 平台时,各组件的安装顺序依次为 Linux Apache MySQL PHP
其中 Apache MySQL 的安装并没有严格的顺序要求,而 PHP 环境的安装一般放到最后,负责沟通 web 服务器和数据库系统以协同工作
4.3 、编译安装的优点
1 、具有较大的自由度,功能可定制
2 、可及时获得最新的软件版本
3 、普遍适用于大多数 Linux 版本,便于一直使用
4.4 、各组件的主要作用
( 平台 )Linux :作为 LAMP 架构的基础,提供用于支撑 Web 站点的操作系统,能够与其他三个组件提
供更好的稳定性,兼容性 (AMP 组件也支持 Windows UNIX 等平台 )
( 前台 )Apache :作为 LAMP 架构的前端,是一款功能强大,稳定性好的 Web 服务器程序,该服务器
直接面向用户提供网站访问,发送网页,图片等文件内容。
( 后台 )MySQL :作为 LAMP 架构的后端,是一款流行的开源关系数据库系统。在企业网站、业务系
统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到 MySQL 数据库,其他程序可以通过SQL 语句来查询,更改这些信息。
( 中间连接 )PHP/Perl/Python :作为三种开发动态网页的编程语言,负责解释动态网页文件,负责
沟通 Web 服务器和数据库系统以协同工作,并提供 Web 应用程序的开发和运行环境。其中 PHP 是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML 中,尤其适合于 Web 应用开
发。

访问网页  ——>  apache   如果是静态页面,apache直接返回给客户端

如果是动态页面,apache会转发给php,用户输入用户名、密码

php会到mysql数据库里去找用户名、密码,

如果找到匹配的用户名密码,mysql会返回给php,再返回给apache,告诉用户成功登录

如果没有匹配的用户名密码,mysql会返回给php,再返回给apache,告诉用户用户名密码错误

5.Wget(下载文件/网页)

用于下载文件和递归下载整个网站

格式:

wget [OPTION]... [URL]...
常用选项:
-q 静默模式
-c 断点续传
-P /path 保存在指定目录
-O filename 保存为指定文件名, filename - 时,发送至标准输出
--limit-rate   指定传输速率,单位 K M

-b   后台下载

例,以2兆速度下载 源 到/home 路径下
[root@localhost home]# wget --limit-rate 2M -P /home https://developer.aliyun.com/mirror/centos-vault?spm=a2c6h.13651104.d-2001.2.4279320czyMauY

例 ,在后台  以2兆速度下载 源 到/home 路径下

[root@localhost home]# wget -b --limit-rate 2M -P /home https://developer.aliyun.com/mirror/centos-vault?spm=a2c6h.13651104.d-2001.2.4279320czyMauY

例,将  URL  保存为指定文件名 nginx.tar.gz

wget -O nginx.tar.gz https://nginx.org/download/nginx-1.20.1.tar.gz

6.curl(文件传输)

curl 是基于 URL 语法在命令行方式下工作的文件传输工具,它支持 FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及 LDAP 等协议。 curl 支持 HTTPS 认证,并且支持 HTTP POST PUT 等方法, FTP 上传, kerberos 认证, HTTP 上传,代理服务器, cookies ,用户名 / 密码认证, 下载文件断点续传,上载文件断点续传, http 代理服务器管道( proxy tunneling ),还支持 IPv6 socks5 代理服务器,通过 http代理服务器上传文件到FTP 服务器等,功能十分强大
文件传输、下载文件或网页、上传数据到服务器、模拟浏览器、调试和测试 Web 服务
格式:
curl  [options]  [URL...]
模拟 一些 操作
选项:
-A /--user-agent <string> 设置用户代理发送给服务器
-e /--referer <URL> 来源网址
--cacert <file> CA 证书 (SSL)
-k /--insecure 允许忽略证书进行 SSL 连接
--compressed 要求返回是压缩的格式
-H /--header "key:value” 自定义首部字段传递给服务器
-i 显示页面内容,包括报文首部信息 -I /--head 只显示响应报文首部信息
-D /--dump-header <file> url header 信息存放在指定文件中
--basic 使用 HTTP 基本认证
-u /--user <user[:password]> 设置服务器的用户和密码
-L 如果有 3xx 响应码,重新发请求到新位置
-O 使用 URL 中默认的文件名保存文件到本地
-o <file> 将网络文件保存为指定的文件中
--limit-rate <rate> 设置传输速度
-0 /--http1.0 数字 0 ,使用 HTTP 1 .0
-v /--verbose 更详细
-C 选项可对文件使用断点续传功能
-c /--cookie-jar <file name> url cookie 存放在指定文件中
-x /--proxy <proxyhost[:port]> 指定代理服务器地址
-X /--request <command> 向服务器发送指定请求方法
-U /--proxy-user <user:password> 代理服务器用户和密码
-T 选项可将指定的本地文件上传到 FTP 服务器上
--data /-d 方式指定使用 POST 方式传递数据
-s --silent Silent mode
-b name = data 从服务器响应 set-cookie 得到值,返回给服务器
-w <format> 显示相应的指定的报文信息,如: %{http_code} %{remote_ip}
-m , --max-time <time> 允许最大传输时间

例,测试百度服务

[root@localhost ~]# curl -I http://www.baidu.com

例,下载百度网页

 [root@localhost ~]# curl http://www.baidu.com

curl -s -I -m10 -o /dev/null -w %{http_code} http://www.baidu.com/
#提取状态码
curl -s -I -m10 -o /dev/null -w %{remote_ip} http://www.baidu.com/
# 服务器
curl -s -I -m10 -o /dev/null -w %{local_ip} http://www.baidu.com/
# 本机地址
curl -s -I -m10 -o /dev/null -w %{local_port} http://www.baidu.com/
# 本地端口 随机的
curl -s -I -m10 -o /dev/null -w %{remote_port} http://www.baidu.com/
# 80
[root@localhost ~] #curl www.163.com -vA chrome
# 冒充 chrome 浏览器
curl 浏览增加负担

7. 压力测试工具 ab

httpd 的压力测试工具:
ab, webbench, http_load, seige
Jmeter 开源
Loadrunner 商业,有相关认证
tcpcopy :网易,复制生产环境中的真实请求,并将之保存
ab 来自 httpd-tools
yum install -y httpd-tools
命令格式:
ab [OPTIONS] URL
选项:
-n:总请求数
-c:模拟的并发数
-k:以持久连接模式测试

并发:很多人一起访问网页         并发数:多少人一起访问

例 

[root@localhost ~]# ab -n1000 -c1000 http://192.168.190.50/
[root@localhost ~]# top              查看并发(CPU占有率)

8、安装Apache

必须是干净的环境,没有httpd服务,有的话先删掉httpd

yum remove httpd

下面两个插件是httpd2.4以后的版本所需要
1、关机,把内存设为8G,处理器数量1,每个处理器的内核数量4,开机

2、 把压缩包拖进来,或者用ftp(root用户不能远程登录,不然危险)

 3、解包

tar xf apr-1.6.2.tar.gz
tar xf apr-util-1.6.0.tar.gz
tar xf httpd-2.4.29.tar.bz2
mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util

4、下载 

[root@localhost opt]# yum install -y gcc gcc-c++ make  pcre pcre-devel expat-devel perl

也可以用下面换行输出

yum -y install \
gcc \                            #C语言的编译器
gcc-c++ \                        #C++的编译器
make \                            #源代码编译器(源代码转换成二进制文件)
pcre \                            #pcre是一个Perl函数库,包括perl 兼容的正则表达式库
pcre-devel \                    #perl的接口开发包
expat-devel \                   #用于支持网站解析HTML、XML文件
perl                            #perl语言编译器

yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl

[root@localhost opt]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \        #指定 httpd 服务程序的安装路径
--enable-so \                    #启用动态加载核心模块支持,使 httpd 具备进一步扩展功能的能力
--enable-rewrite \                #启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护
--enable-charset-lite \            #启动字符集支持,以便支持使用各种字符集编码的页面
--enable-cgi                    #启用CGI(通用网关接口)脚本程序支持,便于网站的外部扩展应用访问能力

cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi

成功不报错

[root@localhost httpd-2.4.29]# make -j 4 && make install     

#我前面虚拟机设置的每个处理器的内核数量4,如果是2个的话就改2

 

#优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/

5、加入系统服务管理有两种方式

方法一:
#便于service管理 
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
vim /etc/init.d/httpd

# chkconfig: 35 85 21  //35级别自动运行  第85个启动 第21个关闭
# description: Apache is a World Wide Web server

chkconfig --add httpd //将httpd加入到系统管理器

启动服务
service httpd start

方法二:

[root@localhost httpd-2.4.29]# cd /lib/systemd/system
[root@localhost system]# cp sshd.service httpd.service
[root@localhost system]# vim httpd.service 

[Unit]
Description=The Apache HTTP Server                        #描述
After=network.target                                    #描述服务类别
[Service]
Type=forking                                            #后台运行方式
PIDFile=/usr/local/httpd/logs/httpd.pid                    #PID文件位置
ExecStart=/usr/local/bin/apachectl $OPTIONS                #启动服务
ExecReload=/bin/kill -HUP $MAINPID                        #根据PID重载配置

复制的话把中文注释和空格删掉

[root@localhost system]# systemctl start httpd.service       #启动服务

6、编辑配置文件 

vi /usr/local/httpd/conf/httpd.conf
#--52行--修改
#Listen 192.168.200.50:80
--197行--取消注释,修改
ServerName 192.168.10.80:80
--221行--默认首页存放路径
DocumentRoot "/usr/local/httpd/htdocs"   以后 有存储
--255行--默认首页文件名设置
DirectoryIndex index.html

 7、检查语法,端口检查

[root@localhost ~]# httpd -t
Syntax OK
[root@localhost ~]# apachectl -t
Syntax OK
[root@localhost ~]# cat /usr/local/httpd/htdocs/index.html 
<html><body><h1>It works!</h1></body></html>

[root@localhost ~]# netstat -antulp |grep httpd

tcp6       0      0 :::80                   :::*                    LISTEN      35597/httpd 

8、测试


9、安装MYSQL


1、安装mysql服务内存必须4G以上

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake

yum -y install \
gcc \
gcc-c++ \
ncurses \                #字符终端下图形互动功能的动态库
ncurses-devel \            #ncurses开发包
bison \                    #语法分析器
cmake                    #mysql需要用cmake编译安装


2、创建程序用户管理

[root@localhost ~]# cd /opt

[root@localhost opt]# useradd -s /sbin/nologin mysql
[root@localhost opt]# tail -1 /etc/passwd
mysql:x:1001:1001::/home/mysql:/sbin/nologin

[root@localhost opt]# tar zxvf mysql-5.7.17.tar.gz -C /opt
[root@localhost opt]# tar zxvf boost_1_59_0.tar.gz

[root@localhost opt]# mv boost_1_59_0 /usr/local/boost

5.7    8.0

3、cmake

[root@localhost opt]# cd /opt/mysql-5.7.17/
[root@localhost mysql-5.7.17]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \        #指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \                             #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \            #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \                       #指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \            #指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \                        #指定支持其他字符集编码
-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=/usr/local/boost \          #指定boost的路径,若使用mysql-boost集成包安装则-----DWITH_BOOST=boost \
-DWITH_SYSTEMD=1  \                              #生成便于systemctl管理的文件                            -/opt/mysql-5.7.17


存储引擎选项:
MYISAM,MERGE,MEMORY和cSv引擎是默认编译到服务器中,并不需要明确地安装。静态编译一个存储引擎到服务器,使用-DWITH engine STORAGE ENGINE= 1
可用的存储引擎值有:ARCHIVE,BLACKHOLE,EXAMPLE,FBDERATBDB(InnoDB),PARTTTON(partitioning support),和PERFSCHEMA(Performance schema),IMNOBAS
---------------------------------------------------------------------------------------------------------------------------------

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=/usr/local/boost \
-DWITH_SYSTEMD=1 \                                                                                                         -/opt/mysql-5.7.17               

make && make install

注意:部署mysql报错基本都是内存不足造成 
可以试下  echo 1 > /proc/sys/vm/drop_caches
  #清除缓存  

如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧

4、编译、安装

[root@localhost mysql-5.7.17]# make -j 4 && make install

5、创建普通用户管理mysql

[root@localhost mysql-5.7.17]# cd /usr/local/

[root@localhost local]# useradd -s /sbin/nologin mysql        #前面创建过用户就省略这步
[root@localhost local]# chown -R mysql:mysql /usr/local/mysql/

#更改管理主/组

[root@localhost local]# chown mysql:mysql /etc/my.cnf         #my.cnf 没有权限,不能下载


6、修改配置文件

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                    #设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid        #指定pid 进程文件路径
socket=/usr/local/mysql/mysql.sock            #指定数据库连接文件
bind-address = 0.0.0.0                        #设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
skip-name-resolve                            #禁用DNS解析
max_connections=2048                        #设置mysql的最大连接数
default-storage-engine=INNODB                #指定默认存储引擎
max_allowed_packet=16M                        #设置数据库接收的数据包大小的最大值
server-id = 1                                #指定服务ID号

以下可以直接复制(复制的话要删掉所有行尾的空格):

[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
auto-rehash

[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

复制内容有空格会报错,用 :set list 可以找空格

---------------------------------------------------------------------------------------------------------------------------------------------------------sql_mode常用值如下:
NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

STRICT_TRANS_TABLES
在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制

NO_AUTO_CREATE_USER
禁正GRANT创建密码为空的用户

NO_AUTO_VALUE_ON_ZERO
mysql中的自增长列可以从O开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错

NO_ZERO_IN_DATE
不允许日期和月份为零

NO_ZERO_DATE
mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告

ERROR_FOR_DIVISION_BY_ZERO
在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULL

PIPES_As_CONCAT
将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似

ANSI_QUOTES
启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符
---------------------------------------------------------------------------------------------------------------------------------

7、设置环境变量,申明/宣告mysql命令便于系统识别

[root@localhost local]# cd /usr/local/mysql/bin/
[root@localhost bin]# pwd
/usr/local/mysql/bin
[root@localhost bin]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@localhost bin]# source /etc/profile


8、初始化数据库

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \                #生成初始化密码为空
--user=mysql \                      #指定管理用户
--basedir=/usr/local/mysql \        #指定数据库的安装目录
--datadir=/usr/local/mysql/data        #指定数据库文件的存储路径

复制的话要删掉所有行尾的空格 

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload                   #刷新识别     
systemctl start mysqld.service           #开启服务
systemctl enable mysqld.service        #开机自启动
netstat -antup | grep 3306       #查看端口

9、给root账号设置密码

mysqladmin -u root -p password "123456" 
Enter password:直接回车,别输内容

mysql -u root -p

mysql -u root -p123456

10、安装PHP

1、安装GD库和GD库关联程序,用来处理和生成图片

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

3、解包 

cd /opt
[root@localhost opt]# tar zxvf php-7.1.24.tar.gz                    #解包到当前路径

3、配置软件模块

[root@localhost opt]# cd /opt/php-7.1.24/
[root@localhost php-7.1.24]# ./configure \
--prefix=/usr/local/php7 \                            #指定将 PHP 程序的安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \            #指定Apache httpd服务提供的apxs 模块支持程序的文件位置
--with-mysql-sock=/usr/local/mysql/mysql.sock \        #指定mysql 数据库连接文件的存储路径
--with-config-file-path=/usr/local/php7                #设置 PHP 的配置文件 php.ini 将要存放的位置
--with-mysqli \                                        #添加 MySQL 扩展支持 #mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定
--with-zlib \                                        #支持zlib功能,提供数据压缩
--with-curl \                                        #开启curl扩展功能,实现HTTP的Get下载和Post请求的方法
--with-gd \                                            #激活gd 库的支持
--with-jpeg-dir \                                    #激活jpeg 的支持
--with-png-dir \                                    #激活png 的支持
--with-freetype-dir \
--with-openssl \
--enable-mbstring \                                    #启用多字节字符串功能,以便支持中文等代码
--enable-xml \                                        #开启扩展性标记语言模块
--enable-session \                                    #会话
--enable-ftp \                                        #文本传输协议
--enable-pdo \                                        #函数库
--enable-tokenizer \                                #令牌解释器
--enable-zip                                        #ZIP压缩格式

报错的话一般是磁盘空间不够

./configure \
--prefix=/usr/local/php7 \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-config-file-path=/usr/local/php7 \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer 

4、编译安装 

make -j 4 && make install 

5、复制模板文件,并进行修改

cp /opt/php-7.1.24/php.ini-development /usr/local/php7/php.ini
vim /usr/local/php7/php.ini
--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghai

:set nu            Esc         cd 1170

6、优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别

ln -s /usr/local/php7/bin/* /usr/local/bin/


7、修改Apache配置文件让Apache支持PHP

vi /etc/httpd.conf 
#添加index.php
255 <IfModule dir_module>
256     DirectoryIndex index.html index.php
257 </IfModule>
#在392行下方插入一下内容,让Apache可以支持.php的网页文件
AddType application/x-httpd-php .php             #注意空格
AddType application/x-httpd-php-source .phps
##检查156行默认支持php7的模块是否存在
LoadModule php7_module   modules/libphp7.so

8、创建、编辑php页面文件

rm -rf /usr/local/httpd/htdocs/index.html
vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>

9、重启mysql服务· 

systemctl restart httpd.service

10、测试

在网页测试“http://192.168.190.50/index.php”

11、安装论坛

安装之前一定要有LAMP的架构

1.创建一个数据库

mysql -u root -p123456

mysql> CREATE DATABASE bbs;                                                                                                Query OK, 1 row affected (0.01 sec)

mysql> show databases;        查看数据库

#把bbs数据库里面所有表的权限授予给bbsuser,并设置密码

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

#刷新数据库
mysql>flush privileges; 

mysql>exit

2、解压论坛压缩包

[root@localhost dir_SC_UTF8]# cd /opt

[root@localhost opt]# unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis

3、上传站点更新包 

[root@localhost opt]# cd /opt/dis/cd dir_SC_UTF8/
[root@localhost dir_SC_UTF8]# cp -r upload/ /usr/local/httpd/htdocs/bbs

4、切换论坛目录

cd /usr/local/httpd/htdocs/bbs

5、更改论坛目录属主

chown -R daemon ./config                #-R递归
chown -R daemon ./data
chown -R daemon ./uc_client
chown -R daemon ./uc_server/data


6、访问论坛地址

访问地址:http://192.168.190.50/bbs/install/

如果你是安装好,在虚拟机里恢复快照的话 

访问地址:http://192.168.190.50/bbs 

http://192.168.190.50/bbs/install/ 会显示已安装过,是否重新安装 (没必要,直接访问bbs)

如果第5步未设置权限,网站会有×,错误

在第5步,添加权限后,就正确了

如遇到报错信息如下
Fatal error: Uncaught Error: Call to undefined function set_magic_quotes_runtime() in /data/www/install/index.php:12 Stack trace: #0 {main} thrown in /data/www/install/index.php on line 12
解决方法
#致命错误:未捕获错误:未定义的函数的调用set_magic_quotes_runtime(),在这个文件的第12行,找到该路径下的index.php这个文件打开,查找set_magic_quotes_runtime

#切换目录
cd /usr/local/httpd/htdocs/bbs/install
vim index.php进行编辑

//把 
  
@set_magic_quotes_runtime(0); 
  
//替代成 
  
@ini_set("magic_quotes_runtime",0)

故障问题已解决

7、Discuz论坛安装

数据库服务器: localhost   #本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
数据库名字: bbs
数据库用户名: bbsuser
数据库密码: admin123
管理员账号: admin
管理员密码: admin123

①点击下一步

②下一步

③创建数据库

如果这步输错东西的话,就会出现以下报错

需要到虚拟机,删掉 install.lock文件  rm -rf /usr/local/httpd/htdocs/bbs/data/install.lock

④安装

⑤登录

⑥登录成功

-----------------下面测试数据库工作是否正常---------------------------
mysql -u root -p

CREATE DATABASE sky;
GRANT all ON sky.* TO 'skyuser'@'%' IDENTIFIED BY 'admin123';
flush privileges; 

vim /usr/local/http/htdocs/index.php
<?php
$link=mysql_connect('192.168.226.128','skyuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?>

  • 29
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值