centOS+apache2.4+mysql5.7+php7.0 ( 源码编译安装 )

一、源码编译安装apache2.4

  1. 先到apache官方网站 下载 Download - The Apache HTTP Server Project 最新版本  httpd-2.4.18.tar.gz

 

  2. 先确保它所依赖的库是否有,怎样查看软件是否安装(rpm -q xxx),如果没有安装依赖则进行安装

  3. 安装 zlib-devel pcre-devel pcre apr apr-util

(apr apr-util 这两个库,笔者在安装时发现使用yum安装不可取,编译时找不到类库,因此笔者这里采用源码安装方式)

 

  4. yum install zlib-devel pcre-devel pcre

 

  5. 确保安装了 gcc-c++

   

     yum install gcc-c++

  6.下载以下依赖包安装

wget http://archive.apache.org/dist/apr/apr-1.5.2.tar.gz ;

wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz ;

wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip

    tar -zxvf apr-1.5.2.tar.gz

    cd apr-1.5.2

    ./configure --prefix=/usr/local/src/httpd24/apr/

    make && make install

    tar -zxvf apr-util-1.5.4.tar.gz

    cd apr-util-1.5.4

    ./configure --prefix=/usr/local/src/httpd24/apr-util/  --with-apr=/usr/local/src/httpd24/apr/

    make && make install

    unzip pcre-8.10.zip(解压用unzip)

   7.

    ./configure  \

     --prefix=/usr/local/src/httpd24/apache/ \

     --with-apr=/usr/local/src/httpd24/apr/ \

     --with-apr-util=/usr/local/src/httpd24/apr-util/ \

     --enable-so \

     --enable-deflate=shared \

     --enable-expires=shared \

     --enable-rewrite=shared \

     --enable-static-support

    8.  加入到系统服务 grep -v "#" /usr/local/apache/bin/apachectl > /etc/init.d/apache

    vi /etc/init.d/apache 在该文件最前面插入下面的行,使其支持chkconfig命令:

    #!/bin/sh

       

    # chkconfig: 2345 85 15

    # description: Apache is a World Wide Web server.

    chmod +x /etc/init.d/apache

    chkconfig --add apache 

9. 加入开机自启动 vi /etc/rc.local

/etc/init.d/apachectl -k start

10.把服务加入到环境变量中(centOS7.6的环境)

(1) vi ~/.bash_profile 中添加httpd的路径

(2) PATH=$PATH:$HOME/bin:/usr/local/soft/apache/bin (注意这里不能把apachectl文件名写入,NND!)

(3) 如果想对全体用户有效就把这段

APACHE=/usr/local/soft/apache/bin

PHP=/usr/local/soft/php/bin

加入到/etc/profile,并且把变量添加进这行末尾export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL APACHE PHP,貌似还要添加PATH=$PATH:$HOME/bin:$APACHE:$PHPvi ~/.bash_profile

加入到/etc/environment文件中,怎么测试都不成功NND!

11.虚拟主机的配置:

<VirtualHost *:80>重点注意这个地方不能写成<VirtualHost www.inspect.ltd:80> NND!

 ServerName www.inspect.ltd:80

 ServerAlias  www.inspect.ltd

 DocumentRoot "/home/www/www.inspect.ltd"

<Directory "/home/www/www.inspect.ltd">

    Options Indexes FollowSymLinks

    AllowOverride All

    Require all granted

</Directory>

DirectoryIndex index.html index.php   

    ErrorLog "logs/www.inspect.ltd-error.log"

    CustomLog "logs/www.inspect.ltd-access.log" common

</VirtualHost>

二、源码编译安装php7.0

windows + Apache +  PHP(模块)    :使用线程安全版本。

windows + Apache +  PHP(FastCGI) :使用非线程安全版本。

线程安全主要针对的是Windows下以IIS来运行PHP的情况, 因为Windows中频繁申请进程开销较大

