lamp架构

lamp


lamp简介


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

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

lamp平台构建


环境说明:

系统平台IP需要安装的服务
centos8192.168.159.158httpd-2.4
mysql-5.7
php
php-mysql

lamp平台软件安装次序:

httpd --> mysql --> php

注意:php要求httpd使用prefork MPM

安装httpd
//YUM源配置
[root@zjq ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@zjq ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@zjq ~]# yum makecache

//epel源配置
[root@zjq ~]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
[root@zjq ~]# sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@zjq ~]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

//安装依赖包
[root@zjq ~]# yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make vim wget

//创建apache服务的用户
[root@zjq ~]# useradd -Mrs /sbin/nologin apache
[root@zjq ~]# id apache 
uid=995(apache) gid=992(apache) groups=992(apache)

//下载和安装httpd和apr以及apr-util
[root@zjq ~]# 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

[root@zjq ~]# tar xf apr-1.7.0.tar.gz 
[root@zjq ~]# tar xf apr-util-1.6.1.tar.gz

//编译安装apr
[root@zjq ~]# cd apr-1.7.0/
[root@zjq apr-1.7.0]# vim configure
    cfgfile=${ofile}T
    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
#    $RM "$cfgfile  //注释或删除这一行
[root@zjq apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@zjq apr-1.7.0]# make && make install

//编译安装apr-util
[root@zjq ~]# cd apr-util-1.6.1/
[root@zjq apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@zjq apr-util-1.6.1]# make && make install

//编译安装httpd
[root@zjq ~]# tar xf httpd-2.4.54.tar.gz 
[root@zjq ~]# cd httpd-2.4.54/
[root@zjq 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
[root@zjq httpd-2.4.54]# makes
[root@zjq httpd-2.4.54]# make install


//安装后配置
[root@zjq ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh
[root@zjq ~]# source /etc/profile.d/httpd.sh
[root@zjq ~]# ln -s /usr/local/apache/include/ /usr/include/httpd
[root@zjq ~]# 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

//配置开机自启配置文件并启动apache
[root@zjq ~]# cd /usr/lib/systemd/system
[root@zjq system]# cp sshd.service httpd.service
[root@zjq system]# vim httpd.service 
[root@zjq system]# cat 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@zjq ~]# systemctl daemon-reload 
[root@zjq ~]# systemctl start httpd.service 
[root@zjq ~]# systemctl enable httpd.service 
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@zjq ~]# 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               [::]:*  
安装mysql
//安装依赖包
[root@zjq ~]# yum -y install ncurses-devel openssl-devel openssl cmake mariadb-devel

//创建用户
[root@zjq ~]# useradd -Mrs /sbin/nologin mysql
[root@zjq ~]# id mysql 
uid=994(mysql) gid=991(mysql) groups=991(mysql)

//下载二进制格式的mysql软件包
[root@zjq ~]# cd /usr/src/
[root@zjq src]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz

//解压软件至/usr/local/
[root@zjq src]# tar xf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@zjq src]# cd /usr/local/
[root@zjq local]# mv mysql-5.7.38-linux-glibc2.12-x86_64/ mysql
[root@zjq local]# ls
apache  apr-util  etc    include  lib64    mysql  share
apr     bin       games  lib      libexec  sbin   src

//修改mysql的属主属组
[root@zjq local]# chown -R mysql.mysql mysql

//配置mysql
[root@zjq local]# ls /usr/local/mysql
bin  docs  include  lib  LICENSE  man  README  share  support-files
[root@zjq local]# ln -s /usr/local/mysql/include/ /usr/include/mysql
[root@zjq local]# echo '/usr/local/mysql/lib/' > /etc/ld.so.conf.d/mysql.conf 
[root@zjq 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@zjq ~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@zjq ~]# source /etc/profile.d/mysql.sh 
[root@zjq ~]# which mysql
/usr/local/mysql/bin/mysql

//初始化数据库
[root@zjq ~]# mkdir -p /opt/data
[root@zjq ~]# chown -R mysql.mysql /opt/data/
[root@zjq ~]# mysqld --initialize --user mysql --datadir /opt/data/
2022-08-02T12:13:11.015589Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-08-02T12:13:11.247148Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-08-02T12:13:11.279148Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-08-02T12:13:11.334260Z 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: 7a1ca64a-125c-11ed-b89a-000c29795f8d.
2022-08-02T12:13:11.335409Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2022-08-02T12:13:11.487590Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2022-08-02T12:13:11.487608Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2022-08-02T12:13:11.487955Z 0 [Warning] CA certificate ca.pem is self signed.
2022-08-02T12:13:11.586698Z 1 [Note] A temporary password is generated for root@localhost: 0!#egl/wkj5E
[root@zjq ~]# echo '0!#egl/wkj5E' > pass

//删除原有的mariadb服务
[root@zjq ~]# 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@zjq ~]# yum -y remove mariadb*

//生成配置文件
[root@zjq ~]# vim /etc/my.cnf
[root@zjq ~]# cat /etc/my.cnf
4[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@zjq ~]# cd /usr/local/mysql/
[root@zjq mysql]# ls
bin  docs  include  lib  LICENSE  man  README  share  support-files
[root@zjq mysql]# cd support-files/
[root@zjq support-files]# ls
magic  mysqld_multi.server  mysql-log-rotate  mysql.server
[root@zjq support-files]# cp mysql.server /etc/init.d/mysqld
[root@zjq support-files]# vim /etc/init.d/mysqld 
basedir=/usr/local/mysql
datadir=/opt/data
[root@zjq support-files]# chmod +x /etc/init.d/mysqld 

//启动mysql
[root@zjq ~]# service mysqld start
Starting MySQL.Logging to '/opt/data/zjq.err'.
 SUCCESS! 
[root@zjq ~]# 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@zjq ~]# chkconfig --add mysqld
[root@zjq ~]# 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

//关闭防火墙与selinux
[root@zjq ~]# systemctl stop firewalld.service 
[root@zjq ~]# systemctl disable firewalld.service 
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@zjq ~]# setenforce 0   
[root@zjq ~]# vim /etc/sysconfig/selinux 
SELINUX=disabled

