企业级使用LAMP源码安装教程

2025-05-27 0 77

LAMP架构

(同一台服务器上搭建)

1.lamp介绍

lamp,由linux+apache+mysql/mariadb+php/perl/python的一组动态网站或者服务器的开源软件,除linux外其它各部分都是各种独立的程序,经常一起使用,拥有很强的兼容性,共同组成一个强大的web应用程序平台。

Linux(操作系统),Apache(HTTP服务器),Mysql(mariadb,数据库软件),PHP(perl或python),建立web应用平台

2.web服务工作流程

web服务器的资源分为俩种:静态和动态资源

静态资源:静态内容,客户端从服务器获得的资源的表达形式与源文件相同。就是直接储存于文件系统中的资源(.mp3/.mp4/.jpg/.gif)

动态资源:通常是程序文件,需要在服务器执行之后,将执行的结构返回给客户端(.php/.asp/.py/.net)

web服务器如何处理客户端的请求

企业级使用LAMP源码安装教程

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

阶段2显示php服务器和mysql服务器通过mysql协议进行通信,php与mysql本身没有联系,但是由php语言写的程序可以与mysql进行数据交互,同理python写的程序和perl也可以和MySQL数据库进行数据交互。

2.1cgi和fastcgi

CGI(common gateway lnterface,通用网关接口)

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.2httpd与php结合

php与httpd三种方式:
  • 方式一: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通信

FastCGI最常用,很少人使用CGI方式来加载动态资源

2.3web工作流程

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

3.LAMP平台构建

环境:

系统平台 ip 安装的服务
centos/redhat 192.168.136.145 httpd-2.4/mysql-5.7/php/php-mysql

lamp安装的顺序:

httpd >mysql >php

注意php要求httpd使用prefock MPM安装统一采用lamp方式安装

