搭建lamp

  • 搭建lamp已关闭评论
  • 176 次浏览
  • A+
所属分类:linux技术
摘要

lamp,其实就是由Linux+Apache+Mysql/MariaDB+Php/Perl/Python的一组动态网站或者服务器的开源软件
LAMP指的是Linux(操作系统)、Apache(HTTP服务器)、MySQL(也指MariaDB,数据库软件)和PHP(有时也是指Perl或Python)的第一个字母,一般用来建立web应用平台。


lamp


1. lamp简介

lamp,其实就是由Linux+Apache+Mysql/MariaDB+Php/Perl/Python的一组动态网站或者服务器的开源软件
LAMP指的是Linux(操作系统)、Apache(HTTP服务器)、MySQL(也指MariaDB,数据库软件)和PHP(有时也是指Perl或Python)的第一个字母,一般用来建立web应用平台。

2. web服务器工作流程

web服务器的资源分为两种,静态资源和动态资源
静态资源:当我们获取它的时候,它里面的源的表现形式与原文件相同不会发生什么改变。
动态资源:程序文件,我们日常执行的命令在不同的主机里面执行出来的结果是不一样的
搭建lamp
当我们在客户端访问web服务器资源的时候,前端会把这个请求转发给应用服务器这里,然后应用服务器会到数据库里面进行查询并反馈给前端,前端再反馈给客户端

3. lamp平台构建

环境说明:

系统平台 IP 需要安装的服务
centos8 redhat8 192.168.222.250 httpd-2.4,mysql5.7,php,phpmysql

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

注意:php要求httpd使用prefork MPM

3.1 安装httpd

