LAMP架构一
mysql安装
MySQL的几个常用安装包:rpm、源码、二进制免编译
本次操作使用的包是 免编译二进制包
首先查看你的linux是多少位的。来选择安装相对应的包 。x86为64位的包,i686是32位的包
查看本机是多少位:
[root[@www](https://my.oschina.net/licomernwater) ~]# uname -ix86_64[root[@www](https://my.oschina.net/licomernwater) ~]#
具体安装操作流程如下:
cd /usr/local/src/ //建议以后所有软件包都放到这个目录下wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz 下载5.6版本包
下载完成后需要进行如下操作:
tar zxf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz //解压 mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql //移动到local目录下的mysql里cd /usr/local/mysql useradd mysql //创建mysql用户mkdir /data/ 创建目录,为了存放mysql数据./scripts/mysql_install_db --user=mysql --datadir=/data/mysql 初始化,指定用户mysql和目录为/data/mysqlcp support-files/my-default.cnf /etc/my.cnf 复制配置文件到/etc/my.cnf /etc/下默认有,所以这条命令会提示你是否覆盖,可选YES,但也可直接使用/etc/my.cnf 首先 vim /etc/my.cnf[root[@www](https://my.oschina.net/licomernwater) ~]# cat /etc/my.cnf[mysqld]datadir=/data/mysqlsocket=/tmp/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0# Settings user and group are ignored when systemd is used.# If you need to run mysqld under a different user or group,# customize your systemd unit file for mariadb according to the# instructions in http://fedoraproject.org/wiki/Systemd[mysqld_safe]# log-error=/var/log/mariadb/mariadb.log# pid-file=/var/run/mariadb/mariadb.pid## include all files from the config directory## !includedir /etc/my.cnf.d[root[@www](https://my.oschina.net/licomernwater) ~]#大多都是注释文件。真正修改的就是datadir和socket 修改后的内容如上修改完成后,cp support-files/mysql.server /etc/init.d/mysqld 复制启动文件去/etc/init.d/下chmod 755 /etc/init.d/mysqld 修改权限vim /etc/init.d/mysqld 进入配置文件 需要修改内容的地方如下: basedir=/usr/local/mysql datadir=/data/mysqlbasedir是mysql包所在得路径 datadir是定义存放数据的地方。上面的操作完成后,就可以启动mysqld服务了但你也可以设置一个开启启动mysql,操作如下:chkconfig --add mysqld[root[@www](https://my.oschina.net/licomernwater) ~]# chkconfig --list注:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。 要列出 systemd 服务,请执行 'systemctl list-unit-files'。 查看在具体 target 启用的服务请执行 'systemctl list-dependencies [target]'。mysqld 0:关 1:关 2:开 3:开 4:开 5:开 6:关netconsole 0:关 1:关 2:开 3:开 4:开 5:开 6:关network 0:关 1:关 2:开 3:开 4:开 5:开 6:关[root@www ~]#
启动mysqld服务
service mysqld start 为启动mysqld服务命令 /etc/init.d/mysqld start 一样可以启动[root@www ~]# service mysqld startStarting MySQL.................. SUCCESS! [root@www ~]# service mysqld stopShutting down MySQL.. SUCCESS! [root@www ~]# /etc/init.d/mysqld startStarting MySQL. SUCCESS! [root@www ~]#
以上即成功启动服务。
扩展:
mysql5.5源码编译安装:
mysql5.7二进制包安装:
MariaDB安装
安装方法与安装mysql类似
cd /usr/local/srcwget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gztar zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gzmv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadbcd /usr/local/mariadb./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadbcp support-files/my-small.cnf /usr/local/mariadb/my.cnfcp support-files/mysql.server /etc/init.d/mariadbvim /etc/init.d/mariadb //定义basedir、datadir、conf以及启动参数/etc/init.d/mariadb start
具体安装操作流程如下:
[root@www src]# lsmariadb-10.2.6-linux-glibc_214-x86_64.tar.gz mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz[root@www src]# 由上可见,已下载完成。tar zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz 解压mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb 移动目录[root@www src]# cd /usr/local/mariadb[root@www mariadb]# lsbin data include mysql-test shareCOPYING DESTINATION INSTALL-BINARY README.md sql-benchCOPYING.thirdparty docs lib README-wsrep support-filesCREDITS EXCEPTIONS-CLIENT man scripts[root@www mariadb]# [root@www mariadb]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ -- datadir=/data/mariadb为检验上条命令执行成功否,可以使用如下命令检测,0代表成功。[root@www mariadb]# echo $?0[root@www mariadb]# [root@www mariadb]# cp support-files/my-small.cnf /usr/local/mariadb/my.cnf 拷贝模板文件去/usr/local/mariadb/目录下[root@www mariadb]# cp support-files/mysql.server /etc/init.d/mariadb 拷贝启动脚本模板去目录下[root@www mariadb]# vim /etc/init.d/mariadb 进去要修改的内容如下:basedir=/usr/local/mariadbdatadir=/data/mariadbconf=$basedir/my.cnf bindir/mysqld_safe --defaults-file="conf" --datadir="datadir" --pid-file="mysqld_pid_file_path" "$@" &新增的conf行 需要在 上面的命令中 加上,否则不会生效。修改完成后 wq 保存退出
启动服务:
由于mysql与mariadb端口都是3306,所以先看下我的mysql是否开启[root@www mariadb]# ps aux | grep mysqlroot 3991 1.0 0.0 112676 984 pts/2 S+ 06:44 0:00 grep --color=auto mysql[root@www mariadb]# /etc/init.d/mariadb startReloading systemd: [ 确定 ]Starting mariadb (via systemctl): [ 确定 ][root@www mariadb]# ps aux | grep mariadbroot 3950 0.0 0.5 151652 5680 pts/2 T 06:33 0:00 vim /etc/init.d/mariadbroot 4038 0.2 0.1 115388 1720 ? S 06:45 0:00 /bin/sh /usr/local/mariadb/bin/mysqld_safe --defaults-file=/usr/local/mariadb/my.cnf --datadir=/data/mysql --pid-file=/data/mysql/www.lantern.com.pidmysql 4154 33.0 5.7 1125124 57876 ? Sl 06:45 0:07 /usr/local/mariadb/bin/mysqld -- defaults-file=/usr/local/mariadb/my.cnf --basedir=/usr/local/mariadb --datadir=/data/mysql --plugin- dir=/usr/local/mariadb/lib/plugin --user=mysql --log-error=/data/mysql/www.lantern.com.err --pid- file=/data/mysql/www.lantern.com.pid --socket=/tmp/mysql.sock --port=3306root 4224 0.0 0.0 112676 980 pts/2 S+ 06:45 0:00 grep --color=auto mariadb[root@www mariadb]#
Apache安装
Apache是一个基金会的名字,httpd才是我们要安装的软件包,早期它的名字就叫apache
首先下载安装包
-
wget
-
wget
-
wget
[root@www src]# ls
apr-1.6.3.tar.gz mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
apr-util-1.6.1.tar.bz2 mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
httpd-2.4.33.tar.gz
[root@www src]#
apr和apr-util是一个通用的函数库,它让httpd可以不关心底层的操作系统平台,可以很方便地移植(从linux移植到windows)
解压
tar zxvf httpd-2.4.33.tar.gztar jxvf apr-util-1.6.1.tar.bz2tar zxvf apr-1.6.3.tar.gz
安装apr
[root@www src]# cd /usr/local/src/apr-1.6.3
[root@www src]# ./configure --prefix=/usr/local/apr 输入此命令后出现 如下错误
configure: error: in `/usr/local/src/apr-1.6.3':
configure: error: no acceptable C compiler found in $PATH
这个是因为gcc包没有安装。对于这个问题,使用yum install -y gcc就可以了
[root@www apr-1.6.3]# echo $?0[root@www apr-1.6.3]# 使用echo $? 得出0 表示安装完gcc包后就可以执行成功。[root@www apr-1.6.3]# make && make install[root@www apr-1.6.3]# echo $?0[root@www apr-1.6.3]#
安装apr-util
[root@www apr-util-1.6.1]# cd apr-util-1.6.1[root@www apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr[root@www apr-util-1.6.1]# make && make installmake 前 安装下 expat-devel 包 避免make报错安装完成后即可继续安装httpd
安装httpd
[root@www httpd-2.4.33]# ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most--prefix指定安装目录 --enable-so 表示启用DSO,DSO意思是把某些功能模块的形式展现出来 --enable-mods-shared=most 表示以共享的方式安装大多数功能模块。编译时报错:configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/解决方法: yum install pcre-devel -y[root@www httpd-2.4.33]# echo $?0[root@www httpd-2.4.33]# [root@www httpd-2.4.33]# make[root@www httpd-2.4.33]# make install [root@www httpd-2.4.33]# echo $?0[root@www httpd-2.4.33]# 以上2个命令用 echo $? 均表示为 0 以上就成功安装了httpd
Httpd安装完成后:
可进入目录查看有哪些文件及目录[root@www httpd-2.4.33]# cd /usr/local/apache2.4/[root@www apache2.4]# lsbin build cgi-bin conf error htdocs icons include logs man manual modules[root@www apache2.4]# /bin目录下,是可执行文件。也就是说,要启动一个服务,它就是在bin/httpd下面有一个文件或者命令,bin/httpd也是核心的二进制文件conf目录,是配置文件所在目录htdocs目录,是存放了一个访问页。启动完httpd服务后,去访问网站,默认的网站会放到 htdocs/目录下logs目录,就是日志相关的目录 --包含:错误日志,访问日志man目录,就是一些帮助文档modules扩展模块目录,所有模块都放到了modules目录下 每一个模块都代表着一个功能
查看加载的模块
[root@www apache2.4]# /usr/local/apache2.4/bin/httpd -M | headLoaded Modules: core_module (static) so_module (static) http_module (static) mpm_event_module (static) authn_file_module (shared) authn_core_module (shared) authz_host_module (shared) authz_groupfile_module (shared) authz_user_module (shared)[root@www apache2.4]# 在模块的右侧有小括号,里面是 static 或 shared ,static是静态静态是直接把模块编译进了主脚本或主二进制文件里面http是一个核心文件,这个文件加载了哪些模块如果是static,那也就意味这个模块在httpd里面,和它绑定在了一起,它们是一个整体如果是shared,说明它是一个扩展的模块,这个模块是一个文件,我们可以看到的 .so 文件,文件的目录是在/usr/local/apache2.4/module目录下
启动服务
[root@www apache2.4]# /usr/local/apache2.4/bin/apachectl start(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80no listening sockets available, shutting downAH00015: Unable to open logs启动脚本后,虽然出现提示,但不表示启动失败 查看Apache是否启动,看httpd进程是否存在[root@www apache2.4]# ps aux | grep httpdroot 896 0.0 0.2 221952 2320 ? Ss 6月24 0:04 /usr/sbin/httpd -DFOREGROUNDapache 2412 0.0 0.1 221952 1996 ? S 03:37 0:00 /usr/sbin/httpd -DFOREGROUNDapache 2413 0.0 0.1 221952 1996 ? S 03:37 0:00 /usr/sbin/httpd -DFOREGROUNDapache 2414 0.0 0.1 221952 1996 ? S 03:37 0:00 /usr/sbin/httpd -DFOREGROUNDapache 2415 0.0 0.1 221952 1996 ? S 03:37 0:00 /usr/sbin/httpd -DFOREGROUNDapache 2416 0.0 0.1 221952 1996 ? S 03:37 0:00 /usr/sbin/httpd -DFOREGROUNDroot 37437 0.0 0.0 112720 980 pts/2 S+ 07:51 0:00 grep --color=auto httpd[root@www apache2.4]# 查看端口号 [root@www apache2.4]# netstat -lntpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 893/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1144/master tcp6 0 0 :::80 :::* LISTEN 896/httpd tcp6 0 0 :::22 :::* LISTEN 893/sshd tcp6 0 0 ::1:25 :::* LISTEN 1144/master [root@www apache2.4]# 80端口为httpd默认监听端口 25端口是发邮件的,22端口是远程登录的
扩展:
apache dso
apache apxs
apache工作模式
PHP5 PHP7安装
PHP官网:www.php.net
主流版本为5.6/7.1
首先进入源码包目录下载源码包
[root@www apache2.4]# cd /usr/local/src[root@www src]# wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2[root@www src]# lsapr-1.6.3 apr-util-1.6.1.tar.bz2 mariadb-10.2.6-linux-glibc_214-x86_64.tar.gzapr-1.6.3.tar.gz httpd-2.4.33 mysql-5.6.36-linux-glibc2.5-x86_64.tar.gzapr-util-1.6.1 httpd-2.4.33.tar.gz php-5.6.32.tar.bz2[root@www src]# [root@www src]# tar jxvf php-5.6.32.tar.bz2[root@www php-5.6.32]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif以上是php的编译参数
编译过程报错
configure: error: xml2-config not found. Please check your libxml2 installation.解决方法 : yum install libxml2-devel -yconfigure: error: Cannot find OpenSSL's解决方法: yum install openssl-devel -yconfigure: error: Please reinstall the BZip2 distribution 解决方法: yum install bzip2-devel -yconfigure: error: png.h not found. 解决方法: yum install libpng-devel -yconfigure: error: freetype-config not found. 解决方法: yum install freetype-devel -yconfigure: error: mcrypt.h not found. Please reinstall libmcrypt. 解决方法: yum install epel-release -y yum install libmcrypt-devel -yCentOS默认yum源没有此包,需要借助epel yum扩展源configure: error: jpeglib.h not found.解决方法: yum install libjpeg-devel -y
以上包安装完成后,httpd编译成功。
编译结果
[root@www php-5.6.32]# echo $?0[root@www php-5.6.32]# 编译完成后输入 echo $? 得出 0 代表以上都已成功
最后 make && make install
[root@www php-5.6.32]# make && make install[root@www php-5.6.32]# echo $?0[root@www php-5.6.32]#
这样就安装好了PHP5了
查看php目录
[root@www php-5.6.32]# ls /usr/local/php/bin etc include lib php[root@www php-5.6.32]#
核心二进制文件在/usr/local/php/bin/目录下
[root@www php-5.6.32]# ls /usr/local/php/bin/pear peardev pecl phar phar.phar php php-cgi php-config phpize[root@www php-5.6.32]#
查看php加载的模块都有哪些
[root@www php-5.6.32]# /usr/local/php/bin/php -m | head[PHP Modules]bz2Corectypedatedomeregexiffileinfofilter[root@www php-5.6.32]# 这些加载的模块都是静态的
查看apache模块
[root@www php-5.6.32]# /usr/local/apache2.4/bin/httpd -M | tail -n3 dir_module (shared) alias_module (shared) php5_module (shared)[root@www php-5.6.32]# 可以看到最下方的 php5_module (shared) ,这个说明php是做为httpd 的一个扩展模块形式存在的Apache需要去执行php的文件,需要借助于php module ,需要这个模块,需要这个.so 文件
Apache的配置文件
[root@www php-5.6.32]# vim /usr/local/apache2.4/conf/httpd.conf搜索php5.so ,会发现自动增加了一行 如下:LoadModule php5_module modules/libphp5.so若想使用文件中的那一个模块,将前面的 # 号去除即可使用 若想不使用哪个模块,只需要加一个 # 号即可
安装完PHP之后,需要把配置文件拷贝到指定路径下
/usr/local/php/bin/php -i |less -i 可以查看到PHP的一些信息,包括编译参数,Configuration File 的路径等 如: Loaded Configuration File => (none)
拷贝配置文件
cp php.ini-production /usr/local/php/etc/php.ini php.ini-development 这个是测试环境用的 php.ini-production 这个是线上生产环境用的
这时再来查看/usr/local/php/bin/php -i |less
这里加载了路径 Loaded Configuration File => /usr/local/php/etc/php.ini
PHP7安装
首先 回到源码包目录 下载包
[root@www src]#cd /usr/local/src/[root@www src]# lsapr-1.6.3 httpd-2.4.33 php-5.6.32apr-1.6.3.tar.gz httpd-2.4.33.tar.gz php-5.6.32.tar.bz2apr-util-1.6.1 mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz php-7.1.6.tar.bz2apr-util-1.6.1.tar.bz2 mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz[root@www src]# 由上可见,已经下载完成了。接下来是解压,编译了。[root@www src]# tar jxvf php-7.1.6.tar.bz2[root@www src]# cd php-7.1.6[root@www src]# ./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php7/etc --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
初始化配置 php7与php5的区别
--prefix=/usr/local/php7这里定义的目录名字是php7--with-config-file-path=/usr/local/php7/etc这里定义的配置文件路径是php7这里只有--with-mysqli,没有--with-mysql,而其他的都类似
上一步编译无错后,进行make
[root@www src]# make && make install[root@www php-7.1.6]# echo $?0[root@www php-7.1.6]#
make也无报错的话,这样php7就安装成功了。
查看php7文件
[root@www php-7.1.6]# ls /usr/local/apache2.4/modules/libphp7.so/usr/local/apache2.4/modules/libphp7.so
查看文件大小
[root@www php-7.1.6]# du -sh !$du -sh /usr/local/apache2.4/modules/libphp7.so37M /usr/local/apache2.4/modules/libphp7.so[root@www php-7.1.6]#
查看php7模块 /usr/local/php7/bin/php -m,和php5基本是一致的
[root@www php-7.1.6]# /usr/local/php7/bin/php -m | head[PHP Modules]bz2Corectypedatedomexiffileinfofiltergd[root@www php-7.1.6]#
查看apache加载了几个php
[root@www php-7.1.6]# /usr/local/apache2.4/bin/apachectl -M | grep php php5_module (shared) php7_module (shared)[root@www php-7.1.6]#
[root@www php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf
LoadModule php5_module modules/libphp5.soLoadModule php7_module modules/libphp7.so再次查看配置文件,会发现多了php7这一行。
扩展:
php中mysql,mysqli,mysqlnd,pdo到底是什么
查看编译参数
Apache和PHP结合
配置httpd支持php目录概要
httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
vim /usr/local/apache2.4/conf/httpd.conf //修改以下几个地方
1 搜索ServerName 去除 # 号 2 找到如下信息,并修改。AllowOverride none Require all denied 修改前 AllowOverride none Require all granted 修改后修改这个的目的是 运行所有请求,如果不设置该行,则我们访问时会报403错误。再搜索 #AddType application/x-gzip .tgz 这一行 在其下面添加一行AddType application/x-httpd-php .php接着搜索 如下信息,并修改 DirectoryIndex index.html 修改前修改完成后 输入 wq 保存退出
检测配置文件是否正确
[root@www php-7.1.6]# /usr/local/apache2.4/bin/apachectl -tSyntax OK[root@www php-7.1.6]# Syntax OK 表示正确
开启服务
[root@www php-7.1.6]# /usr/local/apache2.4/bin/apachectl start
[root@www php-7.1.6]#
[root@www php-7.1.6]# ps aux | grep httpd
root 896 0.0 0.2 221952 2320 ? Ss 6月24 0:05 /usr/sbin/httpd -DFOREGROUND
apache 2412 0.0 0.1 221952 1996 ? S 03:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2413 0.0 0.1 221952 1996 ? S 03:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2414 0.0 0.1 221952 1996 ? S 03:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2415 0.0 0.1 221952 1996 ? S 03:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2416 0.0 0.1 221952 1996 ? S 03:37 0:00 /usr/sbin/httpd -DFOREGROUND
root 16199 0.0 0.0 112720 980 pts/2 R+ 10:01 0:00 grep --color=auto httpd
[root@www php-7.1.6]#
首先,我们可以用浏览器访问自己虚拟机的IP,会发现无法访问
在虚拟机上,使用iptables -nvL 命令,会查看到80端口并没有打开
[root@www php-7.1.6]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
然后再次去浏览器访问自己IP。就没问题了。
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
删除之前加的那条规则,再去浏览器访问自己IP。
重新加载配置文件
graceful 只会重新加载配置文件,而不会重启你的服务
检查Apache是否支持解析php5
写一个测试php脚本
[root@www php-7.1.6]# vim /usr/local/apache2.4/htdocs/1.php[root@www php-7.1.6]# cat /usr/local/apache2.4/htdocs/1.php [root@www php-7.1.6]# phpinfo,可以把php的相关信息打印出来
然后在浏览器访问虚拟机ip地址并添加页面地址(IP/index.php),然后会看到显示出内容
当看到php正常显示,如上图,那说明php支持支持解析