0
点赞
收藏
分享

微信扫一扫

Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统

在前面的​​LNMP 系列导读​​​中,介绍了​​在 Linux 环境下搭建 Nginx 服务​​​、​​正向代理与反向代理​​​、​​负载均衡与动静分离​​​、​​Nginx+Keepalived 高可用​​​,今天手把手带大家搭建 LNMP 架构以及通过 LNMP 平台中部署​​天空网络电影 Web 应用系统​​;

1、安装 Nginx

首先,需准备一台​​Linux 服务器​​​,然后安装​​Nginx 服务​​​,这里就不过多的写安装​​Nginx​​​步骤了,具体可以看这篇文章《​​手把手教你在 Linux 环境下搭建 Nginx 服务​​》若安装过程中,有遇到什么问题,欢迎大家与我交流。

2、安装 MySQL 数据库

准备工作,先检查系统中是否已经安装了​​MySQL数据库​​,如已安装,先卸载,以免发生端口或是程序冲突。

# rpm -q mysql-server mysql

注意:MySQL 5.5 以上的版本都需要 cmake 编译。而不是 ./configure

# tar xf  cmake-2.8.6.tar.gz
# cd cmake-2.8.6
# ./configure
# gmake && gmake install

或者

# yum -y install cmake

创建 MySQL 用户

# groupadd mysql
# useradd -M -s /sbin/nologin -g mysql mysql

解压、编译、安装

# tar xf mysql-5.5.22.tar.gz 
# cd mysql-5.5.22
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all
# make && make install

上述参数含义:

-DCMAKE_INSTALL_PREFIX: 指定数据库安装目录

-DSYSCONFDIR=/etc :指定配置文件目录

-DDEFAULT_CHARSET:指定默认使用的字符集编码。如utf8

-DDEFAULT_COLLATION=utf8_general_ci:设定默认排序规则(utf8_general_ci快速/utf8_unicode_ci准确)

-DEXTRA_CHARSETS=all:启用额外的字符集类型(默认为all)

如下图表示编译完成

Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统_服务器

权限调整

# chown -R mysql:mysql /usr/local/mysql

建立配置文件

# rm -rf /etc/my.cnf
# cd mysql-5.5.22
# cp support-files/my-medium.cnf /etc/my.cnf

初始化数据库

# cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

初始化数据库成功


设置软连接

为了在任何目录下都能使用 MySQL 命令,可以创建软连接。

# ln -s /usr/local/mysql/bin/* /usr/local/bin/

将 MySQL 添加为系统服务

# cd mysql-5.5.22/support-files
# cp mysql.server /etc/init.d/mysqld
# chmod +x /etc/init.d/mysqld
# chkconfig --add mysqld

启动 MySQL 服务

# service mysqld start
# Starting MySQL.. [ OK ]
# netstat -anpt | grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2849/mysqld

登陆验证,查看 MySQL 数据库是否搭建完成

Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统_php_02

3、安装 PHP

FPM(FastCGI Process Manager,FastCGI 进程管理器)模块,用来对 PHP 解析实例进行管理,优化解析效率。单台服务器的 LNMP 架构通常使用该方式,因此在配置 PHP 编译选项时需添加​​--enable-fpm​​以启用此模块。

解压

# tar xf php-5.3.28.tar.gz
# cd php-5.3.28
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --with-mysql=/usr/local/mysql/bin/mysql_config --enable-xml --with-config-file-path=/etc
# make && make install

php编译如果报以下错误

configure: error: Cannot find libmysqlclient under /usr.

解决办法:

# ln -s /usr/lib64/mysql/libmysqlclient.so.16 /usr/lib/libmysqlclient.so

配置 Nginx 支持 PHP 环境,启用 php-fpm 配置文件

Nginx 能够解析 PHP 网页,有两种方法:

  • 当中介:将访问 PHP 页面的 Web 请求转发给其他服务器处理;
  • 通过使用 PHP 的 FPM 模块来调用本机的 PHP 环境;

如果选用 FPM 方式,需先启动 php-fpm 进程,便于监听 PHP 解析请求,在 php-fpm.conf 配置文件中,pid 配置行指出了 PID 信息的存放位置,可根据实际情况进行修改。

# cd /usr/local/php/etc/
# cp php-fpm.conf.default php-fpm.conf
# useradd -M -s /sbin/nologin php
# vi php-fpm.conf
25 pid = run/php-fpm.pid // 确认 PID 文件位置
140 user = nobody // 运行用户
141 group = nobody // 运行组
188 pm.max_children = 50 // 最大空闲进程数
190 pm.start_servers = 20 // 启动时开启的进程数
191 pm.min_spare_servers = 5 // 最少空闲进程数
195 pm.max_spare_servers = 35

启动 fpm

# cd /usr/local/php/sbin/
# ./php-fpm

启动成功

# netstat -antp | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3007/php-fpm
tcp 1 0 192.168.1.11:40560 192.168.1.11:3306 CLOSE_WAIT 3008/php-fpm
tcp 1 0 192.168.1.11:40562 192.168.1.11:3306 CLOSE_WAIT 3009/php-fpm