yum源的配置: [root@lnh ~]# cd /etc/yum.repos.d/ [root@lnh yum.repos.d]#rm -rf * [root@lnh yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo //在阿里云网站里面复制的仓库链接 [root@lnh yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo [root@lnh yum.repos.d]# ls CentOS-Base.repo [root@lnh yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm [root@lnh yum.repos.d]# sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel* [root@lnh yum.repos.d]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel* //安装epel源,也是在阿里云网站里面复制链接 [root@lnh yum.repos.d]# ls CentOS-Base.repo   epel.repo                  epel-testing.repo epel-modular.repo  epel-testing-modular.repo [root@lnh yum.repos.d]# cat epel.repo //查看里面地址是否改变 [epel] name=Extra Packages for Enterprise Linux 8 - $basearch # It is much more secure to use the metalink, but if you wish to use a local mirror # place its address here. baseurl=https://mirrors.aliyun.com/epel/8/Everything/$basearch #metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir enabled=1 gpgcheck=1 countme=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8  [epel-debuginfo] name=Extra Packages for Enterprise Linux 8 - $basearch - Debug # It is much more secure to use the metalink, but if you wish to use a local mirror # place its address here. baseurl=https://mirrors.aliyun.com/epel/8/Everything/$basearch/debug #metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-8&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 gpgcheck=1  [epel-source] name=Extra Packages for Enterprise Linux 8 - $basearch - Source # It is much more secure to use the metalink, but if you wish to use a local mirror # place it's address here. baseurl=https://mirrors.aliyun.com/epel/8/Everything/source/tree/ #metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-8&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 gpgcheck=1 [root@lnh yum.repos.d]# dnf makecache //缓存一下 [root@lnh ~]# dnf groups mark install 'Development Tools' //安装开发工具包 Last metadata expiration check: 0:03:41 ago on Tue 02 Aug 2022 09:17:12 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 Groups:  Development Tools                                                                  Transaction Summary ===================================================================================  Is this ok [y/N]: y Complete! [root@lnh ~]# useradd -r -M -s /sbin/nologin  apache //创建用户的时候它会创建一个和用户名相同名字的组   //创建apache服务的用户和组 [root@lnh ~]# dnf -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ wget vim make //安装依赖包 [root@lnh ~]# wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz https://downloads.apache.org/httpd/httpd-2.4.54.tar.gz //在https://downloads.apache.org/官网里面下载 [root@lnh ~]# ls anaconda-ks.cfg  apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz [root@lnh ~]# tar -xf apr-1.7.0.tar.gz  [root@lnh ~]# tar -xf apr-util-1.6.1.tar.gz  [root@lnh ~]# tar -xf httpd-2.4.54.tar.gz  [root@lnh ~]# 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@lnh ~]# cd apr-1.7.0/ [root@lnh apr-1.7.0]# ls apr-config.in  build-outputs.mk  helpers       misc           strings apr.dep        CHANGES           include       mmap           support apr.dsp        CMakeLists.txt    libapr.dep    network_io     tables apr.dsw        config.layout     libapr.dsp    NOTICE         test apr.mak        configure         libapr.mak    NWGNUmakefile  threadproc apr.pc.in      configure.in      libapr.rc     passwd         time apr.spec       docs              LICENSE       poll           tools atomic         dso               locks         random         user build          emacs-mode        Makefile.in   README build.conf     encoding          Makefile.win  README.cmake buildconf      file_io           memory        shmem [root@lnh apr-1.7.0]# vim configure #    $RM "$cfgfile"    //删除或者注释掉这个 [root@lnh apr-1.7.0]# ./configure --prefix=/usr/local/apr ... 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@lnh apr-1.7.0]# make [root@lnh apr-1.7.0]# make install [root@lnh apr-1.7.0]# cd ../apr-util-1.6.1/ [root@lnh apr-util-1.6.1]# ls aprutil.dep       CHANGES            include         NWGNUmakefile aprutil.dsp       CMakeLists.txt     ldap            README aprutil.dsw       config.layout      libaprutil.dep  README.cmake aprutil.mak       configure          libaprutil.dsp  README.FREETDS apr-util.pc.in    configure.in       libaprutil.mak  redis apr-util.spec     crypto             libaprutil.rc   renames_pending apu-config.in     dbd                LICENSE         strmatch buckets           dbm                Makefile.in     test build             docs               Makefile.win    uri build.conf        encoding           memcache        xlate buildconf         export_vars.sh.in  misc            xml build-outputs.mk  hooks              NOTICE [root@lnh apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@lnh apr-util-1.6.1]# make [root@lnh apr-util-1.6.1]# make install [root@lnh ~]# ls /usr/local/ apr  apr-util  bin  etc  games  include  lib  lib64  libexec  sbin  share  src [root@lnh ~]# cd httpd-2.4.54/ [root@lnh httpd-2.4.54]# ls ABOUT_APACHE     CHANGES          httpd.mak       Makefile.in       ROADMAP acinclude.m4     changes-entries  httpd.spec      Makefile.win      server Apache-apr2.dsw  CMakeLists.txt   include         modules           srclib Apache.dsw       config.layout    INSTALL         NOTICE            support apache_probes.d  configure        InstallBin.dsp  NWGNUmakefile     test ap.d             configure.in     LAYOUT          os                VERSIONING build            docs             libhttpd.dep    README BuildAll.dsp     emacs-style      libhttpd.dsp    README.CHANGES BuildBin.dsp     httpd.dep        libhttpd.mak    README.cmake buildconf        httpd.dsp        LICENSE         README.platforms [root@lnh 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 ....  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@lnh httpd-2.4.54]# make [root@lnh httpd-2.4.54]# make install [root@lnh httpd-2.4.54]# cd [root@lnh ~]# 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@lnh ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh   //配置环境变量 [root@lnh ~]# cat /etc/profile.d/httpd.sh  export PATH=/usr/local/apache/bin:$PATH [root@lnh ~]# ls /usr/local/ apache  apr-util  etc    include  lib64    sbin   src apr     bin       games  lib      libexec  share [root@lnh ~]# source /etc/profile.d/httpd.sh  [root@lnh ~]# which httpd  //查看路径 /usr/local/apache/bin/httpd [root@lnh ~]# ls /usr/local/apache/ bin    cgi-bin  error   icons    logs  manual build  conf     htdocs  include  man   modules [root@lnh ~]# ln -s /usr/local/apache/include /usr/include/apache //做一个头文件软链接 [root@lnh ~]# ll -d /usr/include/apache lrwxrwxrwx. 1 root root 25 Aug  2 22:37 /usr/include/apache -> /usr/local/apache/include [root@lnh ~]# 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@lnh ~]# cd /usr/lib/systemd/system [root@lnh system]# cp sshd.service httpd.service [root@lnh system]# vim httpd.service  [Unit] Description=httpd server daemon Documentation=man:httpd(5) After=network.target sshd-keygen.target  [Service] Type=forking ExecStart=/usr/local/apache/bin/apachectl start ExecStop=/usr/local/apache/bin/apachectl stop ExecReload=/bin/kill -HUP $MAINPID  [Install] WantedBy=multi-user.target [root@lnh system]# cd [root@lnh ~]# systemctl daemon-reload  [root@lnh ~]# systemctl enable --now httpd.service //设置开机自启 Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. [root@lnh ~]# 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@lnh ~]# systemctl status httpd.service  ● httpd.service - httpd server daemon    Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: >    Active: active (running) since Tue 2022-08-02 22:49:17 CST; 30s ago      Docs: man:httpd(5)   Process: 49081 ExecStart=/usr/local/apache/bin/apachectl start (code=exited, sta>  Main PID: 49084 (httpd)     Tasks: 6 (limit: 12221)    Memory: 5.7M    CGroup: /system.slice/httpd.service            ├─49084 /usr/local/apache/bin/httpd -k start            ├─49085 /usr/local/apache/bin/httpd -k start            ├─49086 /usr/local/apache/bin/httpd -k start            ├─49087 /usr/local/apache/bin/httpd -k start            ├─49088 /usr/local/apache/bin/httpd -k start            └─49089 /usr/local/apache/bin/httpd -k start  Aug 02 22:49:17 lnh systemd[1]: Starting httpd server daemon... Aug 02 22:49:17 lnh apachectl[49081]: AH00558: httpd: Could not reliably determine> Aug 02 22:49:17 lnh systemd[1]: Started httpd server daemon. 

