LNMP是最流行的Web应用程序平台之一,linux、nginx、mysql、php,它们都是各自独立的程序,熟悉配置各程序对于网站管理员来说是很有必要的。教程全程是以编译安装的方式部署LNMP,最终实现解析PHP网页。
实验平台:VMware虚拟机
操作系统:CentOS 6.5 / Windows10
服务端IP:192.168.168.200
客户端IP:192.168.168.201
MySQL:5.5.59
Nginx:1.12.2
PHP:5.6.33
第一步 准备工作
禁用SElinux
- [root@Wanghualang ~]# setenforce 0
- [root@Wanghualang ~]# sed -ri 's#^(SELINUX=).*#\1disabled#g' /etc/selinux/config
禁用防火墙
- [root@Wanghualang ~]# service iptables stop
- [root@Wanghualang ~]# service ip6tables stop
- [root@Wanghualang ~]# chkconfig iptables off
- [root@Wanghualang ~]# chkconfig ip6tables off
安装常用软件
- [root@Wanghualang ~]# yum -y install wget vim
第二步 安装Nginx
新建Nginx用户和用户组
- [root@Wanghualang ~]# groupadd nginx
- [root@Wanghualang ~]# useradd -M nginx -s /sbin/nologin -g nginx
精简版的操作系统,在接下来的configure阶段肯定会出现缺失相关开发包的报错,根据提示安装相关开发包即可。教程中为了做到一气呵成,先提前安装好需要的开发包。
- [root@Wanghualang ~]# yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl-devel
编译安装软件
- [root@Wanghualang ~]# cd /usr/local/src/
- [root@Wanghualang src]# wget --no-check-certificate http://nginx.org/download/nginx-1.12.2.tar.gz
- [root@Wanghualang src]# tar xzf nginx-1.12.2.tar.gz
- [root@Wanghualang src]# cd nginx-1.12.2
- [root@Wanghualang nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --with-pcre
- [root@Wanghualang nginx-1.12.2]# make
- [root@Wanghualang nginx-1.12.2]# make install
扩展阅读展开--prefix=/usr/local/nginx:指定/usr/local/nginx为程序安装目录;
--user=nginx:指定nginx用户程序启动;
--group=nginx:指定nginx用户组程序启动;
--with-http_ssl_module:配置安全加密功能,比如https;
--with-http_gzip_static_module:配置压缩功能,比如CSS代码压缩;
--with-pcre:正则表达式相关功能。教程中仅配置安装基础功能,更多configure配置参数可自行了解,日后按需添加。
- [root@Wanghualang nginx-1.12.2]# ./configure --help | more
配置服务启动脚本
- [root@Wanghualang ~]# vim /etc/init.d/nginx
红字部分为脚本内容:
- #!/bin/bash
- # nginx Startup script for the Nginx HTTP Server
- # chkconfig: - 85 15
- # description: Nginx is a high-performance web and proxy server.
- # processname: nginx
- # pidfile: /var/run/nginx.pid
- # config: /usr/local/nginx/conf/nginx.conf
- nginxd=/usr/local/nginx/sbin/nginx
- nginx_config=/usr/local/nginx/conf/nginx.conf
- nginx_pid=/var/run/nginx.pid
- RETVAL=0
- prog="nginx"
- # Source function library.
- . /etc/rc.d/init.d/functions
- # Source networking configuration.
- . /etc/sysconfig/network
- # Check that networking is up.
- [ ${NETWORKING} = "no" ] && exit 0
- [ -x $nginxd ] || exit 0
- # Start nginx daemons functions.
- start() {
- if [ -e $nginx_pid ];then
- echo "nginx already running...."
- exit 1
- fi
- echo -n $"Starting $prog: "
- daemon $nginxd -c ${nginx_config}
- RETVAL=$?
- echo
- [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
- return $RETVAL
- }
- # Stop nginx daemons functions.
- stop() {
- echo -n $"Stopping $prog: "
- killproc $nginxd
- RETVAL=$?
- echo
- [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid
- }
- # reload nginx service functions.
- reload() {
- echo -n $"Reloading $prog: "
- #kill -HUP `cat ${nginx_pid}`
- killproc $nginxd -HUP
- RETVAL=$?
- echo
- }
- # See how we were called.
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- reload)
- reload
- ;;
- restart)
- stop
- start
- ;;
- status)
- status $prog
- RETVAL=$?
- ;;
- *)
- echo $"Usage: $prog {start|stop|restart|reload|status|help}"
- exit 1
- esac
- exit $RETVAL
- [root@Wanghualang ~]# chmod 755 /etc/init.d/nginx
- [root@Wanghualang ~]# chkconfig --add nginx
启动服务
- [root@Wanghualang ~]# service nginx start
第三步 安装MySQL
新建MySQL用户和用户组
- [root@Wanghualang ~]# groupadd mysql
- [root@Wanghualang ~]# useradd -M mysql -s /sbin/nologin -g mysql
MySQL从5.5版本开始,不再使用configure,而选择了cmake工具进行编译,教程中为了做到一气呵成,先提前安装好需要的开发包。
- [root@Wanghualang ~]# yum -y install cmake bison-devel ncurses-devel
编译安装软件
- [root@Wanghualang ~]# cd /usr/local/src/
- [root@Wanghualang src]# wget --no-check-certificate https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.59.tar.gz
- [root@Wanghualang src]# tar xzf mysql-5.5.59.tar.gz
- [root@Wanghualang src]# cd mysql-5.5.59
- [root@Wanghualang mysql-5.5.59]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_DEBUG=0 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1
- [root@Wanghualang mysql-5.5.59]# make
- [root@Wanghualang mysql-5.5.59]# make install
扩展阅读展开
教程中仅配置安装基础功能,更多cmake配置参数可自行了解,日后按需添加。
- [root@Wanghualang mysql-5.5.59]# cmake . -LH
初始化数据库,数据库启动用户设置为mysql,程序安装目录设置为/usr/local/mysql,数据存放路径设置为/usr/local/mysql/data。
- [root@Wanghualang ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
创建配置文件,建议先删除系统默认创建的MySQL配置文件,再拷贝新的配置文件。
- [root@Wanghualang ~]# rm -rf /etc/my.cnf
- [root@Wanghualang ~]# cp -rf /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf
配置命令环境变量
- [root@Wanghualang ~]# echo "export PATH="/usr/local/mysql/bin:$PATH"" >> /etc/profile
- [root@Wanghualang ~]# source /etc/profile
配置服务启动脚本
- [root@Wanghualang ~]# cp -rf /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
- [root@Wanghualang ~]# chmod 755 /etc/init.d/mysqld
- [root@Wanghualang ~]# chkconfig --add mysqld
启动服务
- [root@Wanghualang ~]# service mysqld start
扩展阅读展开
建议使用源码目录中提供的安全向导配置数据库,按需重置Root密码、移除匿名用户、禁止Root远程登录、移除测试数据库。
- [root@Wanghualang ~]# /usr/local/src/mysql-5.5.59/scripts/mysql_secure_installation
第四步 安装PHP
新建PHP用户和用户组
- [root@Wanghualang ~]# groupadd php
- [root@Wanghualang ~]# useradd -M php -s /sbin/nologin -g php
精简版的操作系统,在接下来的configure阶段肯定会出现缺失相关开发包的报错,根据提示安装相关开发包即可。教程中为了做到一气呵成,先提前安装好需要的开发包。
- [root@Wanghualang ~]# yum -y install libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel
编译安装软件
- [root@Wanghualang ~]# cd /usr/local/src/
- [root@Wanghualang src]# wget --no-check-certificate http://cn2.php.net/distributions/php-5.6.33.tar.gz
- [root@Wanghualang src]# tar xzf php-5.6.33.tar.gz
- [root@Wanghualang src]# cd php-5.6.33
- [root@Wanghualang php-5.6.33]# ./configure --prefix=/usr/local/php --with-fpm-user=php --with-fpm-group=php --with-config-file-path=/usr/local/php/etc --with-openssl --with-zlib --with-curl --with-gd --with-gettext --with-mysql --with-mysqli --with-pdo-mysql --with-libxml-dir --with-pcre-dir --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-fpm --enable-mysqlnd --enable-embedded-mysqli --enable-mbstring --disable-ipv6
- [root@Wanghualang php-5.6.33]# make
- [root@Wanghualang php-5.6.33]# make install
扩展阅读展开
教程中仅配置安装基础功能,更多configure配置参数可自行了解,日后按需添加。
- [root@Wanghualang php-5.6.33]# ./configure --help | more
创建PHP配置文件
- [root@Wanghualang ~]# cd /usr/local/php/etc/
- [root@Wanghualang etc]# mv php-fpm.conf.default php-fpm.conf
- [root@Wanghualang etc]# cp -rf /usr/local/src/php-5.6.33/php.ini-development ./php.ini
创建服务启动脚本
- [root@Wanghualang ~]# vim /etc/init.d/php-fpm
脚本内容为红字部分:
- [root@Wanghualang ~]# chmod 755 /etc/init.d/php-fpm
- [root@Wanghualang ~]# chkconfig --add php-fpm
启动服务
- [root@Wanghualang ~]# service php-fpm start
第五步 配置Nginx解析PHP
- [root@Wanghualang ~]# vim /usr/local/nginx/conf/nginx.conf
大约在第43行,找到:
- location / {
- root html;
- index index.html index.htm;
- }
在index.htm的后面加一个index.php,之间有空格,最终修改为:
- location / {
- root html;
- index index.html index.htm index.php;
- }
大约在第65行,找到:
- #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;
- #}
去掉所有注释符号,再把/scripts修改为Nginx网站根目录,最终修改为:
- location ~ \.php$ {
- root html;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
- include fastcgi_params;
- }
重启服务
- [root@Wanghualang ~]# service nginx restart
第六步 新建测试页
新建一个简单的PHP测试网页
- [root@Wanghualang ~]# vim /usr/local/nginx/html/wanghualang.php
红字部分为代码内容:
使用浏览器访问测试网页:http://192.168.168.200/wanghualang.php,若能看到PHP相关程序信息,表示配置成功!