CentOS 6.5 编译安装 LNMP环境
建立一个软件包目录存放
mkdir -p /usr/local/src/
清理已经安装包
rpm -e httpd rpm -e mysql rpm -e php yum -y remove httpd yum -y remove mysql yum -y remove php #搜索apache包 rpm -qa http* #强制卸载apache包 rpm -e --nodeps 查询出来的文件名 #检查是否卸载干净 rpm -qa|grep http*
selinux可能会致使编译安装失败,我们先禁用它。永久禁用,需要重启生效
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
临时禁用,不需要重启
setenforce 0
安装必备工具
yum -y install make gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip libcap lsof
安装mysql5.6.17
按照标准需要给mysql创建所属用户和用户组
创建群组 groupadd mysql 创建一个用户,不允许登陆和不创主目录 useradd -s /sbin/nologin -g mysql -M mysql 检查创建用户 tail -1 /etc/passwd
centos最小化安装后,会有mysql的库因此先卸载!
检查安装与否 rpm -qa|grep mysql 强制卸载 rpm -e mysql-libs-5.1.73-3.el6_5.x86_64 --nodeps
MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。 因此,我们首先要在系统中源码编译安装cmake工具。
cd /usr/local/src
wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz tar zxvf cmake-2.8.12.2.tar.gz cd cmake-2.8.12.2 ./configure make && make install
使用cmake来编译安装mysql5.6.17
cd mysql-5.6.17 cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/var/lib/mysql/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 \ -DMYSQL_USER=mysql \ -DWITH_DEBUG=0 \ -DWITH_SSL=system
上述编译失败的话需删除CMakeCache.txt文件
rm -rf CMakeCache.txt
然后重新编译
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定MySQL安装目录
-DSYSCONFDIR=/usr/local/mysql/etc \ #指定MySQL配置文件my.cnf文件目录
-DMYSQL_USER=mysql \ #指定MySQL运行用户
-DDEFAULT_CHARSET=utf8 \ #指定默认字符集
-DDEFAULT_COLLATION=utf8_general_ci \ #指定默认排序字符集
-DMYSQL_DATADIR=/mysql/data \ #指定数据文件存放路径
-DWITH_BOOST=/usr/local/src/mysql-5.7.30/boost/boost_1_59_0 \ #指定boost 文件存放路径
-DENABLED_LOCAL_INFILE=1 \ #启用本地加载数据
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \ #指定mysql.sock文件路径
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
#make && make install
修改/usr/local/mysql权限
chmod +w /usr/local/mysql chown -R mysql:mysql /usr/local/mysql
进入support-files目录
cd support-files/ 如果还有my.cnf请备份 mv /etc/my.cnf /etc/my.cnf.bak 如果愿意也可以复制配置文件到etc下 cp my-default.cnf /etc/my.cnf
执行初始化配置脚本,创建系统自带的数据库和表,注意配置文件的路径
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
拷贝mysql安装目录下support-files服务脚本到init.d目录
#拷贝脚本 cp mysql.server /etc/init.d/mysqld #赋予权限 chmod +x /etc/init.d/mysqld
设置开机启动
chkconfig mysqld on 启动MySQL service mysqld start 或者 /etc/init.d/mysql start
修改环境变量
修改/etc/profile文件 vi /etc/profile 在文件末尾添加 PATH=/usr/local/mysql/bin:$PATH export PATH
让配置立即生效
source /etc/profile
登陆测试,默认是没有密码,直接回车就可进入
mysql -uroot -p
***************************安装 PHP 的分割线******************************************************
安装依赖关系
libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换
cd /usr/local/src
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz tar zxvf libiconv-1.14.tar.gz cd libiconv-1.14 ./configure --prefix=/usr/local/libiconv make && make install
libmcrypt是加密算法扩展库。
cd /usr/local/src
wget http://iweb.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8 ./configure make && make install
Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启。
cd /usr/local/src
wget https://nchc.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz tar zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9 ./configure make && make install
编译mcrypt可能会报错:configure: error: *** libmcrypt was not found
vi /etc/ld.so.conf 最后一行添加 /usr/local/lib/ 载入 ldconfig
mcrypt 是 php 里面重要的加密支持扩展库,Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。
cd /usr/local/src
wget http://iweb.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz tar zxvf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8 ./configure make && make install
编译mcrypt可能会报错:/bin/rm: cannot remove `libtoolT': No such file or directory 如果出现错误,用下面的方法
修改 configure 文件,把RM='$RM'改为RM='$RM -f' 这里的$RM后面一定有一个空格。 如果后面没有空格,直接连接减号,就依然会报错。
正式开始编译php!
cd /usr/local/src
wget http://cn2.php.net/distributions/php-5.6.30.tar.gz tar zxvf php-5.6.30.tar.gz cd php-5.6.30 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv=/usr/local/libconv-1.14 --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --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 --disable-fileinfo --enable-maintainer-zts make && make install
如果出现 resinstall iconv
cd /usr/local/src cd php-5.6.30 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --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 --disable-fileinfo --enable-maintainer-zts make && make install
修改fpm配置php-fpm.conf.default文件名称
mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
复制php.ini配置文件
cp php.ini-production /usr/local/php/etc/php.ini
复制php-fpm启动脚本到init.d
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
赋予执行权限
chmod +x /etc/init.d/php-fpm
添加为启动项
chkconfig --add php-fpm
设置开机启动
chkconfig php-fpm on
按照标准,给php-fpm创建一个指定的用户和组
创建群组 groupadd www 创建一个用户,不允许登陆和不创主目录 useradd -s /sbin/nologin -g www -M www
将5.6版本的php添加到环境变量(如果不添加,默认是5.3版本)
修改/etc/profile文件 vi /etc/profile 在文件末尾的 PATH=/usr/local/mysql/bin:$PATH 后面再加PHP的命令目录 PATH=/usr/local/mysql/bin:$PATH:/usr/local/php/bin
让配置生效
source /etc/profile
立即启动php-fpm
service php-fpm start #或者 /etc/init.d/php-fpm start
php安装完成
***************nginx安装分割线*****************
安装openssl
cd /usr/local/src wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz tar zxvf openssl-1.0.2k.tar.gz cd openssl-1.0.2k ./config --prefix=/usr/local/src/openssl --openssldir=/usr/local/src/openssl/conf
make && make install
#检验安装 /usr/local/src/openssl/bin/openssl version -a
安装pcre
cd /usr/local/src rm -rf pcre rm -rf pcre-8.37 wget https://ftp.pcre.org/pub/pcre/pcre-8.37.tar.gz tar zxvf pcre-8.37.tar.gz cd pcre-8.37 ./configure --prefix=/usr/local/src/pcre/ make && make install
安装zlib软件
cd /usr/local/src rm -rf zlib rm -rf zlib-1.2.11 wget https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz tar zxvf zlib-1.2.11.tar.gz cd zlib-1.2.11 ./configure --prefix=/usr/local/src/zlib/ make && make install
安装nginx
#添加www用户和组 groupadd www useradd -g www www #创建网站根目录 mkdir -p /var/www/root/ chmod -R 775 /var/www/root/ #进入安装目录 cd /usr/local/src #删除原有安装 rm -rf nginx rm -rf nginx-1.12.0 wget http://nginx.org/download/nginx-1.12.0.tar.gz tar zxvf nginx-1.12.0.tar.gz cd nginx-1.12.0 #配置(使用openssl、pcre、zlib的源码路径) ./configure \ --user=www \ --group=www \ --prefix=/usr/local/src/nginx \ --with-http_ssl_module \ --with-openssl=/usr/src/openssl-1.0.2k \ --with-pcre=/usr/src/pcre-8.37 \ --with-zlib=/usr/src/zlib-1.2.11 \ --with-http_stub_status_module \ --with-threads
make && make install
#验证
/usr/local/src/nginx/sbin/nginx -V
修改配置文件
vi /usr/local/src/nginx/conf/nginx.conf
修改配置文件中 一: location / { root html; //网站根目录 index index.html index.htm; } 修改为 location / { root /var/www/root; index index.html index.htm; } 二: #location ~ \.php$ { # root html; //网站根目录 # fastcgi_pass 127.0.0.1:9000; //将php传给9000好端口php-fpm # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; //需修改 # include fastcgi_params; #} 修改为 location ~ \.php$ { autoindex_exact_size off; #文件大小从KB开始显示 autoindex_localtime on; #显示文件修改时间为服务器本地时间 root /var/www/root; #自定义网站根目录 fastcgi_pass 127.0.0.1:9000; #需要开启 fastcgi_index index.php; #需要开启 fastcgi_param SCRIPT_FILENAME /var/www/root/$fastcgi_script_name; include fastcgi_params; #需要开启 }
如果要开启目录浏览功能 ,在 server大括号选项中加入
autoindex on; #开启nginx目录浏览功能
启动nginx
/usr/local/src/nginx/sbin/nginx
如果出现 nginx: [error] open() "/usr/local/src/nginx/logs/nginx.pid" failed (2: No such file or directory) 这个错误
/usr/local/src/nginx/sbin/nginx -c /usr/local/src/nginx/conf/nginx.conf
这时已经启动成功
ps aux | grep nginx
可以看到master 和 worker 进程开启
重启 nginx命令
/usr/local/src/nginx/sbin/nginx -s reload
关闭ngixn
pkill -9 nginx
测试端口
netstat | grep 80
浏览器测试
IP:80 本地的话 127.0。0.1
如果访问不了,查看下防火墙的80端口是否开通
vi /etc/sysconfig/iptables #看是否有下面这句 没有补上 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #重启防火墙 /etc/init.d/iptables restart