在Linux系统下,PHP绝大多数情况下都以多进程方式运行,所以Apache直接使用None Thread Safe即可。

    1. 依赖包要先安装上

    yum -y install php-mcrypt libmcrypt libmcrypt-devel  autoconf  freetype freetype-devel  gd jpegsrc libpng libpng-devel libjpeg libjpeg-devel libxml2 libxml2-devel zlib curl curl-devel openssl-devel bzip2-devel

    这些三方库( 比如curl和gd )在编译PHP之前得安装好,可以直接使用yum安装在默认位置

    这几个库安装不成功(mcrypt 是php里面重要的加密支持扩展库,linux环境下该库在默认情况下不开启)

   

   php-mcrypt libmcrypt libmcrypt-devel(这三个可以通过下面安装) jpegsrc(暂时不知道)

        打开网址: Index of /fedora-epel/6/i386/ 使用 Ctrl+F 搜索关键词“epel-release” 找到当前最新的扩展包发现最新版本为:epel-release-6-8.noarch.rpm

    安装yum源: rpm -ivh http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm

    yum install php-mcrypt

    yum install libjpeg-devel(这个不装编译时提示error: jpeglib.h not found.)

    因为Redhat的yum源是收费的,

     所以在线只能配置CentOS的yum源,下载好CentOS yum源之后得把repo文件里链接里的变量改成死链接才能找着文件。(测试echo $releaserver输出是空的)把文件复制到/etc/yum.repo.d/:运行以下命令生成缓存

yum clean all

yum makecache

    2.注意重新编译时要删掉整个文件夹或make clean,不然编译能通过但安装时容易出错,另外 --enable-mysqlnd \行以下的内容先别编译不然也容易出错。

       ./configure \

--prefix=/usr/local/soft/php \

--with-apxs2=/usr/local/soft/apache/bin/apxs \

--enable-mbstring \

--with-gd \

--with-curl \

--enable-bcmath \

--enable-sockets \

--with-config-file-path=/usr/local/soft/php/etc \

--enable-fpm \

--enable-soap \

--enable-xml \

--enable-bcmath \

--with-bz2 \

--with-zlib \

--with-gettext \

--with-freetype-dir \

--with-jpeg-dir \

--with-png-dir \

--with-libxml-dir \

--enable-maintainer-zts \

--with-mysql \ 支持老版内置的引擎,后续用phpize追加还失败貌似不算扩展模块,NND搞了两天

--enable-mysqlnd \

--with-mysqli=mysqlnd  \

--with-pdo-mysql=mysqlnd \

--with-mysql-sock=/var/lib/mysql/mysql.sock

--with-gd #可以后面加装,这里装gd库时最好把jpeg等参数也加上,不然分开装时好像加载不了jpeg.这是一次痛苦的经历

(不知道从哪一版本开始,PHP不在希望使用mysql的库来支持mysql的连接,启用了mysqlnd来支持,听说比libmysql要快很多)难怪旧我的程序运行不了

    3. 第一次安装时出错而安装到了/usr/local目录下是因为每句的反斜杠没加上

   

    4. make && make install

    5. cp php.ini-development  /usr/local/php7/etc/php.ini  (如果新增库的支持而重新编译需要安装后需要重新copy一次过去才能生效)

   

    6. 在httpd.conf中加载php模块

       Linux下是用:LoadModule php7_module modules/libphp7.so

#win7下的Apache2.4加载php时用如下加载方法以免Apache默认加载C盘下windows下的php.ini,然后在php.ini中要打开路径extension_dir = "D:/wamp/php71/ext",phpinfo()中查看到的Configuration File (php.ini) Path是默认的而Loaded Configuration File是指实际加载的

       PHPIniDir "D:/wamp/php71/php.ini"

       LoadModule php7_module "D:/wamp/php71/php7apache2_4.dll"

AddType application/x-httpd-php .php

    7. 安装完毕出现执行php文件后页面白屏解决,增加php支持,不再使用 Apache 的 AddType 指令来设置

    A:----------------------------------------------

    <FilesMatch \.php$>

           SetHandler application/x-httpd-php

    </FilesMatch>

或      AddHandler php5-script .php

    B:----------------------------------------------

    另外发现是不能执行mysql的查询,php配置文件里没有加载mysqli.so扩展,NND!

    8. Warning: mysqli_connect(): (HY000/2002): No such file or directory in /home/www/inspection/sicms/tes

配置文件中的 mysqli.default_socket 设置是否指向正确的套接字文件路径mysql的mysql.sock文件。

        9. 不支持原始的mysql问题NND

      10.追加模块要选运行
phpize[root@anpc ~] cd  /usr/local/src/php-5.2.10/ext/pdo_mysql

[root@anpc pdo_mysql]  /usr/local/soft/php/bin/phpize

[root@anpc pdo_mysql]  ./configure -with-php-config=/usr/local/soft/php/bin/php-config -with-mysql=/usr/bin/mysql_config

===================================================================================

php.ini配置上传文件关注如下几个参数:

post_max_size=128M       #这两个设置要同时设置,不然可能出现设置了还是不能上传大文件

upload_max_file_size=128M

max_execution_time=30

max_input_time=600

memory_limit=32M

