LAMP

标签(空格分隔): 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,
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容