一些基础的东西请参照以前的文章:VPS(CentOS5.5)上纯手工编译搭建LAMP架构
这里就写一些在编译上有变动的地方吧。我是在Centos7 64位下进行搭建的。
一、建立编译环境。
之前的命令也可以用,不过为了简便,可以使用groupinstall命令。
yum -y groupinstall "Development Tools"
1、这条命令之后需要做的事情就是把它所安装的bison删除,自己装一个,否则在安装mysql的时候系统找不到bison的目录。原因不明。
yum -y remove bison*
2、这些包也是必不可少的,使用yum install命令安装即可:libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel curl curl-devel libtool libtool-ltdl-devel
3、不知为何在Centos的库里找不到libmcrypt,现在需要手动安装:
#下载安装mcrypt
#a.先去http://www.sourceforge.net下载Libmcrypt,mhash,mcrypt安装包
#Libmcrypt(libmcrypt-2.5.8.tar.gz) http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/
#mcrypt(mcrypt-2.6.8.tar.gz) http://sourceforge.net/project/showfiles.php?group_id=87941&package_id=91948&release_id=642101
#mhash(mhash-0.9.9.9.tar.gz) http://sourceforge.net/project/showfiles.php?group_id=4286&package_id=4300&release_id=645636
#b.先安装Libmcrypt
tar -zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make
make install
#说明:libmcrypt默认安装在/usr/local
#c.安装mhash
tar -zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure
make
make install
#d.安装mcrypt
tar -zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
export LD_LIBRARY_PATH=/usr/local/lib
./configure
make
make install
#说明:由于在配置Mcrypt时,会找不到libmcrypt的链接库,导致无法编译,因为Libmcrypt的链接库默认在/usr/local/lib文件夹下。因些在配置mcrypt时要加入LD_LIBRARY_PATH=/usr/local/lib 导入键接库
#(此处转自:http://bbs.csdn.net/topics/380021033)
4.安装Cmake。自从Mysql5.5之后就不是以前的./configure方式编译了。
./bootstrap && make && make install
5.安装PCRE。
二、安装Apache2.4
首先安装APR。
(你可能需要检查它是否已经被按装过了,比如rpm -qa|grep apr)
./configure --prefix=/usr/local/apr
make
make install
和APR-Util。
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
make
make install
略去下载解压步骤,进入Apache目录后如下编译:
./configure --prefix=/usr/local/apache \
--enable-so \
--enable-rewrite \
--enable-ssl \
--enable-mods-shared=all \
--enable-expires \
--with-mpm=prefork
make
make install
a.如果提示openssl版本过低,可以yum -y install openssl-devel
b.如果找不到apr-util,可以指定它的地址--with-apr-util=/usr/local/apr-util/bin/apu-1-config
建立用来运行Apache的用户及组:
groupadd www
useradd -M -g www -s /sbin/nologin www
不知为何现在如果不指定Apache的MPM会默认是Event,所以需要指定一下MPM类型。推荐非线程prefork。
之后记得编辑httpd.conf文件里user和group都为www。
让Apache自启动:
编辑bin目录下的apachectl文件,加入以下代码
# chkconfig:345 85 15
# description:httpd
注意不要漏掉前面的#号。
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
chkconfig --add httpd
chkconfig --level 345 httpd on
service httpd start
三、安装Mysql5.6
和之前不一样的是,INNOBASE已经不会强制安装了,需要加上-DWITH_INNOBASE_STORAGE_ENGINE=1参数把它编译进去。
此外my-medium.cnf之类的文件也已经没有了,安装完之后会直接在安装目录下有my.cnf文件。
综合起来,编译参数如下:
cmake . -DMYSQL_DATADIR=/usr/local/mysql/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DENABLE_DOWNLOADS=1
make
make install
groupadd mysql
useradd -r -g mysql mysql
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
scripts/mysql_install_db --user=mysql (初始化数据库,如果失败可以删掉数据库文件夹再执行一次)
chown -R root .
chown -R mysql data
bin/mysqld_safe --user=mysql &
如果启动不成功,上面这条命令bin/mysqld_safe --user=mysql &会告诉你日志文件写在了什么位置,通过查看日志慢慢排除问题吧。
以下是让Mysql自启动:
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
如果你遇到找不到mysql.sock文件,请在my.cnf里添加:
socket = /tmp/mysql.sock
另外,在my.cnf里添加这段语句有助于減小内存使用量,如果你的网站负载大请不要这样做。
table_definition_cache=400
以前table_definition_cache的默认值就是400,现在变成自动了。
下面这条命令可以帮助你初始化ROOT密码:
mysqladmin -u root password '任意字符'
四、安装PHP5.6
编译如下,具体目录视具体情况自行变更。
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--enable-xml \
--disable-rpath \
--enable-magic-quotes \
--enable-safe-mode \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--with-mcrypt \
--enable-ftp \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear \
--with-gettext
我在安装的时候遇到报错:
checking for sysvipc shared memory support... no
checking for mmap() using MAP_ANON shared memory support... no
checking for mmap() using /dev/zero shared memory support... no
checking for mmap() using shm_open() shared memory support... no
checking for mmap() using regular file shared memory support... no
checking whether flock struct is linux ordered... no
checking whether flock struct is BSD ordered... no
configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no
解决办法是手动指定LIB目录。
编辑/etc/ld.so.conf文件,在最前端添加:
/usr/local/mysql/lib
/usr/local/lib
/usr/local/apr/lib
/usr/local/apr-util/lib
之后需要执行下面这条命令来刷新缓存:
ldconfig
后续就是make && make install并让Apache支持PHP:
make
make install
cp php.ini-production /usr/local/php/etc/php.ini
在Apache的httpd.conf文件里添加:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
一般来说这段已经在安装PHP的时候自动添加了,不过还是要检查一下有没有:
LoadModule php5_module modules/libphp5.so
PS.
如果编译过程中遇到下列信息:
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
这说明没有安装PEAR,请参考http://pear.php.net/
PS2.
看了下Centos7启动关闭服务好像用了个叫systemctl的命令,我还不是太熟,所以还是用chkconfig,还是可以用的。
先缓一段时间再作更新吧
还有一台空机器没有安装环境,明天自己按这个装一遍看看有什么缺漏的再补一补……
有时间的话再学习怎么写一键包咯。
不过感觉每台机器都不一样,一键包搭环境还是太危险了。
1 条评论
测试评论 :smile: