LAMP

作者: uangianlap | 来源:发表于2017-02-09 16:13 被阅读60次

标签(空格分隔): Linux 运维 lamp


LAMP

动态资源与静态资源

❶ 静态资源: 原始形式与响应结果一致
❷ 动态资源: 原始形式通常是程序文件(由某种编程语言开发),需要运行后将运行生成的结果呈现给用户

CGI(Common Gateway Interface)协议

是一种协议,它定义了客户端(如httpd)与服务端(特定的应用程序服务进程)交换数据的一种规范.

服务器框架

❶ Web Server: httpd nginx ...
❷ Application Server: php python java perl ruby ...
❸ Data Server: SQL NoSQL NewSQL ...

安装LAMP

yum -y install httpd mariadb-server php php-mysql # yum一键安装rhel6系只要将mariadb-server改成mysql-server就行了
这种形式是php以shared模块的方式被httpd装载,而并不是以CGI或FastCGI的形式.可以查看一下php安装后生成的文件便知,如下:

rpm -ql php                           # php生成的文件如下
/etc/httpd/conf.d/php.conf            # php的配置文件
/etc/httpd/conf.modules.d/10-php.conf # httpd加载php模块的配置文件
/usr/lib64/httpd/modules/libphp5.so   # php模块
/usr/share/httpd/icons/php.gif
/var/lib/php/session

另一种方式是FCGI的形式连接php,php会工作于单独的服务器.其需要两个条件:
❶ httpd要装载cgi_module
❷ 安装php-fpm

测试php是否安装成功

cat > /var/www/html/index.php <<EOF   # php测试页
> <?php
>     phpinfo();
> ?>
> EOF
systemctl start httpd                 # 启动httpd 
在浏览器地址栏输入:http://10.0.0.11/index.php,回车后会看到如下内容
php_test.png

测试mariadb-server是否安装成功

php是通过php-mysql这个模块(扩展)来连接MySQL数据库的,我们看看php-mysql都安装了哪些文件便可一清二楚.

rpm -ql php-mysql                     # 查看php-mysql程序生成的内容 
/etc/php.d/mysql.ini                  
/etc/php.d/mysqli.ini
/etc/php.d/pdo_mysql.ini
/usr/lib64/php/modules/mysql.so       # 以下3个便是php的MySQL的模块了
/usr/lib64/php/modules/mysqli.so
/usr/lib64/php/modules/pdo_mysql.so
接着我们可以来测试一下php能否连接上MySQL数据库
cat > /var/www/html/php-mysql.php << EOF   # 编写一个测试连接MySQL的php脚本
> <?php
>     $conn = mysql_connect('127.0.0.1', 'root', '');
>     if ($conn)
>         echo 'Success';
>     else
>         echo 'Failure';
> ?>
> EOF

不启动MySQL服务时,在本机浏览器地址栏输入:http://10.0.0.11/php-mysql.php

Failure
当启动MySQL systemctl start mariadb.service服务时,再次访问http://10.0.0.11/php-mysql.php Success

LAMP框架安装Discuz论坛程序(准备Discuz_X3.2_SC_UTF8程序)

systemctl start mariadb.service       # 启动MySQL数据库
#Mysql                                # 进入MySQL shell
> create database ultrax;             # 新建一个数据库
> grant all on ultrax.* to 'dzuser'@'localhost' identified by 'dzpass';
                                      # 授权一个用户来使用这个数据库(而不用root)
在Discuz程序所在的目录执行 unzip Discuz_X3.2_SC_UTF8得到如下3个目录
readme  upload  utility
cp -a upload /var/www/html/discuz     # 将upload目录拷贝到指定的并改名discuz

此时便可访问http://10.0.0.1/discuz

discuz程序安装向导

点击"我同意"

开始安装

点击"下一步"


setenv.png

点击"下一步"



点击"下一步"即可完成安装

LAMP安装phpMyAdmin来管理数据库(我这里用phpMyAdmin-4.4.14.1-all-languages)

为了安全,我们给数据库用户root设定个密码
#mysq
>use mysql;
>update user set password=PASSWORD('uangianlap') where User='root';
>flush privileges;
>\q  
下次再以root身份登录MySQL就需要你输入我们设置的密码了.
yum -y install php-mbstring php-mcrypt
systemctl reload httpd
在phpMyAdmin程序文件所在的目录下
unzip phpMyAdmin-4.4.14.1-all-languages.zip
phpMyAdmin-4.4.14.1-all-languages.zip
mv config.sample.inc.php config.inc.php
vim config.inc.php
  $cfg['blowfish_secret'] = 'rKHBflH9Gfk=';      # 在''里随机添加一些内容
cp -a phpMyAdmin-4.4.14.1-all-languages /var/www/html/pma
此时访问http://10.0.0.1/pma即可进行网页操作管理MySQL数据库了

php-xcache

yum -y install php-xcache
xcache模块可以缓存php运行时编译生成的opcode可以加速php程序的效率.

php的配置文件

