大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

LAMP

image.png
LAM(M)P:
L: linux
A: apache (httpd)
M: mysql, mariadb
M:memcached
P: php, perl, python

CGI  Common Gateway Interface
Client -- (httpd) --> httpd -- (cgi) -->application server (program file) -- (mysql) --> mysql

PHP
官网:http://www.php.net/
服务器端脚本编程语言,主要用于web开发实现动态web页面
基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)
PHP Zend Engine 
开源的、PHP脚本语言的解释器,由C语言开发,做为PHP的后端模块使用。
Zend Engine为PHP提供了内存和资源管理的功能以及其它的一些标准服务
Zend Engine将PHP代码的处理过程分成了两个阶段:
第一:分析PHP代码并将其转换为称作Zend opcode的二进制格式(类似Java的字节码),并将其存储于内存中;
第二:使用Zend Engine去执行这些转换后的Opcode
Opcode
一种PHP脚本编译后的中间语言
PHP执行PHP脚本代码一般会经过如下4个步骤(确切应该是PHP的语言引擎Zend)
1、Scanning 词法分析,将PHP代码转换为语言片段(Tokens)
2、Parsing 语义分析,将Tokens转换成简单而有意义的表达式
3、Compilation 将表达式编译成Opocdes
4、Execution 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能
即:扫描-->分析-->编译-->执行

yum list php  centos6 5.3版本  centos7 5.4版本
http://www.php.net/ 
——>Download——php-5.6.34.tar.bz2和php-7.2.3.tar.bz2——选择国度,点解下载即可
http://xcache.lighttpd.net/
XCache 3.2.0——>XCache 3.2.0 源码包, tar.gz——此包是PHP的加速器,可使其性能提高几倍

使用系统自带的PHP的rpm包
快照恢复至原始状态
yum -y install httpd
systemctl start httpd
ps aux|grep httpd
yum -y install php
rpm -ql php
/etc/httpd/conf.d/php.conf  此文件后缀编译安装,需要自己写
/etc/httpd/conf.modules.d/10-php.conf  加载模块的文件LoadModule
/usr/lib64/httpd/modules/libphp5.so  模块文件
/usr/share/httpd/icons/php.gif
/var/lib/php/session
which httpd
httpd -M|grep php  找到php模块
浏览器:192.168.29.127  NO
关闭防火墙和selinux
systemctl start httpd
cd /var/www/html
vim index.html
vim a.php  http网页中嵌入php,此方法相对好点
<h1><?php echo "Hello,PHP" ?></h1> 
浏览器:192.168.29.127  OK
<h1>  也可写成上面的形式
<?php 
echo "Hello,PHP";  分号不能忘记
phpinfo();  php调用的函数,出现详细的信息
?>
</h1>
浏览器:192.168.29.127  OK
vim b.php  php中嵌入http网页
<?php
echo date("Y/m/d");
echo "<h1>hello,php2</h1>"
?>
浏览器:192.168.29.127  OK

正常情况下,php和http放在一个机器上,数据库放在另一个机器上
规划:centos7放php和http,centos6放数据库
centos6
yum list mysql  显示已经安装
chkconfig --list mysqld
service mysqld start
mysql_secure_installation  禁止用户匿名登陆
mysql -uroot -p  正常情况下,自己创建一个用户,用此用户登陆
show databases; select host,user,password from mysql.user;
grant all on *.* to feng@'192.168.%.%' identified by "123456";  允许该网段的远程用户feng登陆
centos7
yum -y install mariadb(客户端的程序)  服务器端是mariadb-server
mysql -ufeng -h 192.168.29.126 -p
create database feng;
show databases;
quit
yum -y install php-mysql(使php连接mysql的包)
rpm -ql php-mysql  含有php连接mysql的模块文件
vim /var/www/html/index.html
php连接mysql,过旧,php-5.5版本据说不支持
<?php  
$conn=mysql_connect("192.168.29.126","feng","123456");
if ($conn)
    echo "连接MySQL成功";
else
    echo "连接失败";
mysql_close();
?>
或者 
php使用mysqli扩展连接数据库,面向对象和过程,php版本没有限制
<?php
$mysqli=new mysqli("192.168.29.126","feng","123456");
if (mysqli_connect_error()) {
        echo "连接MySQL Failure";
        $mysqli=null;
        exit;
}
        echo "连接Success";
        $mysqli->close();