3.2 安装mysql

[root@lnh ~]# dnf -y install ncurses-devel openssl-devel openssl cmake mariadb-devel //安装依赖包 [root@lnh ~]# useradd -r -M -s /sbin/nologin mysql //创建用户和组 [root@lnh ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz //下载二进制格式的mysql软件包 [root@lnh ~]# ls anaconda-ks.cfg   apr-util-1.6.1.tar.gz apr-1.7.0         httpd-2.4.54 apr-1.7.0.tar.gz  httpd-2.4.54.tar.gz apr-util-1.6.1    mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz [root@lnh ~]# tar -xf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ [root@lnh ~]# cd /usr/local/ [root@lnh local]# ls apache    bin    include  libexec                              share apr       etc    lib      mysql-5.7.38-linux-glibc2.12-x86_64  src apr-util  games  lib64    sbin [root@lnh local]# mv mysql-5.7.38-linux-glibc2.12-x86_64 mysql //也可以做软链接ln -sv mysql-5.7.38-linux-glibc2.12-x86_64 mysql [root@lnh local]# ls apache  apr-util  etc    include  lib64    mysql  share apr     bin       games  lib      libexec  sbin   src [root@lnh local]# chown -R mysql.mysql mysql  //修改目录/usr/local/mysql的属主属组 [root@lnh local]# ll total 0 drwxr-xr-x. 14 root  root  164 Aug  2 22:32 apache drwxr-xr-x.  6 root  root   58 Aug  2 22:17 apr drwxr-xr-x.  5 root  root   43 Aug  2 22:20 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 Jul 19 16:13 lib64 drwxr-xr-x.  2 root  root    6 May 19  2020 libexec drwxr-xr-x.  9 mysql mysql 129 Aug  2 23:21 mysql drwxr-xr-x.  2 root  root    6 May 19  2020 sbin drwxr-xr-x.  5 root  root   49 Jul 19 16:13 share drwxr-xr-x.  2 root  root    6 May 19  2020 src [root@lnh local]# ln -s /usr/local/mysql/include  /usr/include/mysql [root@lnh local]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf [root@lnh 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/apache/man MANDATORY_MANPATH                       /usr/local/mysql/man//添加这一行 [root@lnh local]# cd [root@lnh ~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh //配置环境变量 [root@lnh ~]# source /etc/profile.d/mysql.sh  [root@lnh ~]# which mysql /usr/local/mysql/bin/mysql //查找mysql [root@lnh ~]# mkdir -p /opt/data [root@lnh ~]# chown -R mysql.mysql /opt/data/ //建立数据存放目录 [root@lnh ~]# mysqld --initialize --user mysql --datadir /opt/data //初始化数据库 2022-08-02T15:38:19.770486Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2022-08-02T15:38:19.958740Z 0 [Warning] InnoDB: New log files created, LSN=45790 2022-08-02T15:38:19.986757Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2022-08-02T15:38:19.992972Z 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: 22a4ea73-1279-11ed-a567-000c2905f428. 2022-08-02T15:38:19.995310Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2022-08-02T15:38:20.416458Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher. 2022-08-02T15:38:20.416497Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher. 2022-08-02T15:38:20.417285Z 0 [Warning] CA certificate ca.pem is self signed. 2022-08-02T15:38:20.478216Z 1 [Note] A temporary password is generated for root@localhost: iBUh*ijeb45h [root@lnh ~]# echo 'iBUh*ijeb45h' > password [root@lnh ~]# cat password  iBUh*ijeb45h //将临时密码保存到这个文件里面 [root@lnh ~]# 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 //查找mariadb的数据库 [root@lnh ~]# dnf -y remove mariadb* //要卸载掉mariadb数据库不然到时候和mysql数据库发生冲突 [root@lnh ~]# rpm -qa |grep mariadb [root@lnh ~]# vim /etc/my.cnf [root@lnh ~]# cat /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@lnh ~]# cd /usr/local/mysql/ [root@lnh mysql]# ls bin  docs  include  lib  LICENSE  man  README  share  support-files [root@lnh mysql]# cd support-files/ [root@lnh support-files]# ls magic  mysqld_multi.server  mysql-log-rotate  mysql.server [root@lnh support-files]# file mysql.server  mysql.server: POSIX shell script, ASCII text executable //是一个脚本文件 [root@lnh support-files]# cp mysql.server /etc/init.d/mysqld [root@lnh support-files]# vim /etc/init.d/mysqld  basedir=/usr/local/mysql    //数据库存放位置 datadir=/opt/data    //数据存放位置 [root@lnh support-files]# chmod +x /etc/init.d/mysqld  //赋予执行权限 [root@lnh ~]# service mysqld start   //启动服务 Starting MySQL.Logging to '/opt/data/lnh.err'.  SUCCESS!  [root@lnh ~]# 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@lnh ~]# chkconfig --add mysqld  //设置开机自启 [root@lnh ~]# 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 //在2,3,4,5下面开机自启了 [root@lnh ~]# systemctl stop firewalld.service  [root@lnh ~]# systemctl disable firewalld.service  Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@lnh ~]# vim /etc/selinux/config  SELINUX=disabled [root@lnh ~]# setenforce 0 //关闭防火墙 [root@lnh ~]# cd /usr/lib/systemd/system [root@lnh system]# cp sshd.service mysqld.service [root@lnh system]# vim mysqld.service  [Unit] Description=mysqld server daemon Documentation=man:sshd(8) man:sshd_config(5) After=network.target sshd-keygen.target Wants=sshd-keygen.target  [Service] Type=forking ExecStart=/usr/local/mysql/support-files/mysql.server start ExecStop=/usr/local/mysql/support-files/mysql.server stop ExecReload=/bin/kill -HUP $MAINPID  [Install] WantedBy=multi-user.target [root@lnh system]# cd [root@lnh ~]# systemctl daemon-reload  //重新加载 [root@lnh ~]# systemctl restart mysqld.service //重启服务 [root@lnh ~]# 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@lnh ~]# cat password  iBUh*ijeb45h [root@lnh ~]# mysql -uroot -p'iBUh*ijeb45h' 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 2 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('lnh123'); //修改密码 Query OK, 0 rows affected, 1 warning (0.00 sec)  mysql> quit Bye [root@lnh ~]# mysql -uroot -p'lnh123' 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 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. //密码修改成功          

