一、前言
1、环境说明
linux:7.2
Nginx:1.10.2
MysqL:5.6.17
PHP:5.5.12
2、部署说明
PHP.ini配置文件路径:/usr/local/PHP/etc/PHP.ini
Nginx配置文件路径:/etc/Nginx/Nginx.conf
Nginx网站根目录:/usr/local/Nginx/html
二、准备工作
1、最小化安装Centos7.2
selinux可能会致使编译安装失败,我们先禁用它。
永久禁用,需要重启生效
- sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config
临时禁用,不需要重启
- setenforce0
2、安装必备工具
- yum-yinstallmakegccgcc-c++gcc-g77flexbisonfilelibtoollibtool-libsautoconfkernel-devellibjpeglibjpeg-devellibpnglibpng-devellibpng10libpng10-develgdgd-develfreetypefreetype-devellibxml2libxml2-develzlibzlib-develglib2glib2-develbzip2bzip2-devellibeventlibevent-develncursesncurses-develcurlcurl-devele2fsprogse2fsprogs-develkrb5krb5-devellibidnlibidn-developensslopenssl-develgettextgettext-develncurses-develgmp-develpspell-develunziplibcaplsof
三、安装MysqL5.6.17
1、准备工作
centos最小化安装后,会有MysqL的库因此先卸载!
MysqL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。因此,我们首先要在系统中源码编译安装cmake工具。
- wgethttp://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
- tarzxvfcmake-2.8.12.2.tar.gz
- cdcmake-2.8.12.2
- ./configure
- make&&makeinstall
2、使用cmake来编译安装MysqL 5.6.17
- wgethttp://dev.MysqL.com/get/Downloads/MysqL-5.6/MysqL-5.6.17.tar.gz
- tarzxvfMysqL-5.6.17.tar.gz
- cdMysqL-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
- make&&makeinstall
- #修改/usr/local/MysqL权限
- chmod+w/usr/local/MysqL
- chown-RMysqL:MysqL/usr/local/MysqL
关于my.cnf配置文件:
在启动MysqL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索”$basedir/my.cnf”就是安装目录下/usr/local/MysqL/my.cnf,这是新版MysqL的配置文件的默认位置!注意:在最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字。如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MysqL的正确配置,造成无法启动。由于我们已经卸载了最小安装完成后的MysqL库所以,就没必要操作了。
- cdsupport-files/
- #如果还有my.cnf请备份
- mv/etc/my.cnf/etc/my.cnf.bak
- cpmy-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目录
- cpsupport-files/MysqL.server/etc/init.d/MysqLd
- #赋予权限、设置开机自启并启动
- chmod+x/etc/init.d/MysqLd
- chkconfigMysqLdon
- serviceMysqLdstart
- #或者
- /etc/init.d/MysqLstart
MysqL5.6.x启动成功后,root默认没有密码,我们需要设置root密码。设置之前,我们需要先设置PATH,否则不能直接调用MysqL
- #修改/etc/profile文件
- vim/etc/profile
- #在文件末尾添加
- PATH=/usr/local/MysqL/bin:$PATH
- exportPATH
- #让配置立即生效
- source/etc/profile
- #登陆测试,默认是没有密码,直接回车就可进入
- MysqL-uroot-p
- #设置MysqL密码
- /usr/local/MysqL/bin/MysqLadmin-uroot-ppassword'你的密码'
- #登陆进命令行模式
- MysqL-uroot-p
- #查看用户
- >selectuser,hostfromMysqL.user;
- #删除不必要的用户
- >dropuser""@localhost;
- >dropuserroot@'::1';
- #赋予账号远程访问的权限
- >GRANTALLPRIVILEGESON*.*TO'root'@'127.0.0.1'IDENTIFIEDBY'你的密码';
- >GRANTALLPRIVILEGESON*.*TO'root'@'localhost'IDENTIFIEDBY'你的密码';
- #其它一些信息查询:
- #检查MysqL版本
- MysqL-uroot-p"密码"-e"selectversion();"
MysqL安装完毕!
四、安装PHP5.5.12
1、安装依赖关系
- yuminstalllibmcryptlibmcrypt-develmcryptmhash
2、下载并编译安装PHP
- wgethttp://mirrors.sohu.com/PHP/PHP-5.5.12.tar.gz
- tarzxvfPHP-5.5.12.tar.gz
- cdPHP-5.5.12
- ./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&&makeinstall
下面的警告说明已自带不需启用或安装,可忽略:
继续:
- #修改fpm配置PHP-fpm.conf.default文件名称
- mv/usr/local/PHP/etc/PHP-fpm.conf.default/usr/local/PHP/etc/PHP-fpm.conf
- #复制PHP.ini配置文件
- cpPHP.ini-production/usr/local/PHP/etc/PHP.ini
- #复制PHP-fpm启动脚本到init.d
- cpsapi/fpm/init.d.PHP-fpm/etc/init.d/PHP-fpm
- #赋予执行权限
- chmod+x/etc/init.d/PHP-fpm
- #添加为启动项
- chkconfig--addPHP-fpm
- #设置开机启动
- chkconfigPHP-fpmon
- #按照标准,给PHP-fpm创建一个指定的用户和组
- #创建群组
- groupaddwww
- #创建一个用户,不允许登陆和不创主目录
- useradd-s/sbin/nologin-gwww-Mwww
- #立即启动PHP-fpm
- /etc/init.d/PHP-fpmstart
PHP安装完毕!
五、安装Nginx1.10.2
1、准备工作
2、编译安装
- ./configure\
- --prefix=/usr/local/Nginx\
- --sbin-path=/usr/local/Nginx/bin/Nginx\
- --conf-path=/usr/local/Nginx/conf/Nginx.conf\
- --error-log-path=/var/log/Nginx/error.log\
- --http-log-path=/var/log/Nginx/access.log\
- --pid-path=/var/run/Nginx/Nginx.pid\
- --lock-path=/var/lock/Nginx.lock\
- --user=Nginx\
- --group=Nginx\
- --with-http_ssl_module\
- --with-http_flv_module\
- --with-http_stub_status_module\
- --with-http_gzip_static_module\
- --http-client-body-temp-path=/var/tmp/Nginx/client/\
- --http-proxy-temp-path=/var/tmp/Nginx/proxy/\
- --http-fastcgi-temp-path=/var/tmp/Nginx/fcgi/\
- --http-uwsgi-temp-path=/var/tmp/Nginx/uwsgi\
- --http-scgi-temp-path=/var/tmp/Nginx/scgi\
- --with-pcre
敲黑板:注意sbin、conf、pid、local的path要和后续的控制脚本保持一致!
- make&&makeinstall
3、为Nginx提供SysV init脚本
- cat/etc/init.d/Nginx
#!/bin/sh # # Nginx - this script starts and stops the Nginx daemin # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server,HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: Nginx # config: /usr/local/Nginx/conf/Nginx.conf # pidfile: /run/Nginx/Nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 prog=$(basename $Nginx) Nginx_CONF_FILE="/usr/local/Nginx/conf/Nginx.conf " lockfile=/var/lock/Nginx.lock start() { [ -x $Nginx ] || exit 5 [ -f $Nginx_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $Nginx -c $Nginx_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT [ $retval -eq 0 ] && rm -f $lockfile restart() { configtest || return $? stop start reload() { echo -n $"Reloading $prog: " killproc $Nginx -HUP RETVAL=$? force_reload() { restart configtest() { rh_status() { status $prog rh_status_q() { rh_status >/dev/null 2>&1 case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 restart|configtest) reload) rh_status_q || exit 7 force-reload) force_reload status) rh_status condrestart|try-restart) *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac |
类似的脚本网上很多,注意config、pid、sbin的路径保持和编译一致即可。
1、编辑Nginx.conf,启用如下选项:
location ~ \.PHP$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.PHP; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; } |
2、编辑/etc/Nginx/fastcgi_params,将其内容更改为如下内容:
- #mvfastcgi_paramsfastcgi_params.bak
- #catfastcgi_params
fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE Nginx; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; |
location/{ roothtml; indexindex.PHPindex.htmlindex.htm; } |
- #重新载入配置
- #/etc/init.d/Nginxreload
3、在/usr/local/Nginx/html目录下新建index.PHP测试页面
- cat>/usr/local/nignx/htmlindex.PHP<<EOF
PHPinfo(); ?> |
可通过浏览器 访问此测试页面,验证Nginx连接PHP配置是否成功。页面应该如下图
至此CenOS72下LNMP编译安装完毕!