Jump to content
  • Hello visitors, welcome to the Hacker World Forum!

    Red Team 1949  (formerly CHT Attack and Defense Team) In this rapidly changing Internet era, we maintain our original intention and create the best community to jointly exchange network technologies. You can obtain hacker attack and defense skills and knowledge in the forum, or you can join our Telegram communication group to discuss and communicate in real time. All kinds of advertisements are prohibited in the forum. Please register as a registered user to check our usage and privacy policy. Thank you for your cooperation.

    TheHackerWorld Official

Recommended Posts

lamp

目录
  • 1. lamp简介
  • 2. web服务器工作流程
    • 2.1 cgi与fastcgi
    • 2.2 httpd与php结合的方式
    • 2.3 web工作流程
  • 3. lamp平台搭建
    • 3.1 安装httpd
    • 3.2 安装mysql
    • 3.3 安装php

1. lamp简介

有了前面学习的知识的铺垫,今天可以来学习下第一个常用的web架构了。

所谓lamp,其实就是由Linux+Apache+Mysql/MariaDB+Php/Perl/Python的一组动态网站或者服务器的开源软件,除Linux外其它各部件本身都是各自独立的程序,但是因为经常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。

LAMP指的是Linux(操作系统)、Apache(HTTP服务器)、MySQL(也指MariaDB,数据库软件)和PHP(有时也是指Perl或Python)的第一个字母,一般用来建立web应用平台。

2. web服务器工作流程

在说lamp架构平台的搭建前,我们先来了解下什么是CGI,什么是FastCGI,什么是......

web服务器的资源分为两种,静态资源和动态资源

  • 静态资源就是指静态内容,客户端从服务器获得的资源的表现形式与原文件相同。可以简单的理解为就是直接存储于文件系统中的资源
  • 动态资源则通常是程序文件,需要在服务器执行之后,将执行的结果返回给客户端

那么web服务器如何执行程序并将结果返回给客户端呢?下面通过一张图来说明一下web服务器如何处理客户端的请求

2917034-20220803002012622-336863458.png

阶段①显示的是httpd服务器(即apache)和php服务器通过FastCGI协议进行通信,且php作为独立的服务进程运行

阶段②显示的是php程序和mysql数据库间通过mysql协议进行通信。php与mysql本没有什么联系,但是由Php语言写成的程序可以与mysql进行数据交互。同理perl和python写的程序也可以与mysql数据库进行交互

2.1 cgi与fastcgi

CGI(Common Gateway Interface,通用网关接口),CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

FastCGI(Fast Common Gateway Interface)是CGI的改良版,CGI是通过启用一个解释器进程来处理每个请求,耗时且耗资源,而FastCGI则是通过master-worker形式来处理每个请求,即启动一个master主进程,然后根据配置启动几个worker进程,当请求进来时,master会从worker进程中选择一个去处理请求,这样就避免了重复的生成和杀死进程带来的频繁cpu上下文切换而导致耗时

2.2 httpd与php结合的方式

httpd与php结合的方式有以下三种:

  • modules:php将以httpd的扩展模块形式存在,需要加载动态资源时,httpd可以直接通过php模块来加工资源并返回给客户端
    • httpd prefork:libphp5.so(多进程模型的php)
    • httpd event or worker:libphp5-zts.so(线程模型的php)
  • CGI:httpd需要加载动态资源时,通过CGI与php解释器联系,获得php执行的结果,此时httpd负责与php连接的建立和断开等
  • FastCGI:利用php-fpm机制,启动为服务进程,php自行运行为一个服务,https通过socket与php通信

较于CGI方式,FastCGI更为常用,很少有人使用CGI方式来加载动态资源

2.3 web工作流程

  • 客户端通过http协议请求web服务器资源
  • web服务器收到请求后判断客户端请求的资源是静态资源或是动态资源
    • 若是静态资源则直接从本地文件系统取之返回给客户端。
    • 否则若为动态资源则通过FastCGI协议与php服务器联系,通过CGI程序的master进程调度worker进程来执行程序以获得客户端请求的动态资源,并将执行的结果通过FastCGI协议返回给httpd服务器,httpd服务器收到php的执行结果后将其封装为http响应报文响应给客户端。在执行程序获取动态资源时若需要获得数据库中的资源时,由Php服务器通过mysql协议与MySQL/MariaDB服务器交互,取之而后返回给httpd,httpd将从php服务器收到的执行结果封装成http响应报文响应给客户端。

3. lamp平台搭建

环境说明:

系统平台 IP 需要安装的服务
centos7 redhat7 172.16.12.128 httpd-2.4 mysql-5.7 php php-mysql

lamp平台软件安装次序:
httpd --> mysql --> php

3.1 安装httpd