3.1安装httpd

  1. #redhat源
  2. [root@clq ~]# cat /etc/yum.repos.d/CentOSStream
  3. CentOSStreamAppStream.repo CentOSStreamHighAvailability.repo
  4. CentOSStreamBaseOS.repo CentOSStreamMedia.repo
  5. CentOSStreamDebuginfo.repo CentOSStreamPowerTools.repo
  6. CentOSStreamExtras.repo CentOSStreamRealTime.repo
  7. #安装epel源
  8. [root@clq ~]# yum y install epelrelease
  9. #查看包组
  10. [root@clq ~]# yum grouplist
  11. #安装包组
  12. [root@clq ~]# dnf y groups mark install "Development Tools"
  13. #创建apache用户
  14. [root@clq ~]# useradd r M s /sbin/nologin apache
  15. #安装依赖包(openssl-devel:加密传输模块)
  16. [root@cb ~]# yum y install openssldevel pcredevel expatdevel libtool gcc gccc++ make
  17. #下载安装apr和apr-util和httpd
  18. [root@cb ~]# cd /usr/src/
  19. #利用wget下载三包 略
  20. #tar解压包 略
  21. #进入apr包进行修改
  22. [root@cb apr1.7.0]# vim configure
  23. cfgfile="${ofile}T"
  24. trap "$RM \\"$cfgfile\\";exit 1" 1 2 15
  25. $RM "$cfgfile" #此行删掉或注释
  26. #apr编译三步
  27. ./configure prefix=/usr/local/apr
  28. make
  29. make install
  30. #apr-util编译三步
  31. ./configure prefix=/usr/local/aprutil withapr=/usr/local/apr
  32. make
  33. make install
  34. #httpd编译三步
  35. ./configure prefix=/usr/local/apache \\
  36. sysconfdir=/etc/httpd24 \\
  37. enableso \\
  38. enablessl \\
  39. enablecgi \\
  40. enablerewrite \\
  41. withzlib \\
  42. withpcre \\
  43. withapr=/usr/local/apr \\
  44. withaprutil=/usr/local/aprutil/ \\
  45. enablemodules=most \\
  46. enablempmsshared=all \\
  47. withmpm=prefork
  48. make
  49. make install
  50. #安装完配置
  51. 环境变量:echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/apache.sh
  52. 读取:source /etc/profile.d/httpd.sh
  53. 头文件映射:ln s /usr/local/apache/include /usr/include/httpd
  54. 帮助文档:vim /etc/man_db.conf
  55. 22 MANDATORY_MANPATH /usr/local/share/man
  56. 23 MANDATORY_MANPATH /usr/local/apache/man
  57. #取消ServerName前面的注释(警告信息无关紧要)
  58. [root@cb src]# vim /etc/httpd24/httpd.conf
  59. ServerName
  60. #启动apache
  61. [root@cb src]# systemctl stop firewalld
  62. [root@cb src]# systemctl disbles firewalld
  63. [root@cb src]# /usr/local/apache/bin/apachectl start
  64. [root@cb src]# ss antl
  65. State RecvQ SendQ Local Address:Port Peer Address:Port Process
  66. LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
  67. LISTEN 0 128 *:80 *:*
  68. LISTEN 0 128 [::]:22 [::]:*
  69. #注意删掉系统本身的apache
  70. #编写service文件实现开机自启
  71. #编写httpd.service文件:
  72. vim /etc/systemd/system/httpd.service
  73. 文件内俩个具体的路径:
  74. .配置文件路径:/etc/httpd24/httpd.conf
  75. .程序文件路径:/usr/local/apache/bin/httpd
  76. #系统加载文件:systemctl daemon-reload
  77. #启动systemctl start httpd
  78. #自启动systemctl enable httpd
  1. [root@clq ~]# vim /etc/systemd/system httpd.service
  2. [root@clq system]# cat httpd.service
  3. [Unit]
  4. Description=Start httpd
  5. [Service]
  6. Type=simple
  7. EnvironmentFile=/etc/httpd24/httpd.conf
  8. ExecStart=/usr/local/apache/bin/httpd k start DFOREGROUND
  9. ExecReload=/usr/local/apache/bin/httpd k graceful
  10. ExecStop=/bin/kill WINCH ${MAINPID}
  11. [Install]
  12. WantedBy=multiuser.target

3.2安装mysql

  1. #安装依赖包(cmake:编译自动配置工具)
  2. dnf y install ncursesdevel openssldevel openssl cmake mariadbdevel
  3. #创建用户
  4. useradd r M s /sbin/nologin mysql
  5. #下载mysql5.7.31包
  6. #解压放到/usr/local下
  7. #改名字方便操作
  8. cd /usr/local
  9. mv mysql5.7.31 mysql
  10. #改属主
  11. chown R mysql.mysql mysql/
  12. #环境变量
  13. echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
  14. source /etc/profile.d/mysql.sh
  15. #头文件映射
  16. ln s /usr/local/mysql/include /usr/include/mysql
  17. #库文件
  18. vim /etc/ld.so.conf.d/mysql.conf
  19. /usr/local/mysql/lib
  20. ldconfig #重新读取一下
  21. #帮助文档
  22. vim /etc/man_db.conf
  23. 23 MANDATORY_MANPATH /usr/local/apache/man
  24. 24 MANDATORY_MANPATH /usr/local/mysql/man
  25. #创建数据目录
  26. mkdir /opt/data
  27. chown R mysql.mysql /opt/data
  28. #初始化
  29. mysqld initialize user=mysql datadir=/opt/data
  30. #编写配置文件
  31. cat >/etc/my.cnf <<EOF
  32. [mysqld]
  33. basedir = /usr/local/mysql #安装目录
  34. datadir = /opt/data #数据目录
  35. socket = /tmp/mysql.sock #套接字
  36. user = mysql #用户
  37. port = 3306 #端口号
  38. pidfile = /opt/data/mysql.pid #进程号文件
  39. skipnameresolve #跳过域名解析
  40. EOF 退出
  41. #编写脚本
  42. cp /usr/local/mysql/supportfiles/mysql.server /etc/init.d/mysqld
  43. vim /etc/init.d/mysqld
  44. datadir=/opt/data
  45. basedir=/usr/local/mysql
  46. #启动mysql
  47. service mysqld start
  48. ss antl
  49. #安装libncurses.so.5包
  50. yum whatprovides libncurses.so.5
  51. yum y install ncursescompatlibs
  52. #修改mysql密码
  53. set password=password('Centos8.0!')
  54. #确保开机自启
  55. chkconfig add mysqld
  56. chkconfig mysqld on
  57. chkconfig list

