原创 Linux(CentOS)编译安装LAMP(PHP7.2+mysql5.7+apache/httpd)环境搭建

php mysql apache linux centos
IT技术 · phper · 更新于 2018-10-31


linux(CentOS)编译安装LAMP环境搭建(PHP7.2+mysql5.7+apache/httpd),安装PHP7.2、httpd、mysql5.7

这边提示下安装搭建LAMP有两种方式一种是通过yum一种通过源码安装,这边属于源码安装

yum安装的优缺点
优点:安装东西,方便快捷,特别是不用考虑包依赖
缺点:安装过程,源里面有什么就安装什么,安装的版本也比较低,但是一般yum安装是最好的安装方式因为常用的扩展基本都存在。新手可以使用这种方式


源码包安装的优缺点
优点:编译安装过程,可以设定参数,按照需求,进行安装,并且安装的版本,可以自己选择,灵活性比较大。在删除的过程中只需要删除安装好的的文件既可以
缺点:由于安装包过新或者是其他问题,导致依赖的包没有,或者版本过低。这个时候就要解决包的依赖问题,linux系统中有的包,但是对于依赖包我觉得这个根本不是问题因为它对于你删除已经安装的php文件并没有任何影响。


一、安装apache(httpd)


首先查看是否安装的httpd(无显示信息则说明未安装)

rpm  -qa  httpd  

如果安装的直接启动

systemctl start httpd

如果未安装执行下面代码

yum install  httpd  -y  

安装完成后,通过最上面命令执行查看是否安装完成。然后执行启动

systemctl start httpd 

执行启动后如果没有返回任何信息说明无错误正常运行。如果报错可以通过命令查看报错详情(一般是配置文件报错,都会标注哪一行错误)。如果没用报错可以看见httpd正在运行中的绿色标志

 systemctl status httpd


安装PHP7.2

安装一些必要的依赖库

$ yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

下载需要的安装文件 

建议进入到/usr/local  安装在这个目录下面

cd /usr/local

执行下载PHP文件

wget http://cn2.PHP.net/distributions/php-7.2.11.tar.gz

解压

tar zxvf php-7.2.11.tar.gz  

进入这个文件

cd php-7.2.11

执行编译

需要注意:

--disable-fileinfo 用来解决内存不足的问题但是有些时候不起作用我也不知道为什么那么如果安装失败因为内存不足需要清理出足够的内存自行百度

--prefix=/usr/local/php7 这个路径 /usr/local/php7是你要安装的php文件路径,php7这个文件必须存在

--with-config-file-path=/usr/local/php7/etc  这个文件是存放配置文件的文件路径 etc文件不需要存在会自动创建 

--with-apxs2=/usr/bin/apxs  这个路径需要注意你需要查到apxs在你的系统哪个位置可以通过命令 find / -name apxs获取路径它会在你的httpd的modules生成一个libphp7.so这个是用来通过apache(httpd)关联你安装的这个PHP,重要的解析PHP的文件

执行编译的命令如下:

./configure --disable-fileinfo --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-apxs2=/usr/bin/apxs --enable-mbstring --enable-ftp --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-sockets --with-freetype-dir=/usr --with-zlib --with-libxml-dir=/usr --with-xmlrpc --enable-zip --enable-fpm --enable-xml --enable-sockets --with-gd --with-zlib --with-iconv --enable-zip --with-freetype-dir=/usr/lib/ --enable-soap --enable-pcntl --enable-cli --with-curl

如果没有报错执行下面命令

make clean

make && make install

上面执行安装如果没有报error的字眼之类的错误那么它会在/usr/local/php7这个文件下写入多个文件,这样PHP也就安装完成

然后执行下面命令生成php配置文件

cp php.ini-production /usr/local/php7/etc/php.ini

进入文件php7/etc

cd /usr/local/php7/etc

cp php-fpm.conf.default  php-fpm.conf  

cp  /usr/local/php7/etc/php-fpm.d/www.conf.default  /usr/local/php7/etc/php-fpm.d/www.conf

这样一来/usr/local/php7/etc/php.ini就是php的配置文件了

这边不需要启动php-fpm因为只要nginx才需要启动

把PHP加入环境变量  

在文件末尾加上如下两行代码 