结合 PHP 与 Nginx,并修改配置文件

无论是将 PHP 页面交给 LNMP 服务器去解析,都是会调用本机的 php-fpm 进程进行解析,需在​​server { }​​​配置段中添加​​localtion​​​配置,指定当访问​​.php​​​网页时采取任何操作,在 conf/ 目录下的 fastcgi.conf 文件中已经包含必须的宏配置,可通过​​include​​语句添加。

vim /usr/local/nginx/conf/nginx.conf
35 server {
36 listen 80;
37 server_name www.jacktian.com;
38
39 #charset koi8-r;
40
41 #access_log logs/host.access.log main;
42
43 location / {
44 root html; // php 网页文档根目录
45 index index.html index.htm index.php;
46 location ~ \.php$ { // 访问.php网页的配置段
47 fastcgi_pass 127.0.0.1:9000; // php-fpm 的监听地址
48 fastcgi_index index.php; // PHP 首页文件
49 fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;
50 include fastcgi_params; // 包括 fastcgi.conf 样本配置
51 }
52
53 }

创建 PHP 文件

以调用 php-fpm 解析为例,在 PHP 文档根目录下创建一个测试网页文件。

# cd /usr/local/nginx/html/
v# im index.php
<?php
phpinfo();
?>

重启 Nginx 服务

# ./nginx -s stop
# ./nginx

验证

在本地浏览器地址栏中输入​​http://192.168.1.11/index.php​​进行测试,到此 PHP和 Nginx结合成功。

Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统_服务器_03

4、在 LNMP 平台上部署 Web 应用系统

LNMP 与 LAMP 平台是非常相似的,主要在于所用的 Web 服务软件的不同,而这与使用 PHP 开发的 Web 应用程序并无太大关系,PHP 应用的部署方法也类似,以部署​​SKYUC 天空网络电影系统​​为例。

SKYUC 是一套 PHP 视频点播系统,支持各种 P2P 流媒体软件,适合电影门户站、多媒体中心、网吧、酒店、教育等多种行业使用。

下载并部署程序代码

将下载的​​SKYUC​​​程序文件解压,找到其中的​​wwwroot​​​文件夹并将其放置到​​LNMP​​​服务器的网站根目录下,然后调整权限,允许​​Nginx​​​、​​php-fpm​​程序拥有必要的写入权限。

# yum -y install unzip
# unzip SKYUC.v3.4.2.SOURCE.zip
# cd SKYUC.v3.4.2.SOURCE
# mv wwwroot /usr/local/nginx/html/skyuc
# chmod -R 777 skyuc

创建数据库

为降低 Web 应用程序对数据库的风险,可设置专用的数据库及授权用户。

mysql> create database skyucdb;
mysql> grant all on skyucdb.* to 'runskyuc'@'%' identified by '123.com';

登录验证

Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统_nginx_04

安装 Web 应用

本地访问​​http://192.168.1.11/skyuc/install/index.php​​​,将会打开​​SKYUC​​的安装程序,根据页面提示要求,只需三步即可安装成功。

Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统_php_05

确保系统环境、目录权限、缓存可写性等检测通过,否则将无法继续安装。

Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统_nginx_06

下一步的配置系统中,除了应正确配置数据库连接,还有一点需要跟大家强调的,​​类型要选:MySQL​​​,还应设置好管理账号、密码等信息,完成安装后,可删除​​install​​目录,降低安全风险。

Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统_php_07

Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统_nginx_08

配置完​​SKYuc​​​系统页面后,可返回到​​Web​​​应用系统站点首页或管理后台,这时恰巧,系统显示了​​Nginx 403 forbidden (13: Permission denied)报错​​,如下是我的解决方法:

第一步: 将​​nginx.conf​​​的​​user​​改为和启动用户一致

# vim /usr/local/nginx/conf/nginx.conf
2 user root;
3 worker_processes 1;

第二步: 缺少​​index.html​​​或​​index.php​​​文件,就是配置文件中第​​45​​​行 index index.html index.htm 中缺少指定的​​index.php​​文件。

43         location / {
44 root html;
45 index index.html index.htm index.php;
46 location ~ \.php$ {
47 fastcgi_pass 127.0.0.1:9000;
48 fastcgi_index index.php;
49 fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;
50 include fastcgi_params;
51 }

第三步: ​​SELinux​​​ 设置为开启状态(​​enabled​​​)的原因,需将​​enabled​​​改为​​disabled​​。

# vi /etc/selinux/config
7 SELINUX=disabled

第四步: 重启​​Nginx​​服务。

# cd /usr/local/nginx/sbin/
# ./nginx -s stop
# ./nginx

访问 Web 应用系统

通过本地访问​​http://192.168.1.11/skyuc/​​​,可以看到​​天空网络​​电影系统网站首页。

Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统_服务器_09

通过本地访问​​http://192.168.1.11/skyuc/admincp/​​,输入刚才所配置的管理员账号密码即可登录至后台管理界面。

Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统_运维_10

环境包下载


举报

相关推荐

0 条评论