===================================================================================

三、rpm包安装MYSQL5.7(类似于yum安装,不是编译安装

官网:MySQL :: MySQL Downloads # 貌似只有最新版下载

社团:MySQL :: MySQL Community Downloads # 各种版本都有,如果要下载源码包编译安装的话就在Operating System处选择Source Code, OS Version 处选择All Operating Systems

 
   0. tar -xvf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar(谨记el6是配合centOS6的,el7才适合centOS 7)
# 选择下载rpm-bundle类型的包,这样就省去寻找依赖包的麻烦。解压注意不用z参数,因为是tar包。另外MySQL Workbench是专门开发mysql前台工作台的团体。
        安装依赖包的顺序为:
rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm
 
安装依赖包时故障提示:
        file /usr/share/mysql/charsets/latin7.xml from install of mysql-community-common-5.7.41-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.61-4.el6.x86_64 
 
解决:  rpm -qa|grep mysql命令查看系统中是否已有mysql-libs-5.1.61-4.el6.x86_64
卸载掉自带的mysql,执行rpm -e --nodeps mysql-libs命令,而mysql-libs上面的文件名
 
        error: Failed dependencies:

libsasl2.so.2 ()(64bit) is needed by mysql-community-server-5.7.41-1.el6.x86_64

原因:下载的mysql-5.7.41-1.el6.x86_64版本不适合在centOS7上安装,要下载mysql-5.7.41-1.el7.x86_64的版本

1. yum -y install make gcc-c++ cmake bison-devel  ncurses-devel git

2. 下载BOOST并解压,放置位置/usr/local/soft/ , Boost能提升数据库性能,Boost库提供多线程支持,在高并发访问环境下处理MySQL数据库请求

    (1)到官网下载最新版的boost,http://www.boost.org/users/history/version_1_67_0.html

(2)可能需要预先安装相关项:yum -y install gcc-c++ python-devel bzip2-devel zlib-devel

      (3) 解压:tar zxvf boost_1_67_0.tar.gz
      (4) 进入解压后的目录boost_1_67_0,
执行:sudo ./bootstrap.sh --prefix=/usr/local/boost

(5)安装 sudo ./b2 install -j5 --with-date_time --with-filesystem --with-system --with-thread --with-regex --with-chrono --with-log link=static runtime-link=static

      (6)安装Boost.Build,进入boost_1_67_0目录下的tools/build目录,执行:sudo ./bootstrap.sh

(7)安装sudo ./b2 install --prefix=/usr/local/boost

(8)配置环境变量BOOST_ROOT=/usr/local/boost

               sudo vi /etc/profile
         source /etc/profile

3. 等一切就绪后,我们需要确保存在 mysql组和mysql用户,没有的话就添加

    cat /etc/group|grep 'mysql'

    cat /etc/passwd|grep 'mysql'

    groupadd mysql

    useradd -g mysql mysql

    然后将目录'/usr/lib/mysql'的所有者改为mysql

    chown -R mysql:mysql /var/lib/mysql

    chmod -R 777 /var/lib/mysql

   

4. 运行出错:

  1. 运行mysqld –initialize 出错[ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!

        原因: Mysql出于安全考虑默认拒绝用root账号启动mysql服务

        解决方法:

Mysqld –user=root启动

Vi /etc/my.cnf 加上user=mysql(使用一个属于mysqld用户组的普通用户启动)

  1. 因为是rpm安装的,所以centOS7.6下运行systemctl start mysqld启动,但出错  Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

  原因:mysql的权限缺失

  解决方法:

chown -R mysql:mysql /var/lib/mysql

chmod -R 777 /var/lib/mysql

如果这样操作还是不行,就把该目录下的数据全删掉rm –rf /var/lib/mysql/*(但注意这样会把所以数据删掉的!慎用)

   5. 初始登入不知道密码或密码文件误删的情况需要在my.cnf的[mysqld]下面加入skip-grant-tables重启之后无密码登入root再修改密码(完事后千万要记得改回去)

    Mysql –u root

    update mysql.user set authentication_string=password('2188885') where user='root' and Host = 'localhost';

    quit;

   6. 用新密码登入后执行create database xxxx;时出错

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.执行:

    alter user 'root'@'localhost' identified by 'root-ps@123456';

flush privileges;

   7. 返原数据库:

source /root/bak.sql; (注意用此命令必须先create database xxxx; 再use xxxx;)

四、MySQL的编译不是用configure,而是需要安装cmake

1.首先要下载mysql的源码包(注意是源码包,在Operating System这里要选择Source Code

2.cmake /home/yukey/soft/mysql-5.7.41 -DWITH_BOOST=/usr/local/mysql57/boost

# 当前路径是/home/yukey/soft/mysql-5.7.41/yukey_build,所以会把编译后的文件生成在当前路径下。
# make && make install时会自动在上层路径创建一个文件夹,安装到了/usr/local/mysql目录下,所以可以指定安装路径make install INSTALL_ROOT=/path

# 用下面的老出错因为下面的cmake 没有指定路径,

# 先把下载好的boost文件夹(包含子文件夹(boost/boost_1_59_0/boost/)放入安装文件夹

4. cmake /home/yukey/soft/mysql-5.7.41 \   

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 \

-DMYSQL_DATADIR=/var/data/mysql57 \

-DSYSCONFDIR=/usr/local/mysql57/etc \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DMYSQL_UNIX_ADDR=/usr/local/mysql57/mysql.sock \

-DMYSQL_TCP_PORT=3306 \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_BOOST=/home/yukey/soft/mysql-5.7.41/boost

5. make && make install

#在编译后的文件路径下执行/home/yukey/soft/mysql-5.7.41/yukey_build

#出错后重新运行配置,需要删除CMakeCache.txt文件

     make clean

       rm -f CMakeCache.txt

   

6. 等一切就绪后,我们需要确保存在 mysql组和mysql用户,没有的话就添加

    cat /etc/group|grep 'mysql'

    cat /etc/passwd|grep 'mysql'

    groupadd mysql

    useradd -g mysql mysql

    然后将目录'/usr/local/src/mysql57'的所有者改为mysql

    chown -R mysql:mysql /usr/local/src/mysql57

    chown -R mysql:mysql /var/data/mysql57      或/var/opt/mysql57

    chmod -R 755 /var/data/mysql57  这样递归更改mysql57目录下的子目录及文件

    chown -R mysql:mysql /var/lib/mysql

find PATH –type f | xargs chmod 644 单文件改为644

find PATH –type d | xargs chmod 777 单文件夹改为644

6. cp /usr/local/src/mysql57/my-default.cnf /etc/my.cnf  (把数据目录设置好,不然容易跑到默认目录去)

    #  安装完后找不着my.cnf, 通过which mysqld 命令查看mysql的安装位置

    #  再通过mysqld --verbose --help |grep -A 1 'Default options' 命令查看mysql使用的配置文件默认路径

7. /usr/local/src/mysql57/bin/mysqld –initialize  #进行初始化,windows下也是一样,启动时用net start mysql(必须用管理员身份运行不然出错)

/usr/local/src/mysql57/bin/mysql -u root -p 用初密码登入修改密码    (这种办法在mysql5.7不能使用了)

mysql5.7会生成一个初始化密码,而在之前的版本首次登陆不需要登录。

cat /root/.mysql_secret

8. 用如下命令修改默认密码(注意:先用上面命令启动mysql才能执行下面命令修改密码)

    shell> bin/mysqladmin -u root password '2133335' -p'CImiVUld:2Ck'  (命令执行后立刻要用新密码登入)

    或用   SET PASSWORD = PASSWORD('your new password');

    不知道密码或密码文件误删的情况需要在my.cnf的[mysqld]下面加入skip-grant-tables重启之后无密码登入root再修改。

    show databases;  use mysql;  show tables;

    update mysql.user set authentication_string=password('2188885') where user='root' and Host = 'localhost';

    quit;

===================================================================================

/usr/local/mysql57/support-files/mysql.server start

故障:ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid)

#PID,和mysql.sock文件都是服务运行时才生成的,停止服务时文件消失,别傻傻的去找!

    原因 1.是数据存储目录的属主没有改成mysql  

chown -R mysql:mysql /var/opt/data/mysql57

   原因 2.是在my.cnf文件中指定的mysql.sock文件路径因用户权限问题无法写入mysql.sock文件     chown -R mysql:mysql /var/lib/mysql

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

ln -s /usr/local/mysql57/support-files/mysql.server /etc/init.d/mysql

       chkconfig --add mysql

10. 注意如果安装了两个版本的mysql的话,进入mysql控制台的话要先进入具体的目录如:

    cd /usr/local/mysql57/bin

    mysql -uroot -p2133335

   

    11. 用初始密码登入后出错提示ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement

       SET PASSWORD = PASSWORD('123456');

       Query OK, 0 rows affected (0.03 sec)

       也就是用mysql> SET PASSWORD = PASSWORD('123456');这句话重新设置一次密码大爷的真费劲啊。

===================================================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值