?>
systemctl start httpd
浏览器:192.168.29.127  OK
centos6: service mysqld stop
浏览器:192.168.29.127  OK

规划:centos7安装lamp
快照恢复至最初的状态
yum -y install httpd mariadb mariadb-server php php-mysql
systemctl start httpd
systemctl start mariadb
ss -ntl  3306和80端口,php以模块方式启动,没有端口
httpd -M
mysql_secure_installation  删除匿名用户登陆


布署phpMyadmin
下载 phpMyAdmin-4.4.14.1-all-languages.zip,不能下载最新的版本,php版本太低
https://www.phpmyadmin.net/files/4.4.14.1/
rz  上传文件至根下
unzip phpMyAdmin-4.4.14.1-all-languages.zip  解包
规划:在/var/www/html下创建多个文件夹,可以区分开PhpMyAdmin,WordPress,Discuz!等各种应用
mv phpMyAdmin-4.4.14.1-all-languages /var/www/html/pma
cd /var/www/html/pma; ls
cp config.sample.inc.php config.inc.php
vim config.inc.php
$cfg['blowfish_secret'] = '';  变为
$cfg['blowfish_secret'] = 'ZJCWKLf2l+vUgo6YQ56zoZ8JQfWZ';
这个加密的字母随机生成,复制粘贴即可:openssl rand -base64 21;
yum -y install php-mbstring
systemctl httpd restart
浏览器:192.168.29.127/pma  OK  
输入账号和密码登陆  鼠标操作
  数据库——blogdb——创建  创建数据库,先不创建表,wordpress会自动创建表
  New——用户——添加用户——wpuser,localhost,123456,123456——执行
  数据库——blogdb——执行——全选——执行  显示数据库更新
mysql -uwpuser -p


布署wordpress
下载 wordpress-4.8.tar.gz(英文)
文件夹里有 wordpress-4.8-zh_CN.tar(中文)  最好rz这个文件
https://wordpress.org/download/release-archive/
rz  上传文件至根下
tar xvf wordpress-4.8.tar.gz
mv wordpress/ /var/www/html/blog
cd /var/www/html/blog/; ls
浏览器:192.168.29.127/blog  OK 
mysql -uwpuser -p; use blogdb; show tables;  目前没有表生成
方法1:
cp wp-config-sample.php wp-config.php
vim wp-config.php
define('DB_NAME', 'database_name_here'); 变为 define('DB_NAME', 'blogdb');
define('DB_USER', 'username_here'); 变为 define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'password_here'); 变为 define('DB_PASSWORD', '123456');
define('DB_HOST', 'localhost'); 不变
方法2:  
cd /var/www/html; setfacl -m u:apache:rwx blog/
blogdb,wpuser,123456,localhost
安装
Site Title  联盟之家
Username    qiangge
Password    qianggedu123456
Your Email  594634660@qq.com
点击 "Install Wordpress"
此时就会生成许多表,命令行连接mysql,show tables; 即可
登陆,输入账号和密码,登陆后台
浏览器:192.168.29.127/blog  针对此网站,申请个域名即可作为自己的博客网站了
centos6:测试3次取平均值
ab -c10 -n 200 http://192.168.29.127/blog/   注意blog后面的"/"不能少


CentOS7编译Php-xcache加速访问
方法一:
yum源安装xcache:增加epel源
[epel]
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
yum clean all
yum list |grep xcache
yum -y install xcache-admin  php-xcache
systemctl httpd restart
rpm -ql php-xcache
cat /etc/php.d/xcache.ini
vim /var/www/html/index.php
<?php phpinfo(); ?>
systemctl httpd restart
浏览器:192.168.29.127  
在页面上按快捷键ctrl+f,搜索xcache
centos6:ab -c10 -n 200 http://192.168.29.127/blog/ 
貌似没什么用

方法二:
编译安装Xcache
rz  上传至根目录下
tar xvf xcache-3.2.0.tar.gz
cd xcache-3.2.0/; ls  没有config文件
yum -y install php-devel
phpize  生成config文件
yum -y groupinstall "Development tools"
./configure --enable-xcache --with-php-config=/usr/bin/php-config
make && make install 
ll /etc/php.d
cp xcache.ini /etc/php.d
vim /etc/php.d/xcache.ini  看一下启用模块即可,不应更改
systemctl httpd restart
centos6: 
ab -c10 -n 200 http://192.168.29.127/blog/  性能提高了2-3倍