3.3 安装php

[root@lnh ~]# wget https://www.php.net/distributions/php-7.4.30.tar.xz //在网站php.net里面复制网址 [root@lnh ~]# ls anaconda-ks.cfg   apr-util-1.6.1.tar.gz                       password apr-1.7.0         httpd-2.4.54                                php-7.4.30.tar.xz apr-1.7.0.tar.gz  httpd-2.4.54.tar.gz apr-util-1.6.1    mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz [root@lnh ~]# sha256sum php-7.4.30.tar.xz ea72a34f32c67e79ac2da7dfe96177f3c451c3eefae5810ba13312ed398ba70d  php-7.4.30.tar.xz //查看是否是要下载的包 [root@lnh ~]# dnf list |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@lnh ~]# 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 //安装依赖包 [root@lnh ~]# ls anaconda-ks.cfg   apr-util-1.6.1.tar.gz                       password apr-1.7.0         httpd-2.4.54                                php-7.4.30.tar.xz apr-1.7.0.tar.gz  httpd-2.4.54.tar.gz apr-util-1.6.1    mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz [root@lnh ~]# tar -xf php-7.4.30.tar.xz  //解压 [root@lnh ~]#cd php-7.4.30/ [root@lnh 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 --with-iconv --with-bz2 --enable-calendar --with-curl --enable-exif  --enable-ftp --enable-gd --with-jpeg  --with-zlib-dir --with-freetype --with-gettext --enable-json --enable-mbstring --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-readline --enable-shmop --enable-simplexml --enable-sockets --with-zip --enable-mysqlnd-compression-support --with-pear --enable-pcntl --enable-posix ..... +--------------------------------------------------------------------+ | 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. //编译测试安装php [root@lnh php-7.4.30]# make //编译 [root@lnh php-7.4.30]# make install //安装 [root@lnh php-7.4.30]# echo 'export PATH=/usr/local/php7/bin:$PATH' > /etc/profile.d/php7.sh //配置环境变量 [root@lnh php-7.4.30]# source /etc/profile.d/php7.sh  [root@lnh php-7.4.30]# which php    //查找php /usr/local/php7/bin/php [root@lnh php-7.4.30]# php -v     //查看版本号 PHP 7.4.30 (cli) (built: Aug  3 2022 01:17:12) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies [root@lnh php-7.4.30]# ls appveyor             configure.ac     Makefile.fragments   scripts azure                CONTRIBUTING.md  Makefile.objects     tests azure-pipelines.yml  docs             modules              travis build                ext              NEWS                 TSRM buildconf            EXTENSIONS       pear                 UPGRADING buildconf.bat        include          php.ini-development  UPGRADING.INTERNALS CODING_STANDARDS.md  libs             php.ini-production   win32 config.log           libtool          README.md            Zend config.nice          LICENSE          README.REDIST.BINS config.status        main             run-tests.php configure            Makefile         sapi [root@lnh php-7.4.30]# cp php.ini-production /etc/php.ini  cp: overwrite '/etc/php.ini'? y //配置生产环境 [root@lnh php-7.4.30]# ls appveyor             configure.ac     Makefile.fragments   scripts azure                CONTRIBUTING.md  Makefile.objects     tests azure-pipelines.yml  docs             modules              travis build                ext              NEWS                 TSRM buildconf            EXTENSIONS       pear                 UPGRADING buildconf.bat        include          php.ini-development  UPGRADING.INTERNALS CODING_STANDARDS.md  libs             php.ini-production   win32 config.log           libtool          README.md            Zend config.nice          LICENSE          README.REDIST.BINS config.status        main             run-tests.php configure            Makefile         sapi [root@lnh php-7.4.30]# cd sapi/ [root@lnh sapi]# ls apache2handler  cgi  cli  embed  fpm  litespeed  phpdbg [root@lnh sapi]# cd fpm/ [root@lnh fpm]# ls config.m4          LICENSE        php-fpm.conf        status.html.in CREDITS            Makefile.frag  php-fpm.conf.in     tests fpm                php-fpm        php-fpm.service     www.conf init.d.php-fpm     php-fpm.8      php-fpm.service.in  www.conf.in init.d.php-fpm.in  php-fpm.8.in   status.html [root@lnh fpm]# file init.d.php-fpm init.d.php-fpm: POSIX shell script, ASCII text executable [root@lnh fpm]# cp init.d.php-fpm /etc/init.d/php-fpm  //配置php-fpm [root@lnh fpm]# chmod +x /etc/init.d/php-fpm  //赋予执行权限 [root@lnh ~]# service php-fpm status  php-fpm is stopped //此时还没有正式启动 [root@lnh ~]# cd /usr/local/php7/ [root@lnh php7]# ls bin  etc  include  lib  php  sbin  var [root@lnh php7]# cd etc/ [root@lnh etc]# ls    //查看 pear.conf  php-fpm.conf.default  php-fpm.d [root@lnh etc]# cp php-fpm.conf.default php-fpm.conf [root@lnh etc]# ls   //查看复制后的文件 pear.conf  php-fpm.conf  php-fpm.conf.default  php-fpm.d [root@lnh etc]# cd php-fpm.d/ [root@lnh php-fpm.d]# ls www.conf.default [root@lnh php-fpm.d]# cp www.conf.default www.conf [root@lnh php-fpm.d]# ls   //查看复制后的文件 www.conf  www.conf.default [root@lnh php-fpm.d]# service php-fpm start  Starting php-fpm  done //开启服务 [root@lnh 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@lnh php-fpm.d]# cd  [root@lnh ~]# chkconfig --add php-fpm   //设置开机自启 [root@lnh ~]# 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]'.  php-fpm        	0:off	1:off	2:on	3:on	4:on	5:on	6:off //可以看见2,3,4,5,是开机自启 [root@lnh ~]# ps -ef|grep php root      214276       1  0 01:53 ?        00:00:00 php-fpm: master process (/usr/local/php7/etc/php-fpm.conf) nobody    214277  214276  0 01:53 ?        00:00:00 php-fpm: pool www nobody    214278  214276  0 01:53 ?        00:00:00 php-fpm: pool www root      214325   51892  0 01:56 pts/0    00:00:00 grep --color=auto php //查看进程 