//进入数据库,如遇到错误演示完下方有解决方案
[root@zjq ~]# mysql -uroot -p'0!#egl/wkj5E'
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> 
mysql> set password = password('123');
Query OK, 0 rows affected, 1 warning (0.00 sec)

解决方法
[root@zjq ~]# mysql -uroot -p'0!#egl/wkj5E'
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
[root@zjq ~]# dnf provides libncurses.so.5
Last metadata expiration check: 1:18:14 ago on Tue 02 Aug 2022 07:08:59 PM CST.
ncurses-compat-libs-6.1-9.20180224.el8.i686 : Ncurses compatibility libraries
Repo        : base
Matched from:
Provide    : libncurses.so.5

[root@zjq ~]# dnf -y install ncurses-compat-libs
安装php
//下载php
[root@zjq ~]# wget https://www.php.net/distributions/php-7.4.30.tar.xz
[root@zjq ~]# sha256sum php-7.4.30.tar.xz 
ea72a34f32c67e79ac2da7dfe96177f3c451c3eefae5810ba13312ed398ba70d  php-7.4.30.tar.xz
[root@zjq ~]# tar xf php-7.4.30.tar.xz 

//安装依赖包
[root@zjq ~]# yum -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

//编译安装php,如需下载依赖包,依次下载我新添的三个包
[root@zjq ~]# cd php-7.4.30/
[root@zjq php-7.4.30]# dnf -y install libsqlite3x-devel
[root@zjq 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
[root@zjq php-7.4.30]# dnf -y install libzip-devel
[root@zjq 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
[root@zjq php-7.4.30]# make && make install

//安装后配置
[root@zjq php-7.4.30]# echo 'export PATH=/usr/local/php7/bin:$PATH' > /etc/profile.d/php7.sh
[root@zjq php-7.4.30]# source /etc/profile.d/php7.sh
[root@zjq php-7.4.30]# which php
/usr/local/php7/bin/php
[root@zjq php-7.4.30]# php -v
PHP 7.4.30 (cli) (built: Aug  2 2022 21:07:26) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

//配置php-fpm
[root@zjq php-7.4.30]# cd sapi/
[root@zjq sapi]# cd fpm/
[root@zjq fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
[root@zjq fpm]# chmod +x /etc/init.d/php-fpm 
[root@zjq ~]# cd /usr/local/php7/etc/
[root@zjq etc]# cp php-fpm.conf.default php-fpm.conf
[root@zjq etc]# cd php-fpm.d/
[root@zjq php-fpm.d]# cp www.conf.default www.conf

//启动php-fpm
[root@zjq php-fpm.d]# service php-fpm start
Starting php-fpm  done
[root@zjq php-fpm.d]# 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           127.0.0.1:9000          0.0.0.0:*              
LISTEN  0       128                   *:80                  *:*              
LISTEN  0       128                [::]:22               [::]:*              
LISTEN  0       80                    *:3306                *:*              
[root@zjq php-fpm.d]# cd
[root@zjq ~]# chkconfig --add php-fpm 
[root@zjq ~]# 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
配置apache

启用代理模块

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

  • [root@zjq ~]# vim //usr/local/apache/conf/httpd.conf
    • LoadModule proxy_module modules/mod_proxy.so
    • LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
配置虚拟主机
//创建虚拟主机目录并生成php测试页面
[root@zjq ~]# mkdir /usr/local/apache/htdocs/zhang
[root@zjq ~]# vim /usr/local/apache/htdocs/zhang/index.php
[root@zjq ~]# cat /usr/local/apache/htdocs/zhang/index.php
<?php
   phpinfo();
?>

[root@zjq ~]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf 
<VirtualHost *:80>
    DocumentRoot "/usr/local/apache/htdocs/zhang"
    ServerName zhang.example.com
    ErrorLog "logs/zhang.example.com-error_log"
    CustomLog "logs/zhang.example.com-access_log" common
ProxyRequests Off
    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/zhang/$1
    <Directory "/usr/local/apache/htdocs/zhang">
        Options none
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>

[root@zjq ~]# vim /usr/local/apache/conf/httpd.conf
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php #添加此行
    AddType application/x-httpd-php-source .phps #添加此行

<IfModule dir_module>
    DirectoryIndex index.php index.html //添加index.php
</IfModule>

[root@zjq ~]# vim /usr/local/apache/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf  //取消注释

[root@zjq ~]# systemctl restart httpd.service
  • 验证

  • 安装phpmyadmin
//下载phpmyadmin包
[root@zjq ~]# wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.tar.xz
//解压
[root@zjq ~]# tar xf phpMyAdmin-5.2.0-all-languages.tar.xz 
[root@zjq ~]# mv phpmyadmin/ /usr/local/apache/htdocs/zhang/
[root@zjq ~]# cd /usr/local/apache/htdocs/zhang/
[root@zjq zhang]# ls
index.php  phpmyadmin
[root@zjq zhang]# cd phpmyadmin/
//复制样本文件到config.int.php
[root@zjq phpmyadmin]# cp config.sample.inc.php config.inc.php 
//重启httpd
[root@zjq phpmyadmin]# systemctl restart httpd.service 
  • 测试登录

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随便投投

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值