centos7
yum -y install httpd mariadb mariadb-server php-fpm php-mysql
rpm -ql php-fpm  看一下配置文件的内容
systemctl start php-fpm
ss -ntl  80,9000端口开启

配置httpd
vim /etc/httpd/conf.d/fcgi.conf
DirectoryIndex index.php
proxyrequests off
proxyPassMatch "^/(.*\.php)$" fcgi://127.0.0.1:9000/var/www/html/$1
httpd -t
vim /var/www/html/index.php
<?php phpinfo(); ?>
systemctl httpd restart
浏览器:192.168.29.127
centos6:ab -c10 -n 1000 http://192.168.29.127/
mv /etc/httpd/conf.d/fcgi.conf /etc/httpd/conf.d/fcgi.conf.bak
yum -y install php
rpm -ql php
systemctl httpd restart
浏览器:192.168.29.127
centos6:ab -c10 -n 1000 http://192.168.29.127/

虚拟主机配置(未实验)
vim /etc/httpd/conf.d/vhosts.conf
DirectoryIndex index.php
<VirtualHost *:80>
ServerName www.b.net
DocumentRoot /apps/vhosts/b.net
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1
<Directory "/apps/vhosts/b.net">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

CentOS7编译安装LAMP,配置wordpress,xcache
apache,php,mariadb,xcache
准备包:
apr-1.5.2.tar.bz2     
apr-util-1.5.4.tar.bz2    
httpd-2.4.29.tar.bz2
mariadb-10.2.7-linux-x86_64.tar.gz                 
php-7.2.3.tar.bz2           
wordpress-4.8-zh_CN.tar.gz
xcache-3.2.0.tar.gz
rpm包安装mariadb:downloads.mariadb.org/mariadb/repositories  yum源安装,简单,没有技术含量,可以参考
ls /usr/local/src/  存放源码包
cd /usr/local/src/; ls; rz 上传下载的包

apr,apr-util,httpd的安装
rpm -q httpd; yum remove httpd  移除本机带的httpd,防止受影响,如果没有安装即不用操作
tar xvf apr-1.5.2.tar.bz2
tar xvf apr-util-1.5.4.tar.bz2
tar xvf httpd-2.4.29.tar.bz2
cd /usr/local/src/httpd-2.4.29/srclib
mv ../../apr-1.5.2 ./apr
mv ../../apr-util-1.5.4 ./apr-util; ls; cd ..; ls
yum -y groupinstall "Development tools"
编译时会缺少这两个包,所有直接安装
yum -y install pcre-devel openssl-devel
./configure --prefix=/app/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
make && make install
vim /etc/profile.d/app.sh
export PATH=/app/httpd24/bin:$PATH
. /etc/profile.d/app.sh
which apachectl  查看路径
ps aux |grep httpd  没有启动
apachectl  
ps aux |grep httpd
浏览器:192.168.29.127  OK
apachectl stop
ps aux |grep httpd
浏览器:192.168.29.127  OK