/etc/php.ini
/etc/php.d/*.ini
参考php官方文档使用

php-fpm使用

php-fpm: fastcgi process manager
php-fpm与httpd之间通过套接字通信,此时httpd可看着是php-fpm的客户端,站在访问者角度来说httpd又可以称之为反代.
PHP-FPM (FastCGI Process Manager) 是一个可供选择的 PHP FastCGI实现,它增加了一些额外的很有用的特性,适合所有站点特别是那些比较繁忙的.

yum -y install httpd mariadb-server php-fpm php-mysql
php-fpm的程序环境
`/etc/php-fpm.conf`        # 主配置文件
    pid = /run/php-fpm/php-fpm.pid
    error_log = /var/log/php-fpm/error.log
    log_level = notice
    daemonize = no
`/etc/php-fpm.d`           # 辅助配置文件目录
`/etc/php-fpm.d/www.conf`  # 定义了如何响应来自前端httpd的请求,连接池的定义
    listen = 127.0.0.1:9000 # 监听在哪台主机与端口上
    listen.backlog = -1     # 允许排除的队列,-1表示无穷
    listen.allowed_clients = 127.0.0.1 # 限定客户端只能来自
    user = apache           # php-fpm子进程以哪个用户身份运行
    group = apache          # 同上
    pm = dynamic|static     # 进程管理方式,默认前者.动态则需要设置如下指令
        pm.max_children = 50      # 最大的子进程数量
        pm.start_servers = 5      # 服务启动时的子进程数量
        pm.min_spare_servers = 5  # 最小空闲子进程
        pm.max_spare_servers = 35 # 最大空闲子进程
        pm.max_requests = 500     # 每个子进程最多可处理多少个前端请求
    pm.status_path = /status  # 状态页面,建议打开
    ping.path = /ping         # 状态检测,建议打开
    ping.response = pong      # 状态检测返回内容
    rlimit_files = 1024       # 打开的文件数量,默认为1024
    rlimit_core = 0           # 进程所能使用的核心大小,0表示不限制
`/usr/lib/systemd/system/php-fpm.service`
`/usr/sbin/php-fpm`           # 主程序,启动后监听在某个套按字上
systemctl start php-fpm.service  # 启动php-fpm服务
httpd -M | grep fcgi             # 确保httpd装载了proxy_fcgi_module
mkdir -pv /vhost/www
cat > phpinfo.php << EOF
> <?PHP
>     phpinfo();
> ?>
> EOF
编辑前端httpd主机设置
vim /etc/httpd/conf.d/vhost.conf
    <VirtualHost *:80>
        ServerName www.jianshu.com
        DocumentRoot "/vhost/www"
        <Directory "/vhost/www">
            Options None
            AllowOverride None
            Require all granted
        </Directory>
        ProxyRequests Off
        ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/vhost/www/$1
        ProxyPassMatch ^/(ping|status)$ fcgi://127.0.0.1:9000/$1
        DirectoryIndex index.php
    </VirtualHost>
    
status输出内容说明:
pool:                 www     # 连接池名称
process manager:      dynamic # 进程管理器类型
start time:           10/Feb/2017:11:48:29 +0800 # 启动日期时间
start since:          16      # 运行时长
accepted conn:        1       # 连接池已经处理过的请求
listen queue:         0       # 请求队列长度
max listen queue:     0       # 请求队列的最大长度
listen queue len:     128     # socket等待队列的长度
idle processes:       4       # 空闲进程数量
active processes:     1       # 活跃进程数量
total processes:      5       # 连接池中的总进程数
max active processes: 1       # 过去时间连接池中最大的活跃进程数量
max children reached: 0       # 达到连接池中最大进程数量限制的上限的次数
slow requests:        0       # 启用slow log时记录的慢请求的数量

编译安装LAMP(CentOS7)

系统开发环境: Development tools, Server Platform Development
httpd依赖于arp和apr-util (apache portable runtime) 以实现OS跨平台
    各程序版本:
        httpd: 2.2 2.4
        php:   5.x     #php与httpd的结合方式也需要考虑,5.3.3之前需要打补丁才能实现fpm
        mysql: 5.1,5.5,5.6,5.7,5.8
        mariadb: 5.x 10.x
            mysql&mariadb安装方式
             1.预制的二进制程序包
             2.二进程格式(与win中的绿色软件相似)
             3.源代码
             
        httpd+php   
            modules: --with-apxs=
                prefork: libphp5.so
                worker,event: libphp5-zts.so
            fpm:
                5.3.3-, 手动打上fpm patch
                5.3.3+, 自带了fpm,编译时只需要使用--fpm选项

    ㈠ Httpd 2.4 编译安装 httpd-2.4.10.tar.bz2
        yum -y groupinstall "Development Tools" "Server Platform Development"
        yum -y install pcre-devel openssl-devel libevent-devel apr-devel apr-util-devel
        
        tar -xf httpd-2.4.10.tar.bz2; cd httpd-2.4.10
        
        ./configure --prefix=/usr/local/httpd24 \   # 程序安装路径
        --sysconfdir=/etc/httpd \                   
        --enable-so \
        --enable-ssl \
        --enable-cgi \
        --enable-rewrite \
        --enable-modules=most \
        --enable-mpms-shared=all \
        --with-mpm=prefork \
        --with-pcre \
        --with-zlib \
        --with-apr=/usr \
        --with-apr-util=/usr
        
        make && make install    #make -j 可以指定多线程
        
        cd /usr/local/; ln -sv /usr/local/httpd24 httpd;
        echo "export PATH=/usr/local/httpd/bin:$PATH" > /etc/profile.d/apache.sh; source /etc/profile.d/apache.sh

    ㈡ Mariadb二进制安装
        groupadd -r mysql
        useradd -r -g mysql -M -s /sbin/nologin mysql                             # 创建mysql用户
        mkdir /data/mydata                                                        # 数据目录,生产环境应该做RAID磁盘LVM
        chown -R mysql.mysql /data/mydata
        tar -xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local/; cd /usr/local  # 创建软件软链接
        ln -sv mariadb-5.5.46-linux-x86_64 mariadb; cd mariadb
        chown -R root:mysql ./*
        scripts/mysql_install_db --user=mysql --datadir=/data/mydata
        cp support -files/my-large.cnf /etc/my.cnf            
        vim /etc/my.cnf
            thread_concurrency = 8       # 数字改成当前CPU核心*2即可
            datadir = /data/mydata
            skip_name_resolve = ON
            innodb_file_per_table = ON
        cp support-files/mydql.server /etc/init.d/mysqld                          # CentOS7需要将此脚本里部分mysql改
                                                                                         成mariadb
        chkconfig --add mysqld
        echo export PATH=/usr/local/mariadb/bin:$PATH > /etc/profile.d/mysql.sh; source /etc/profile.d/mysql.sh
        OK!
        
        
    ㈢ 编译安装 php-5.4.40.tar.bz2   
        yum -y install gd-devel pcre-devel libpng-devel freetype-devel libmcrypt-devel libxml2-devel bzip2-devel openssl openssl-devel
        tar -xf php-5.4.40.tar.bz2; cd php-5.4.40
        
        ./configure \
        --prefix=/usr/local/php54 \
        --with-mysql=/usr/local/mysql \
        --with-openssl \
        --with-mysqli=/usr/local/mariadb/bin/mysql_config \
        --enable-mbstring \
        --enable-xml \
        --enable-sockets \
        --enable-exif \
        --disable-ipv6 \
        --enable-soap \
        --with-freetype-dir \
        --with-gd --with-libxml-dir=/usr --with-zlib --with-jpeg-dir --with-png-dir --with-mcrypt \
        --with-apxs2=/usr/local/httpd/bin/apxs \               
        --with-config-file-path=/etc/php.ini \
        --with-config-file-scan-dir=/etc/php.d/
        
        make && make install
        cp php.ini-production /etc/php.ini             # 拷贝php模板配置文件
        mkdir /etc/php.d/                              # 创建配置文件辅助目录
        整合php至httpd上
        在httpd的配置文件httpd.conf中添加一行内容"AddType application/x-httpd-php .php" "DirectoryIndex index.php"
            
        注意: 如果httpd使用线程模型(worker)MPM,需要额外的--enable-maintainer-zts选项
        注意: 如果要以fpm方式运行php,需要编译时移除--with-apxs选项,额外添加--enable-fpm选项
        注意: 如果是独立安装的mysql-server,

相关文章

  • 阿里云安装 LA/NMP分布式环境详细步骤

    理论 什么是LAMP LAMP = Linux + Apache + MySQL +PHP 为什么使用LAMP ...

  • linux 第四天

    Lamp环境搭建 /*******************Lamp环境搭建:*******************...

  • 26-LAMP架构

    本章内容 ◆ LAMP介绍◆ PHP配置◆ 实现LAMP应用数据库管理系统phpMyadmin◆ 实现LAMP应用...

  • 网络yum搭建LAMP简单环境

    LAMP 什么是LAMP环境?LAMP=linux+Apache+MySQL+Php只不过如今MySQL被甲骨文公...

  • docker lamp

    使用docker安装lamp docker search-s10lamp#搜索被收藏或使用较多的LAMP镜像,小伙...

  • 小知识

    LNMP LNMP = Linux + Nginx + Mysql + PHP LAMP LAMP = Linux...

  • 原生小程序组件

    组件:lamp lamp.wxml && lamp.wxss 和其他页面一样没什么不同 插入模板 单个sol...

  • 淘宝这十年摘要

    2003.04.07-2003.05.10 LAMP(Linux+Apache+Mysql+PHP)LAMP 常用...

  • Warm暖

    Lamp I like the colour of the lamp she's warm and calm w...

  • P1-wonder

    A magic lamp 灯 Eg:if I found a magic lamp and I could hav...

网友评论

      本文标题:LAMP

      本文链接:https://www.haomeiwen.com/subject/antwittx.html