作者:JackTian
微信公众号:杰哥的IT之旅(ID:Jake_Internet)
LAMP 系列导读
- LAMP 系列教程(一)| 详解 Linux 环境下部署 HTTPD 服务
- LAMP 系列教程(二)| 如何在 Linux 环境下部署 AWStats 分析系统来监控 Web 站点?
- LAMP 系列教程(三)| 一文读懂 HTTPD 服务的访问控制
- LAMP 系列教程(四)| MysqL 数据库系统(一)
- LAMP 系列教程(五)| MysqL 数据库系统(二)- sql语句的基本操作
- LAMP 系列教程(六)| MysqL 数据库系统(三)- 数据库的用户授权
- LAMP 系列教程(七)| MysqL 数据库系统(四)- 数据库的备份与恢复
- LAMP 系列教程(八)| 带你轻松玩转 LAMP 网站架构平台(一)
- LAMP 系列教程(九)| LAMP 架构应用案例 - 部署 PHPMyAdmin 系统(二)
LNMP 系列导读 - Nginx 系列教程(一)| 手把手教你在 Linux 环境下搭建 Nginx 服务
- Nginx 系列教程(二)| 一文带你读懂 Nginx 的正向与反向代理
- Nginx 系列教程(三)| 一文带你读懂 Nginx 的负载均衡
- Nginx 系列教程(四)| 一文带你读懂 Nginx 的动静分离
- Nginx 系列教程(五)| 利用 Nginx+Keepalived 实现高可用技术
在前面的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
# 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: 指定数据库安装目录
-DDEFAULT_CHARSET:指定默认使用的字符集编码。如utf8
-DDEFAULT_COLLATION=utf8_general_ci:设定默认排序规则(utf8_general_ci快速/utf8_unicode_ci准确)
-DEXTRA_CHARSETS=all:启用额外的字符集类型(默认为all)
如下图表示编译完成
权限调整
# 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/
# 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
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
configure: error: Cannot find libMysqLclient under /usr.
解决办法:
# ln -s /usr/lib64/MysqL/libMysqLclient.so.16 /usr/lib/libMysqLclient.so
配置 Nginx 支持 PHP 环境,启用 PHP-fpm 配置文件
如果选用 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 页面交给 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-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结合成功。
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';
登录验证
本地访问http://192.168.1.11/skyuc/install/index.PHP,将会打开SKYUC的安装程序,根据页面提示要求,只需三步即可安装成功。
确保系统环境、目录权限、缓存可写性等检测通过,否则将无法继续安装。
下一步的配置系统中,除了应正确配置数据库连接,还有一点需要跟大家强调的,类型要选:MysqL,还应设置好管理账号、密码等信息,完成安装后,可删除install目录,降低安全风险。
配置完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/,可以看到天空网络电影系统网站首页。
通过本地访问http://192.168.1.11/skyuc/admincp/,输入刚才所配置的管理员账号密码即可登录至后台管理界面。
环境包下载
公众号内回复:LNMP即可获取文章中的安装包。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。