[root@mr ~]# cd /etc/yum.repos.d/
[root@mr yum.repos.d]# ls
CentOS-Stream-AppStream.repo  CentOS-Stream-Extras.repo            CentOS-Stream-PowerTools.repo
CentOS-Stream-BaseOS.repo     CentOS-Stream-HighAvailability.repo  CentOS-Stream-RealTime.repo
CentOS-Stream-Debuginfo.repo  CentOS-Stream-Media.repo
[root@mr yum.repos.d]# rm -rf *
[root@mr yum.repos.d]# ls
[root@mr yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2495  100  2495    0     0  15993      0 --:--:-- --:--:-- --:--:-- 16096
[root@mr yum.repos.d]# ls
CentOS-Base.repo
[root@mr yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@mr yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
CentOS-8.5.2111 - Base - mirrors.aliyun.com                              144 kB/s | 3.9 kB     00:00    
CentOS-8.5.2111 - Extras - mirrors.aliyun.com                             69 kB/s | 1.5 kB     00:00    
CentOS-8.5.2111 - AppStream - mirrors.aliyun.com                         176 kB/s | 4.3 kB     00:00    
epel-release-latest-8.noarch.rpm                                         449 kB/s |  24 kB     00:00    
Dependencies resolved.
=========================================================================================================
 Package                    Architecture         Version                Repository                  Size
=========================================================================================================
Installing:
 epel-release               noarch               8-16.el8               @commandline                24 k

Transaction Summary
=========================================================================================================
Install  1 Package

Total size: 24 k
Installed size: 34 k
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                 1/1 
  Installing       : epel-release-8-16.el8.noarch                                                    1/1 
  Running scriptlet: epel-release-8-16.el8.noarch                                                    1/1 
Many EPEL packages require the CodeReady Builder (CRB) repository.
It is recommended that you run /usr/bin/crb enable to enable the CRB repository.

  Verifying        : epel-release-8-16.el8.noarch                                                    1/1 
Installed products updated.

Installed:
  epel-release-8-16.el8.noarch                                                                           

Complete!
[root@mr yum.repos.d]# 
[root@mr yum.repos.d]# sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@mr yum.repos.d]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
[root@mr yum.repos.d]# ls
CentOS-Base.repo  epel-modular.repo  epel.repo  epel-testing-modular.repo  epel-testing.repo
[root@mr yum.repos.d]# cd
[root@mr ~]# dnf clean all
37 files removed
[root@mr ~]# 
[root@mr ~]# dnf makecache
CentOS-8.5.2111 - Base - mirrors.aliyun.com                               10 MB/s | 4.6 MB     00:00    
CentOS-8.5.2111 - Extras - mirrors.aliyun.com                            104 kB/s |  10 kB     00:00    
CentOS-8.5.2111 - AppStream - mirrors.aliyun.com                          11 MB/s | 8.4 MB     00:00    
Extra Packages for Enterprise Linux Modular 8 - x86_64                   3.2 MB/s | 1.0 MB     00:00    
Extra Packages for Enterprise Linux 8 - x86_64                            10 MB/s |  13 MB     00:01    
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Metadata cache created.
[root@mr ~]# dnf -y install 
openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make vim wget
......
  perl-threads-shared-1.58-2.el8.x86_64                                                                  
  pkgconf-1.4.2-1.el8.x86_64                                                                             
  pkgconf-m4-1.4.2-1.el8.noarch                                                                          
  pkgconf-pkg-config-1.4.2-1.el8.x86_64                                                                  
  zlib-devel-1.2.11-17.el8.x86_64                                                                        

Complete!
[root@mr ~]# [root@mr ~]# useradd -r -M -s /sbin/nologin apache
[root@mr ~]# wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz
--2022-08-02 19:20:01--  https://downloads.apache.org/apr/apr-1.7.0.tar.gz
Resolving downloads.apache.org (downloads.apache.org)... 135.181.214.104, 88.99.95.219, 2a01:4f9:3a:2c57::2, ...
Connecting to downloads.apache.org (downloads.apache.org)|135.181.214.104|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1093896 (1.0M) [application/x-gzip]
Saving to: ‘apr-1.7.0.tar.gz’

apr-1.7.0.tar.gz           100%[=====================================>]   1.04M  15.8KB/s    in 54s     

2022-08-02 19:20:56 (19.9 KB/s) - ‘apr-1.7.0.tar.gz’ saved [1093896/1093896]

[root@mr~]#https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz
......
--2022-08-02 19:21:15--  https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz
Resolving downloads.apache.org (downloads.apache.org)... 135.181.214.104, 88.99.95.219, 2a01:4f9:3a:2c57::2, ...
Connecting to downloads.apache.org (downloads.apache.org)|135.181.214.104|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 554301 (541K) [application/x-gzip]
Saving to: ‘apr-util-1.6.1.tar.gz’

apr-util-1.6.1.tar.gz      100%[=====================================>] 541.31K  4.23KB/s    in 2m 13s  

2022-08-02 19:23:29 (4.08 KB/s) - ‘apr-util-1.6.1.tar.gz’ saved [554301/554301]

[root@mr ~]# wget https://downloads.apache.org/httpd/httpd-2.4.54.tar.gz
--2022-08-02 19:25:49--  https://downloads.apache.org/httpd/httpd-2.4.54.tar.gz
Resolving downloads.apache.org (downloads.apache.org)... 88.99.95.219, 135.181.214.104, 2a01:4f9:3a:2c57::2, ...
Connecting to downloads.apache.org (downloads.apache.org)|88.99.95.219|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9743277 (9.3M) [application/x-gzip]
Saving to: ‘httpd-2.4.54.tar.gz’

httpd-2.4.54.tar.gz        100%[=====================================>]   9.29M  48.2KB/s    in 4m 57s  

2022-08-02 19:30:47 (32.0 KB/s) - ‘httpd-2.4.54.tar.gz’ saved [9743277/9743277]
[root@mr ~]# ls
anaconda-ks.cfg  apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz
[root@mr ~]# tar xf apr-1.7.0.tar.gz 
[root@mr ~]# tar xf apr-util-1.6.1.tar.gz 
[root@mr ~]# ls
anaconda-ks.cfg  apr-1.7.0  apr-1.7.0.tar.gz  apr-util-1.6.1  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz
[root@mr ~]# cd apr-1.7.0
[root@mr apr-1.7.0]# ls
apr-config.in  atomic            config.layout  file_io     LICENSE       network_io     README.cmake  time
apr.dep        build             configure      helpers     locks         NOTICE         shmem         tools
apr.dsp        build.conf        configure.in   include     Makefile.in   NWGNUmakefile  strings       user
apr.dsw        buildconf         docs           libapr.dep  Makefile.win  passwd         support
apr.mak        build-outputs.mk  dso            libapr.dsp  memory        poll           tables
apr.pc.in      CHANGES           emacs-mode     libapr.mak  misc          random         test
apr.spec       CMakeLists.txt    encoding       libapr.rc   mmap          README         threadproc
[root@mr apr-1.7.0]# vim configure

  # $RM "$cfgfile"        //将此行加上注释,或者删除此行
 [root@mr apr-1.7.0]# ./configure --prefix=/usr/local/apr
 ......
config.status: creating build/apr_rules.mk
config.status: creating build/pkg/pkginfo
config.status: creating apr-1-config
config.status: creating apr.pc
config.status: creating test/Makefile
config.status: creating test/internal/Makefile
config.status: creating include/arch/unix/apr_private.h
config.status: executing libtool commands
config.status: executing default commands
[root@mr apr-1.7.0]# make
......
/unix -I/root/apr-1.7.0/include/arch/unix -I/root/apr-1.7.0/include -I/root/apr-1.7.0/include/private -I/root/apr-1.7.0/include/private  export_vars.c | sed -e 's/^\#[^!]*//' | sed -e '/^$/d' >> apr.exp
sed 's,^\(location=\).*$,\1installed,' < apr-1-config > apr-config.out
sed -e 's,^\(apr_build.*=\).*$,\1/usr/local/apr/build-1,' -e 's,^\(top_build.*=\).*$,\1/usr/local/apr/build-1,' < build/apr_rules.mk > build/apr_rules.out
make[1]: Leaving directory '/root/apr-1.7.0'
[root@mr apr-1.7.0]# make install
......
/usr/bin/install -c -m 755 apr-config.out /usr/local/apr/bin/apr-1-config
[root@mr apr-1.7.0]# cd ../apr-util-1.6.1
[root@mr apr-util-1.6.1]# ls
aprutil.dep     apu-config.in     CHANGES         dbd                include         LICENSE       NWGNUmakefile    strmatch
aprutil.dsp     buckets           CMakeLists.txt  dbm                ldap            Makefile.in   README           test
aprutil.dsw     build             config.layout   docs               libaprutil.dep  Makefile.win  README.cmake     uri
aprutil.mak     build.conf        configure       encoding           libaprutil.dsp  memcache      README.FREETDS   xlate
apr-util.pc.in  buildconf         configure.in    export_vars.sh.in  libaprutil.mak  misc          redis            xml
apr-util.spec   build-outputs.mk  crypto          hooks              libaprutil.rc   NOTICE        renames_pending
[root@mr apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
......
config.status: creating test/Makefile
config.status: creating include/private/apu_config.h
config.status: executing default commands
[root@mr apr-util-1.6.1]# make && make install
......
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
/usr/bin/install -c -m 644 aprutil.exp /usr/local/apr-util/lib
/usr/bin/install -c -m 755 apu-config.out /usr/local/apr-util/bin/apu-1-config
[root@mr apr-util-1.6.1]# cd
[root@mr ~]# ls /usr/local/
apr  apr-util  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@mr ~]# 
[root@mr ~]# ls
anaconda-ks.cfg  apr-1.7.0  apr-1.7.0.tar.gz  apr-util-1.6.1  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz
[root@mr ~]# tar xf httpd-2.4.54.tar.gz 
[root@mr ~]# cd httpd-2.4.54
[root@mr httpd-2.4.54]# ls
ABOUT_APACHE     BuildBin.dsp     docs         InstallBin.dsp  modules           ROADMAP
acinclude.m4     buildconf        emacs-style  LAYOUT          NOTICE            server
Apache-apr2.dsw  CHANGES          httpd.dep    libhttpd.dep    NWGNUmakefile     srclib
Apache.dsw       changes-entries  httpd.dsp    libhttpd.dsp    os                support
apache_probes.d  CMakeLists.txt   httpd.mak    libhttpd.mak    README            test
ap.d             config.layout    httpd.spec   LICENSE         README.CHANGES    VERSIONING
build            configure        include      Makefile.in     README.cmake
BuildAll.dsp     configure.in     INSTALL      Makefile.win    README.platforms
[root@mr httpd-2.4.54]# ./configure --prefix=/usr/local/apache \
> --enable-so \
> --enable-ssl \
> --enable-cgi \
> --enable-rewrite \
> --with-zlib \
> --with-pcre \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr-util/ \
> --enable-modules=most \
> --enable-mpms-shared=all \
> --with-mpm=prefork
......
config.status: executing default commands
configure: summary of build options:

    Server Version: 2.4.54
    Install prefix: /usr/local/apache
    C compiler:     gcc
    CFLAGS:          -g -O2 -pthread  
    CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE  
    LDFLAGS:           
    LIBS:             
    C preprocessor: gcc -E

[root@mr httpd-2.4.54]# make && make install
......
Installing build system files
mkdir /usr/local/apache/build
Installing man pages and online manual
mkdir /usr/local/apache/man
mkdir /usr/local/apache/man/man1
mkdir /usr/local/apache/man/man8
mkdir /usr/local/apache/manual
make[1]: Leaving directory '/root/httpd-2.4.54'
[root@mr httpd-2.4.54]# cd
[root@mr ~]# ls
anaconda-ks.cfg  apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz
apr-1.7.0        apr-util-1.6.1    httpd-2.4.54
[root@mr ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh
[root@mr ~]# cat /etc/profile.d/httpd.sh 
export PATH=/usr/local/apache/bin:$PATH
[root@mr ~]# source /etc/profile.d/httpd.sh
[root@mr ~]# which httpd
/usr/local/apache/bin/httpd
[root@mr ~]# ls /usr/local/apache/
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules
[root@mr ~]#  ln -s /usr/local/apache/include/ /usr/include/apache
[root@mr ~]# vim /etc/man_db.conf 
MANDATORY_MANPATH                       /usr/man
MANDATORY_MANPATH                       /usr/share/man
MANDATORY_MANPATH                       /usr/local/share/man
MANDATORY_MANPATH                       /usr/local/apache/man(添加这一行)
[root@mr ~]# cd /usr/lib/systemd/system
[root@mr system]# ls
 auditd.service                           runlevel0.target
 autovt@.service                          runlevel1.target
 basic.target                             runlevel1.target.wants
 basic.target.wants                       runlevel2.target
......
rngd-wake-threshold.service              user-.slice.d
 rpcbind.target                           vgauthd.service
 rsyslog.service                          vmtoolsd.service
[root@mr system]# cp sshd.service httpd.service
[root@mr system]# vim httpd.service 
[Unit]
Description=web server daemon
Documentation=man:httpd(5) 
After=network.target sshd-keygen.target

[Service]
Type=forking
ExecStart=/usr/local/apache/bin/apachectl start
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/usr/local/apache/bin/apachectl stop

[Install]
WantedBy=multi-user.target
[root@mr system]# cd
[root@mr ~]# systemctl daemon-reload
[root@mr ~]# systemctl status httpd
● httpd.service - web server daemon
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(5)
[root@mr ~]# systemctl start httpd
[root@mr ~]# ss -antl
State       Recv-Q      Send-Q           Local Address:Port           Peer Address:Port     Process      
LISTEN      0           128                    0.0.0.0:22                  0.0.0.0:*                     
LISTEN      0           128                          *:80                        *:*                     
LISTEN      0           128                       [::]:22                     [::]:*                     
[root@mr ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@mr ~]# systemctl status httpd
● httpd.service - web server daemon
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2022-08-02 20:12:20 CST; 53min ago
     Docs: man:httpd(5)
 Main PID: 48353 (httpd)
    Tasks: 6 (limit: 24717)
   Memory: 5.8M
   CGroup: /system.slice/httpd.service
           ├─48353 /usr/local/apache/bin/httpd -k start
           ├─48354 /usr/local/apache/bin/httpd -k start
           ├─48355 /usr/local/apache/bin/httpd -k start
           ├─48356 /usr/local/apache/bin/httpd -k start
           ├─48357 /usr/local/apache/bin/httpd -k start
           └─48358 /usr/local/apache/bin/httpd -k start

Aug 02 20:12:02 mr systemd[1]: Starting web server daemon...
Aug 02 20:12:20 mr apachectl[48350]: AH00558: httpd: Could not reliably determine the server's fully qua>
Aug 02 20:12:20 mr systemd[1]: Started web server daemon.
[root@mr ~]# 

3.2 安装mysql

[root@mr ~]# dnf -y install ncurses-devel openssl-devel openssl cmake mariadb-devel
......
  mariadb-connector-c-devel-3.1.11-2.el8_3.x86_64                                                        
  mariadb-devel-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64                                           
  ncurses-c++-libs-6.1-9.20180224.el8.x86_64                                                             
  ncurses-devel-6.1-9.20180224.el8.x86_64                                                                

Complete!
[root@mr ~]# 
[root@mr ~]# useradd -r -M -s /sbin/nologin mysql
[root@mr ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
......
HTTP request sent, awaiting response... 200 OK
Length: 674830866 (644M) [application/x-tar-gz]
Saving to: ‘mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz’

mysql-5.7.38-linux-glibc2. 100%[=====================================>] 643.57M   659KB/s    in 9m 26s  

2022-08-02 22:09:46 (1.14 MB/s) - ‘mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz’ saved [674830866/674830866]

[root@mr ~]# ls
anaconda-ks.cfg  apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz
apr-1.7.0        apr-util-1.6.1    httpd-2.4.54           mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
[root@mr ~]# tar xf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@mr ~]# cd /usr/local/
[root@mr local]# ls
apache  apr-util  etc    include  lib64    mysql-5.7.38-linux-glibc2.12-x86_64  share
apr     bin       games  lib      libexec  sbin                                 src
[root@mr local]# mv mysql-5.7.38-linux-glibc2.12-x86_64 mysql
[root@mr local]# ls
apache  apr  apr-util  bin  etc  games  include  lib  lib64  libexec  mysql  sbin  share  src
[root@mr local]# chown -R mysql.mysql mysql
[root@mr local]# ll
total 0
drwxr-xr-x. 14 root  root  164 Aug  2 19:53 apache
drwxr-xr-x.  6 root  root   58 Aug  2 19:38 apr
drwxr-xr-x.  5 root  root   43 Aug  2 19:44 apr-util
drwxr-xr-x.  2 root  root    6 May 19  2020 bin
drwxr-xr-x.  2 root  root    6 May 19  2020 etc
drwxr-xr-x.  2 root  root    6 May 19  2020 games
drwxr-xr-x.  2 root  root    6 May 19  2020 include
drwxr-xr-x.  2 root  root    6 May 19  2020 lib
drwxr-xr-x.  3 root  root   17 Aug  1 15:49 lib64
drwxr-xr-x.  2 root  root    6 May 19  2020 libexec
drwxr-xr-x.  9 mysql mysql 129 Aug  2 22:11 mysql
drwxr-xr-x.  2 root  root    6 May 19  2020 sbin
drwxr-xr-x.  5 root  root   49 Aug  1 15:49 share
drwxr-xr-x.  2 root  root    6 May 19  2020 src
[root@mr local]# ls /usr/local/mysql/
bin  docs  include  lib  LICENSE  man  README  share  support-files
[root@mr local]# ln -s /usr/local/mysql/include /usr/include/mysql
[root@mr local]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
[root@mr local]# vim /etc/man_db.conf 
MANDATORY_MANPATH                       /usr/man
MANDATORY_MANPATH                       /usr/share/man
MANDATORY_MANPATH                       /usr/local/share/man
MANDATORY_MANPATH                       /usr/local/mysql/man
[root@mr local]# cd
[root@mr ~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@mr ~]# source /etc/profile.d/mysql.sh 
[root@mr ~]# which mysql
/usr/local/mysql/bin/mysql
[root@mr ~]# 
[root@mr ~]# mysqld --initialize --user mysql --datadir /opt/data
2022-08-02T14:22:01.195167Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-08-02T14:22:01.338468Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-08-02T14:22:01.364317Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-08-02T14:22:01.423393Z 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: 799aa4e2-126e-11ed-a53b-000c29f0dfce.
2022-08-02T14:22:01.424482Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2022-08-02T14:22:01.621913Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2022-08-02T14:22:01.621947Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2022-08-02T14:22:01.622320Z 0 [Warning] CA certificate ca.pem is self signed.
2022-08-02T14:22:01.648745Z 1 [Note] A temporary password is generated for root@localhost: <rC:S!uXs6yk
[root@mr ~]# echo '<rC:S!uXs6yk' > pass
[root@mr ~]# rpm -qa|grep mariadb
mariadb-connector-c-config-3.1.11-2.el8_3.noarch
mariadb-connector-c-3.1.11-2.el8_3.x86_64
mariadb-connector-c-devel-3.1.11-2.el8_3.x86_64
mariadb-devel-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
[root@mr ~]# dnf -y remove mariadb*
Removed:
  mariadb-connector-c-3.1.11-2.el8_3.x86_64                                                              
  mariadb-connector-c-config-3.1.11-2.el8_3.noarch                                                       
  mariadb-connector-c-devel-3.1.11-2.el8_3.x86_64                                                        
  mariadb-devel-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64                                           

Complete!
[root@mr ~]# rpm -qa|grep mariadb
[root@mr ~]# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
[root@mr ~]# cd /usr/local/mysql/
[root@mr mysql]# ls
bin  docs  include  lib  LICENSE  man  README  share  support-files
[root@mr mysql]# cd support-files/
[root@mr support-files]# ls
magic  mysqld_multi.server  mysql-log-rotate  mysql.server
[root@mr support-files]# file mysql.server 
mysql.server: POSIX shell script, ASCII text executable
[root@mr support-files]# cp mysql.server /etc/init.d/mysqld
[root@mr support-files]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/opt/data
[root@mr support-files]# chmod +x /etc/init.d/mysqld 
[root@mr support-files]# cd
[root@mr ~]# service mysqld start
Starting MySQL.Logging to '/opt/data/mr.err'.
 SUCCESS! 
[root@mr ~]# ss -antl
State       Recv-Q      Send-Q           Local Address:Port           Peer Address:Port     Process      
LISTEN      0           128                    0.0.0.0:22                  0.0.0.0:*                     
LISTEN      0           128                          *:80                        *:*                     
LISTEN      0           128                       [::]:22                     [::]:*                     
LISTEN      0           80                           *:3306                      *:*                     
[root@mr ~]# chkconfig --add mysqld
[root@mr ~]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
[root@mr ~]# 
[root@mr ~]# systemctl disable --now firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@mr ~]# vim /etc/selinux/config 
SELINUX=disabled
[root@mr ~]# reboot
[root@master ~]# ss -antl
State       Recv-Q      Send-Q           Local Address:Port           Peer Address:Port     Process      
LISTEN      0           128                    0.0.0.0:22                  0.0.0.0:*                     
LISTEN      0           80                           *:3306                      *:*                     
LISTEN      0           128                          *:80                        *:*                     
LISTEN      0           128                       [::]:22                     [::]:*                     
[root@master ~]# 
[root@master ~]# dnf provides libncurses.so.5
Last metadata expiration check: 2:52:43 ago on Tue 02 Aug 2022 07:55:40 PM CST.
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
ncurses-compat-libs-6.1-9.20180224.el8.i686 : Ncurses compatibility libraries
Repo        : base
Matched from:
Provide    : libncurses.so.5

[root@master ~]# dnf -y install ncurses-compat-libs
[root@master ~]# cat pass
<rC:S!uXs6yk
[root@master ~]# mysql -uroot -p'<rC:S!uXs6yk'
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 3
Server version: 5.7.38

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

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> set password = password('marui');
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> exit
Bye
[root@master ~]# mysql -uroot -pmarui
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 4
Server version: 5.7.38 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

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> exit
Bye
[root@master ~]# 

3.3 安装php

[root@master ~]# wget https://www.php.net/distributions/php-7.4.30.tar.xz
......
Saving to: ‘php-7.4.30.tar.xz’

php-7.4.30.tar.xz          100%[++++++++++++++++=====================>]   9.94M  16.1KB/s    in 5m 16s  

2022-08-02 23:24:04 (18.5 KB/s) - ‘php-7.4.30.tar.xz’ saved [10419136/10419136]

[root@master ~]# sha256sum php-7.4.30.tar.xz 
ea72a34f32c67e79ac2da7dfe96177f3c451c3eefae5810ba13312ed398ba70d  php-7.4.30.tar.xz
[root@master ~]# 
[root@master ~]# dnf list all|grep php|grep mysql
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
php-mysqlnd.x86_64                                                7.2.24-1.module_el8.2.0+313+b04d0a66                   AppStream    
[root@master ~]# dnf -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel  pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel php-mysqlnd
.....
 mhash-0.9.9.9-20.el8.x86_64                                                                            
  mhash-devel-0.9.9.9-20.el8.x86_64                                                                      
  openldap-devel-2.4.46-18.el8.x86_64                                                                    
  php-common-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64                                                 
  php-mysqlnd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64                                                
  php-pdo-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64                                                    
  readline-devel-7.0-10.el8.x86_64                                                                       
  xz-devel-5.2.4-3.el8.x86_64                                                                            
  zlib-1.2.11-17.el8.i686                                                                                

Complete!
[root@master ~]# dnf -y install libsqlite3x-devel
Last metadata expiration check: 3:40:33 ago on Tue 02 Aug 2022 07:55:40 PM CST.
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Dependencies resolved.
=============================================================================================================================
 Package                             Architecture             Version                           Repository              Size
=============================================================================================================================
Installing:
 libsqlite3x-devel                   x86_64                   20071018-26.el8                   epel                   143 k
Upgrading:
 sqlite-libs                         x86_64                   3.26.0-15.el8                     base                   581 k
Installing dependencies:
 libsqlite3x                         x86_64                   20071018-26.el8                   epel                    39 k
 sqlite                              x86_64                   3.26.0-15.el8                     base                   668 k
 sqlite-devel                        x86_64                   3.26.0-15.el8                     base                   165 k

Transaction Summary
=============================================================================================================================
Install  4 Packages
Upgrade  1 Package

Total download size: 1.6 M
Downloading Packages:
(1/5): sqlite-3.26.0-15.el8.x86_64.rpm                                                       7.1 MB/s | 668 kB     00:00    
(2/5): sqlite-devel-3.26.0-15.el8.x86_64.rpm                                                 1.3 MB/s | 165 kB     00:00    
(3/5): libsqlite3x-20071018-26.el8.x86_64.rpm                                                233 kB/s |  39 kB     00:00    
(4/5): sqlite-libs-3.26.0-15.el8.x86_64.rpm                                                   12 MB/s | 581 kB     00:00    
(5/5): libsqlite3x-devel-20071018-26.el8.x86_64.rpm                                          269 kB/s | 143 kB     00:00    
-----------------------------------------------------------------------------------------------------------------------------
Total                                                                                        2.5 MB/s | 1.6 MB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                     1/1 
  Upgrading        : sqlite-libs-3.26.0-15.el8.x86_64                                                                    1/6 
  Installing       : sqlite-3.26.0-15.el8.x86_64                                                                         2/6 
  Installing       : sqlite-devel-3.26.0-15.el8.x86_64                                                                   3/6 
  Installing       : libsqlite3x-20071018-26.el8.x86_64                                                                  4/6 
  Installing       : libsqlite3x-devel-20071018-26.el8.x86_64                                                            5/6 
  Cleanup          : sqlite-libs-3.26.0-13.el8.x86_64                                                                    6/6 
  Running scriptlet: sqlite-libs-3.26.0-13.el8.x86_64                                                                    6/6 
  Verifying        : sqlite-3.26.0-15.el8.x86_64                                                                         1/6 
  Verifying        : sqlite-devel-3.26.0-15.el8.x86_64                                                                   2/6 
  Verifying        : libsqlite3x-20071018-26.el8.x86_64                                                                  3/6 
  Verifying        : libsqlite3x-devel-20071018-26.el8.x86_64                                                            4/6 
  Verifying        : sqlite-libs-3.26.0-15.el8.x86_64                                                                    5/6 
  Verifying        : sqlite-libs-3.26.0-13.el8.x86_64                                                                    6/6 
Installed products updated.

Upgraded:
  sqlite-libs-3.26.0-15.el8.x86_64                                                                                           

Installed:
  libsqlite3x-20071018-26.el8.x86_64       libsqlite3x-devel-20071018-26.el8.x86_64       sqlite-3.26.0-15.el8.x86_64      
  sqlite-devel-3.26.0-15.el8.x86_64       

Complete!
[root@master ~]# dnf -y install http://mirror.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-2.el8.x86_64.rpm
......
 Verifying        : oniguruma-6.8.2-2.el8.x86_64                                                                        1/2 
  Verifying        : oniguruma-devel-6.8.2-2.el8.x86_64                                                                  2/2 
Installed products updated.

Installed:
  oniguruma-6.8.2-2.el8.x86_64                               oniguruma-devel-6.8.2-2.el8.x86_64                              

Complete!
[root@master ~]# ls
anaconda-ks.cfg   apr-util-1.6.1         httpd-2.4.54.tar.gz                         php-7.4.30.tar.xz
apr-1.7.0         apr-util-1.6.1.tar.gz  mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
apr-1.7.0.tar.gz  httpd-2.4.54           pass
[root@master ~]# dnf -y install libzip-devel
 Verifying        : libzip-devel-1.5.1-2.module_el8.2.0+313+b04d0a66.x86_64                         2/2 
Installed products updated.

Installed:
  libzip-1.5.1-2.module_el8.2.0+313+b04d0a66.x86_64                                                      
  libzip-devel-1.5.1-2.module_el8.2.0+313+b04d0a66.x86_64                                                

Complete!
[root@master ~]# 

[root@master ~]# tar xf php-7.4.30.tar.xz 
[root@master ~]# cd php-7.4.30
[root@master php-7.4.30]# ./configure --prefix=/usr/local/php7  \
> --with-config-file-path=/etc \
> --enable-fpm \
> --enable-inline-optimization \
> --disable-debug \
> --disable-rpath \
> --enable-shared \
> --enable-soap \
> --with-openssl \
> --enable-bcmath \
......
config.status: creating main/php_config.h
config.status: executing default commands

+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE. By continuing this installation  |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.

[root@master php-7.4.30]# make
......
pharcommand.inc
invertedregexiterator.inc
directorytreeiterator.inc
directorygraphiterator.inc
phar.inc

Build complete.
Don't forget to run 'make test'.

[root@master php-7.4.30]# make install
Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-non-zts-20190902/
Installing PHP CLI binary:        /usr/local/php7/bin/
Installing PHP CLI man page:      /usr/local/php7/php/man/man1/
......
/root/php-7.4.30/build/shtool install -c ext/phar/phar.phar /usr/local/php7/bin/phar.phar
ln -s -f phar.phar /usr/local/php7/bin/phar
Installing PDO headers:           /usr/local/php7/include/php/ext/pdo/
[root@master php-7.4.30]# echo 'export PATH=/usr/local/php7/bin:$PATH' > /etc/profile.d/php7.sh
[root@master php-7.4.30]#  source /etc/profile.d/php7.sh
[root@master php-7.4.30]#  which php
/usr/local/php7/bin/php
[root@master php-7.4.30]# php -v
PHP 7.4.30 (cli) (built: Aug  3 2022 00:00:44) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
[root@master php-7.4.30]# cp php.ini-production /etc/php.ini
cp: overwrite '/etc/php.ini'? y
[root@master php-7.4.30]# cd sapi/
[root@master sapi]# ls
apache2handler  cgi  cli  embed  fpm  litespeed  phpdbg
[root@master sapi]# cd fpm/
[root@master fpm]# ls
config.m4       init.d.php-fpm.in  php-fpm.8        php-fpm.service     tests
CREDITS         LICENSE            php-fpm.8.in     php-fpm.service.in  www.conf
fpm             Makefile.frag      php-fpm.conf     status.html         www.conf.in
init.d.php-fpm  php-fpm            php-fpm.conf.in  status.html.in
[root@master fpm]# file init.d.php-fpm
init.d.php-fpm: POSIX shell script, ASCII text executable
[root@master fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
[root@master fpm]# chmod +x /etc/init.d/php-fpm
[root@master fpm]# cd
[root@master ~]# service php-fpm status
php-fpm is stopped
[root@master ~]# cd /usr/local/php7/
[root@master php7]# ls
bin  etc  include  lib  php  sbin  var
[root@master php7]# cd etc/
[root@master etc]# ls
pear.conf  php-fpm.conf.default  php-fpm.d
[root@master etc]# cp php-fpm.conf.default php-fpm.conf
[root@master etc]# ls
pear.conf  php-fpm.conf  php-fpm.conf.default  php-fpm.d
[root@master etc]# cd php-fpm.d/
[root@master php-fpm.d]# ls
www.conf.default
[root@master php-fpm.d]# cp www.conf.default www.conf
[root@master php-fpm.d]# ls
www.conf  www.conf.default
[root@master php-fpm.d]# service php-fpm start
Starting php-fpm  done
[root@master php-fpm.d]# ss -antl
State       Recv-Q      Send-Q           Local Address:Port           Peer Address:Port     Process      
LISTEN      0           128                  127.0.0.1:9000                0.0.0.0:*                     
LISTEN      0           128                    0.0.0.0:22                  0.0.0.0:*                     
LISTEN      0           80                           *:3306                      *:*                     
LISTEN      0           128                          *:80                        *:*                     
LISTEN      0           128                       [::]:22                     [::]:*                     
[root@master php-fpm.d]# 
[root@master php-fpm.d]# cd
[root@master ~]# chkconfig --add php-fpm
[root@master ~]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
php-fpm        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
[root@master ~]# 
Link to post
Link to comment
Share on other sites

 Share

discussion group

discussion group

    You don't have permission to chat.
    • Recently Browsing   0 members

      • No registered users viewing this page.
    ×
    ×
    • Create New...