PATH=$PATH:/usr/local/php7/bin

export PATH

然后执行命令 #source /etc/profile 或执行点命令 #./profile 使其修改生效,执行完可通过 #echo $PATH命令查看是否添加成功

开启php错误提示,编辑php.ini

添加 display_errors=On

这样一来php7.2就安装完成!


配置httpd.conf来执行解析php


httpd.conf 这个文件在/etc/httpd/conf里面,进入到这个里面来修改配置文件

找到这行Include conf.modules.d/*.conf,在上面添加解析php的代码

LoadModule php7_module modules/libphp7.so

上面libphp7.so在我之前就提到了 这个文件很重要。不再解释哦。

添加一行代码

ServerName localhost:80

修改代码

DocumentRoot "/var/www/html"

改为你要指定的网站访问的根目录

DocumentRoot "/var/www/"  

那么这样一来 对于/var/www/或者/var/www/html有关的代码块都需要改为你指定的根目录的路径

然后再修改红色标志

<Directory "/var/www">
AllowOverride All
# Allow open access:
Require all granted
</Directory>

找到下面dir_module的代码块,代码进行修改为下面模样

<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

<IfModule mime_module>在这个代码模块中找到AddType application/x-gzip .gz .tgz下面添加如下代码

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .php7  

通过这样的修改,可以看到我的网站访问根目录在/var/www下面 所以 在项目部署中需要添加如下两个模块,网站才能被访问

<Directory "/var/www/zsyunding">
AllowOverride all
Options ALL
Order allow,deny
Allow from all
</Directory>

<VirtualHost *:80>
DocumentRoot /var/www/zsyunding/
ServerName www.zsyunding.com
</VirtualHost>

这边我没做任何限制这只是个例子

这样一来httpd.conf就修改完成.网站也可以被访问。



安装mysql5.7  


进行下载到指定的目录,我指定到/usr/local

cd /usr/local/

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz  

解压

tar -xvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz  

重命名

mv /usr/local/mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql  

新建data目录 

mkdir /usr/local/mysql/data 

新建mysql用户、mysql用户组 

# mysql用户组

groupadd mysql

# mysql用户

useradd mysql -g mysql

将/usr/local/mysql的所有者及所属组改为mysql

chown -R mysql.mysql /usr/local/mysql

配置

/usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data 

# 如果出现以下错误:

2018-07-14 06:40:32 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2018-07-14 06:40:32 [ERROR]   Child process: /usr/local/mysql/bin/mysqldterminated prematurely with errno= 32
2018-07-14 06:40:32 [ERROR]   Failed to execute /usr/local/mysql/bin/mysqld --bootstrap --datadir=/usr/local/mysql/data --lc-messages-dir=/usr/local/mysql/share --lc-messages=en_US --basedir=/usr/local/mysql
-- server log begin --

-- server log end --

# 则使用以下命令:

/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize

# 如果出现以下错误:

/usr/local/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

# 则执行以下命令:

yum -y install numactl

# 完成后继续安装:

/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize

# 编辑/etc/my.cnf

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
user=mysql
port=3306
character-set-server=utf8
# 取消密码验证
skip-grant-tables # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # skip-grant-tables [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

开启服务

# 将mysql加入服务

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

# 开机自启

chkconfig mysql on

# 开启

service mysql start

设置密码

# 登录(由于/etc/my.cnf中设置了取消密码验证,所以此处密码任意)

/usr/local/mysql/bin/mysql -u root -p

# 操作mysql数据库

>>use mysql;

# 修改密码

>>update user set authentication_string=password('你的密码') where user='root';

>>flush privileges;

>>exit;

将/etc/my.cnf中的skip-grant-tables删除

登录再次设置密码(不知道为啥如果不再次设置密码就操作不了数据库了)

/usr/local/mysql/bin/mysql -u root -p

 >>ALTER USER 'root'@'localhost' IDENTIFIED BY '修改后的密码';

>>exit;

允许远程连接

/usr/local/mysql/bin/mysql -u root -p

>>use mysql;

>>update user set host='%' where user = 'root';

>>flush privileges;

>>eixt;

添加快捷方式

ln -s /usr/local/mysql/bin/mysql /usr/bin

















|0 收藏|0

思考你要发的内容