报错解决

报错1: [root@lnh ~]# mysql -uroot -p'iBUh*ijeb45h' mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory 解决: [root@lnh ~]# dnf provides libncurses.so.5 Last metadata expiration check: 0:14:32 ago on Tue 02 Aug 2022 11:53:43 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@lnh ~]# dnf -y install ncurses-compat-libs  报错2: configure: error: Package requirements (sqlite3 > 3.7.4) were not met:  Package 'sqlite3', required by 'virtual:world', not found 解决: root@lnh php-7.4.30]# dnf list |grep sqlite3 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] libsqlite3x.x86_64                                                20071018-26.el8                                        epel          libsqlite3x-devel.x86_64                                          20071018-26.el8                                        epel          preludedb-sqlite3.x86_64                                          5.2.0-1.el8                                            epel          rubygem-sqlite3.x86_64                                            1.4.2-2.el8                                            epel          rubygem-sqlite3-doc.noarch                                        1.4.2-2.el8                                            epel          soci-sqlite3.x86_64                                               4.0.0-2.el8                                            epel          soci-sqlite3-devel.x86_64                                         4.0.0-2.el8                                            epel          uwsgi-plugin-sqlite3.x86_64                                       2.0.20-1.el8                                           epel          zabbix-dbfiles-sqlite3.noarch                                     6.0.2-1.module_el8+14182+e1fc92db                      epel-modular  zabbix-proxy-sqlite3.x86_64                                       6.0.2-1.module_el8+14182+e1fc92db                      epel-modular  zabbix40-dbfiles-sqlite3.noarch                                   4.0.39-1.el8                                           epel          zabbix40-proxy-sqlite3.x86_64                                     4.0.39-1.el8                                           epel          //查找系统中的安装包,选择第二个 [root@lnh php-7.4.30]# dnf -y install libsqlite3x-devel  报错3: configure: error: Package requirements (oniguruma) were not met:  Package 'oniguruma', required by 'virtual:world', not found 解决: [root@lnh php-7.4.30]# dnf list all|grep oniguruma 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] oniguruma.i686                                                    6.8.2-2.el8                                            AppStream     oniguruma.x86_64                                                  6.8.2-2.el8                                            AppStream     //在系统中查找的不是这个安装包 https://pkgs.org/ 在这个网站里面查找 oniguruma-devel [root@lnh php-7.4.30]# 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  报错4: configure: WARNING: unrecognized options: --with-gd, --with-jpeg-dir, --with-png-dir, --with-freetype-dir, --enable-zip 解决: [root@lnh php-7.4.30]# ./configure --help|grep gd   --with-gdbm[=DIR]       DBA: GDBM support   --enable-gd (新的)            Include GD support   --with-external-gd      Use external libgd   --with-webp             GD: Enable WEBP support (only for bundled libgd)   --with-jpeg             GD: Enable JPEG support (only for bundled libgd)   --with-xpm              GD: Enable XPM support (only for bundled libgd)                           libgd)   --enable-gd-jis-conv    GD: Enable JIS-mapped Japanese font support (only                           for bundled libgd) [root@lnh php-7.4.30]# ./configure --help|grep jpeg   --with-jpeg             GD: Enable JPEG support (only for bundled libgd) [root@lnh php-7.4.30]# ./configure --help|grep png [root@lnh php-7.4.30]#  [root@lnh php-7.4.30]# ./configure --help|grep freetype   --with-freetype         GD: Enable FreeType 2 support (only for bundled [root@lnh php-7.4.30]# ./configure --help|grep zip   --with-zip              Include Zip read/write support 报错5: configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:  Package 'libzip', required by 'virtual:world', not found Package 'libzip', required by 'virtual:world', not found Package 'libzip', required by 'virtual:world', not found 解决: [root@lnh ~]# dnf list all|grep zip|grep lib //在系统中查找 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] bzip2-libs.i686                                                   1.0.6-26.el8                                           @base         bzip2-libs.x86_64                                                 1.0.6-26.el8                                           @anaconda     libzip.x86_64                                                     1.5.1-2.module_el8.2.0+313+b04d0a66                    AppStream     libzip-devel.x86_64                                               1.5.1-2.module_el8.2.0+313+b04d0a66                    AppStream     libzip-tools.x86_64                                               1.5.1-2.module_el8.2.0+313+b04d0a66                    AppStream     zziplib.i686                                                      0.13.68-9.el8                                          AppStream     zziplib.x86_64                                                    0.13.68-9.el8                                          AppStream     zziplib-utils.x86_64                                              0.13.68-9.el8                                          AppStream     [root@lnh ~]# dnf -y install libzip-devel