mariadb的安装
此步骤不用操作:rpm -qa "mariadb*"; yum remove mariadb-libs
getent passwd  看是否有mysql,没有需要创建用户mysql
useradd -r -d /app/data -s /sbin/nologin -u 36 mysql -m
ll /app/data/ -d
cd /usr/local/src
tar xvf mariadb-10.2.7-linux-x86_64.tar.gz -C /usr/local/  指定文件路径
cd /usr/local/ ;ll
ln -s mariadb-10.2.7-linux-x86_64/ mysql  把mariadb-...的文件夹名称改为mysql或者软连接也可以
ll mysql/  
chgrp -R mysql mysql/  更改权限mysql属组
cat /etc/my.cnf  其中的datadir路径不是我们设置的/app/data/,所以自己需要重新设置。
cd mysql/support-files/;ls 里面的配置文件根据自己的需要来复制,生产环境用大的配置文件,英文字母的意思来判断即可
mkdir /etc/mysql
cp my-huge.cnf /etc/mysql/my.cnf
ll my-huge.cnf  /etc/mysql/my.cnf
vim /etc/mysql/my.cnf
[mysqld]下面添加信息
datadir = /app/data
innodb_file_per_table = on  创建的每个表都是独立的数据库
skip_name_resolve = on  禁止主机名解析,速度快
创建数据库
cd /usr/local/mysql; ls
scripts/mysql_install_db --datadir=/app/data --user=mysql
ll /app/data/  文件生成
cat support-files/mysql.server  是一个服务脚本
cp support-files/mysql.server /etc/init.d/mysqld
ll /etc/init.d/mysqld  看是否有执行权限,有即可
chkconfig --list mysqld  报错
chkconfig --add mysqld
chkconfig mysqld on
chkconfig --list mysql  出现
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown mysql  /var/log/mariadb/mariadb.log
ll /var/log/mariadb/mariadb.log
service mysqld start  启动成功
ss -ntl  有3306这个端口
vim /etc/profile.d/app.sh  把mysql放到path变量里
export PATH=/usr/local/mysql/bin:/app/httpd24/bin:$PATH
. /etc/profile.d/app.sh
mysql_secure_installation  删除匿名用户登陆
mysql -uroot -p 
不用操作:mysql -uroot -p < feng.sql(此文件里就是要执行的sql语句,自动化)
create database blogdb;
grant all on blogdb.* to wpuser@"192.168.%.%" identified by "123456" ;
quit
mysql -u wpuser -h "192.168.29.127" -p; use blogdb;

安装php
cd /usr/local/src; ls
tar xvf php-7.2.3.tar.bz2
cd php-7.2.3/
yum -y install libxml2-devel bzip2-devel libmcrypt-devel
./configure --prefix=/app/php --enable-mysqlnd --with-mysqli=mysqlnd --with-openssl --with-pdo-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/app/httpd24/bin/apxs --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --disable-fileinfo --with-bz2
这个选项没有了--with-mcrypt,不用加了
make && make install
cp php.ini-production /etc/php.ini
vim /app/httpd24/conf/httpd.conf
搜索:/AddType,添加信息
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
搜索:DirectoryIndex
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
apachectl stop
浏览器:192.168.29.127  OK
apachectl 
浏览器:192.168.29.127  OK
测试
php结合MySQL
vim vim /app/httpd24/htdocs/index.php  注意不支持旧版本
<?php  
$mysqli=new mysqli("192.168.29.127","wpuser","123456");
if (mysqli_connect_error()) {
        echo "连接MySQL Failure";
        $mysqli=null;
        exit;
}
        echo "连接Success";
        $mysqli->close();
?>
apachectl
浏览器:192.168.29.127/index.php  OK
service mysqld stop
浏览器:192.168.29.127/index.php  OK
apachectl
浏览器:192.168.29.127/index.php  OK

部署wordpress
cd /usr/local/src; ls
tar xvf wordpress-4.8-zh_CN.tar.gz -C /app/httpd24/htdocs
cd /app/httpd24/htdocs
mv wordpress/ blog
cd blog/  
接下来有两种方法:上面有就不重复了
cp wp-config-sample.php wp-config.php  
vim wp-config.php
define('DB_NAME', 'database_name_here'); 变为 define('DB_NAME', 'blogdb');
define('DB_USER', 'username_here'); 变为 define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'password_here'); 变为 define('DB_PASSWORD', '123456');
define('DB_HOST', 'localhost'); 变为 define('DB_HOST', '192.168.29.127');
浏览器:192.168.29.127/blog
Site Title  联盟之家
Username    qiangge
Password    qianggedu123456
Your Email  594634660@qq.com
点击 "Install Wordpress"
浏览器:192.168.29.127/blog
ab -c10 -n 200 http://192.168.29.127/blog/

配置xcache加速器
tar xvf xcache-3.2.0.tar.gz
cd xcache-3.2.0/; ls  没有config文件
yum -y install php-devel
phpize  生成config文件
./configure --enable-xcache --with-php-config=/usr/bin/php-config
make && make install 
ll /etc/php.d
cp xcache.ini /etc/php.d
vim /etc/php.d/xcache.ini  看一下启用模块即可,不应更改
apachectl
ab -c10 -n 200 http://192.168.29.127/blog/  性能提高了2-3倍