3.3安装php

  1. #centos8可yum安装php,php是一门语言,安装7.2版本以上即可
  2. yum y install php*

3.4配置php

  1. #php配置
  2. vim /etc/phpfpm.d/www.conf
  3. 38 ;listen = /run/phpfpm/www.sock #取消注释
  4. 39 listen = 127.0.0.1:9000 #添加此行
  5. 65 listen.allowed_clients = 127.0.0.1
  6. mkdir p /data/php #创建php目录
  7. chown R apache.apache /data/ #改变属主
  8. vim /data/php/index.php #编写index.php文件
  9. <?php
  10. phpinfo();
  11. ?>
  12. #重新启动systemctl restart php-fpm.service
3.4.4php编译安装
  1. centos8之前版本
  2. //配置yum源
  3. [root@localhost ~]# wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
  4. [root@localhost ~]# rpm Uvh remirelease7.rpm
  5. [root@localhost ~]# yum makecache enablerepo=remiphp74
  6. //安装依赖包
  7. [root@localhost ~]# yum y install libxml2 libxml2devel openssl openssldevel bzip2 bzip2devel libcurl libcurldevel libicudevel libjpeg libjpegdevel libpng libpngdevel openldapdevel pcredevel freetype freetypedevel gmp gmpdevel libmcrypt libmcryptdevel readline readlinedevel libxslt libxsltdevel mhash mhashdevel php72phpmysqlnd
  8. 安装过程略….
  9. //下载php
  10. [root@localhost ~]# cd /usr/src/
  11. [root@localhost src]# wget http://cn.php.net/distributions/php-7.2.8.tar.xz下载过程略….
  12. //编译安装php
  13. [root@localhost src]# tar xf php7.2.8.tar.xz
  14. [root@localhost src]# cd php7.2.8
  15. [root@localhost php7.2.8]# ./configure prefix=/usr/local/php7 \\
  16. withconfigfilepath=/etc \\
  17. enablefpm \\
  18. enableinlineoptimization \\
  19. disabledebug \\
  20. disablerpath \\
  21. enableshared \\
  22. enablesoap \\
  23. withopenssl \\
  24. enablebcmath \\
  25. withiconv \\
  26. withbz2 \\
  27. enablecalendar \\
  28. withcurl \\
  29. enableexif \\
  30. enableftp \\
  31. withgd \\
  32. withjpegdir \\
  33. withpngdir \\
  34. withzlibdir \\
  35. withfreetypedir \\
  36. withgettext \\
  37. enablejson \\
  38. enablembstring \\
  39. enablepdo \\
  40. withmysqli=mysqlnd \\
  41. withpdomysql=mysqlnd \\
  42. withreadline \\
  43. enableshmop \\
  44. enablesimplexml \\
  45. enablesockets \\
  46. enablezip \\
  47. enablemysqlndcompressionsupport \\
  48. withpear \\
  49. enablepcntl \\
  50. enableposix
  51. [root@localhost php7.2.8]# make j $(cat /proc/cpuinfo |grep processor|wc l)
  52. 编译过程略
  53. [root@localhost php7.2.8]# make install
  54. 安装过程略
  55. //安装后配置
  56. [root@localhost ~]# echo 'export PATH=/usr/local/php7/bin:$PATH' > /etc/profile.d/php7.sh
  57. [root@localhost ~]# source /etc/profile.d/php7.sh
  58. //安装后配置
  59. [root@localhost ~]# echo 'export PATH=/usr/local/php7/bin:$PATH' > /etc/profile.d/php7.sh
  60. [root@localhost ~]# source /etc/profile.d/php7.sh
  61. [root@localhost php7.2.8]# which php
  62. /usr/local/php7/bin/php
  63. [root@localhost php7.2.8]# php v
  64. PHP 7.2.8 (cli) (built: Aug 16 2018 13:27:30) ( NTS )
  65. Copyright (c) 19972018 The PHP Group
  66. Zend Engine v3.2.0, Copyright (c) 19982018 Zend Technologies
  67. //配置php-fpm
  68. [root@localhost php7.2.8]# cp php.iniproduction /etc/php.ini
  69. [root@localhost php7.2.8]# cp sapi/fpm/init.d.phpfpm /etc/init.d/phpfpm
  70. [root@localhost php7.2.8]# chmod +x /etc/rc.d/init.d/phpfpm
  71. [root@localhost php7.2.8]# cp /usr/local/php7/etc/phpfpm.conf.default /usr/local/php7/etc/phpfpm.conf
  72. [root@localhost php7.2.8]# cp /usr/local/php7/etc/phpfpm.d/www.conf.default /usr/local/php7/etc/phpfpm.d/www.conf
  73. //编辑php-fpm的配置文件(/usr/local/php7/etc/php-fpm.conf):
  74. //配置fpm的相关选项为你所需要的值:
  75. [root@localhost ~]# vim /usr/local/php7/etc/phpfpm.conf
  76. …..
  77. …..
  78. pm.max_children = 50 ;最多同时提供50个进程提供50个并发服务
  79. pm.start_servers = 5 ;启动时启动5个进程
  80. pm.min_spare_servers = 2 ;最小空闲进程数
  81. pm.max_spare_servers = 8 ;最大空闲进程数
  82. [root@localhost ~]# tail /usr/local/php7/etc/phpfpm.conf
  83. ; file.
  84. ; Relative path can also be used. They will be prefixed by:
  85. ; the global prefix if it's been set (-p argument)
  86. ; – /usr/local/php7 otherwise
  87. include=/usr/local/php7/etc/php-fpm.d/*.conf
  88. pm.max_children = 50
  89. pm.start_servers = 5
  90. pm.min_spare_servers = 2
  91. pm.max_spare_servers = 8
  92. //启动php-fpm
  93. [root@localhost ~]# service php-fpm start
  94. Starting php-fpm done
  95. //默认情况下,fpm监听在127.0.0.1的9000端口,也可以使用如下命令验证其是否已经监听在相应的套接字
  96. [root@localhost ~]# ss -antl
  97. State Recv-Q Send-Q Local Address:Port Peer Address:Port
  98. LISTEN 0 128 *:22 *:*
  99. LISTEN 0 100 127.0.0.1:25 *:*
  100. LISTEN 0 128 127.0.0.1:9000 *:*
  101. LISTEN 0 128 :::80 :::*
  102. LISTEN 0 128 :::22 :::*
  103. LISTEN 0 100 ::1:25 :::*
  104. LISTEN 0 80 :::3306 :::*
  105. [root@localhost ~]# ps -ef|grep php
  106. root 81070 1 0 14:13 ? 00:00:00 php-fpm: master process (/usr/local/php7/etc/php-fpm.conf)
  107. nobody 81071 81070 0 14:13 ? 00:00:00 php-fpm: pool www
  108. nobody 81072 81070 0 14:13 ? 00:00:00 php-fpm: pool www
  109. nobody 81073 81070 0 14:13 ? 00:00:00 php-fpm: pool www
  110. nobody 81074 81070 0 14:13 ? 00:00:00 php-fpm: pool www
  111. nobody 81075 81070 0 14:13 ? 00:00:00 php-fpm: pool www
  112. root 81079 83354 0 14:15 pts/1 00:00:00 grep –color=auto php

3.5配置apache

apache 2.4以后有一个针对FastCGI的实现,模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩展,因此,这俩个模块都要加载,编辑httpd.conf文件,取消两行注释

  1. vim /etc/httpd24/httpd.conf
  2. LoadModule proxy_module modules/mod_proxy.so
  3. LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
  4. 或者sed修改
  5. sed i '/proxy_module/s/#//g' /etc/httpd24/httpd.conf
  6. sed i '/proxy_fcgi_module/s/#//g' /etc/httpd24/httpd.conf

apache yum安装网页的文件路径:/var/www/html

apache 源码安装网页的文件路径:/usr/local/apache/htdocs

配置虚拟主机

在需要使用fcgi的虚拟主机添加俩行:

  1. ProxyRequests Off #关闭正向代理
  2. ProxyPassMatch ^/(.*\\.php)$ fcgi://127.0.0.1:9000/网页目录/redhat.com/$1
  3. #以上设置是表示把.php结尾的文件发送到php-fpm进程,php-fpm至少需要知道运行的目录和URL,fcgi后面指名了这俩个参数,其它参数被mod——proxy_fcgi.so进行了封装,不需要手动指定。
  4. #redhat是域名
  5. #$1表示匹配所有以.php结尾的httpd请求
  1. /etc/httpd24/httpd.conf #主配置文件
  2. [root@clq ] vim /etc/httpd24/httpd.conf #进入主配置文件添加一个虚拟主机配置文件
  3. [root@clq ]vim /etc/httpd24/extra/vhosts.conf #编辑虚拟主机配置文件
  4. <VirtualHost *:80>
  5. DocumentRoot "/data/php/" #文件存放路径
  6. ServerName www.clq.com #域名
  7. DirectoryIndex index.php
  8. ProxyRequests Off
  9. ProxyPassMatch ^/(.*\\.php)$ fcgi://127.0.0.1:9000/data/php/$1
  10. <Directory "/data/php/">
  11. Options none
  12. AllowOverride none
  13. Require all granted
  14. </Directory>
  15. </VirtualHost>
  16. [root@clq] vim /etc/httpd24/httpd.conf
  17. 203 ServerName 0.0.0.0.com:80 #修改
  18. 261 DirectoryIndex index.php index.html #中间加index.php
  19. 399 AddType application/xhttpdphp .php #添加此行
  20. 400 AddType application/xhttpdphpsource .phps #添加此行
  21. 488 #
  22. 489 Include /etc/httpd24/httpd/extra/vhosts.conf #添加此条
  23. #重启
  24. systemctl restart httpd

企业级使用LAMP源码安装教程

4.博客创建1

下载地址:https://wordpress.org/download/#download-install

  1. #解压该包
  2. [root@clq ~]# unzip wordpress5.7.2.zip
  3. #解压的包全部放到/data/php下
  4. [root@clq ~]# mv wordpress/* /data/php/

再次访问:

企业级使用LAMP源码安装教程

  1. #数据库权限
  2. mysql> grant all on *.* to root@'192.168.136.219' identified by 'huawei@123';
  3. Query OK, 0 rows affected, 1 warning (0.00 sec)
  4. mysql> flush privileges;
  5. Query OK, 0 rows affected (0.00 sec)
  6. #创建数据库wordpress
  7. mysql> create database wordpress;

5.服务开机自启配置选择性使用

企业级使用LAMP源码安装教程

以上就是企业使用LAMP源码安装教程的详细内容,更多关于企业用LAMP源码安装的资料请关注快网idc其它相关文章!

原文链接:https://blog.csdn.net/qq_47945825/article/details/118558480

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 企业级使用LAMP源码安装教程 https://www.kuaiidc.com/63776.html

相关文章

发表评论
暂无评论