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,
    

    相关文章

      网友评论

          本文标题:LAMP

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