1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > lnmp架构搭建—源码编译(nginx mysql php)

lnmp架构搭建—源码编译(nginx mysql php)

时间:2024-03-15 21:45:32

相关推荐

lnmp架构搭建—源码编译(nginx mysql php)

含义及理解:

LNMP = Linux+Nginx+Mysql+PHP:LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。LNMP代表的就是linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx中的PHP是以fastcgi的方式结合Nginx的,可以理解为Nginx代理了PHP的fastcgi。

Nginx 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。

Mysql是一个小型关系型数据库管理系统。

PHP 是一种在服务器端执行的嵌入HTML文档的脚本语言。

LNMP的工作原理:首先,浏览器发送http request请求到服务器(Nginx)服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx,服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。

LNMP特点:Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。

nginx的编译与安装:

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务

开启一台虚拟机作为lnmp服务器主机

准备好lnmp相关的源码包并解压

tar zxf nginx-1.15.9.tar.gzcd nginx-1.15.9/ls

修改配置文件使不显示nginx版本

cd nginx-1.15.9/src/corevim nginx.h删除第14行 nginx后面的内容

加快安装,是nginx占用空间更小一点

cd nginx-1.15.9/auto/cc/vim gcc将第172行注释掉

解决编译过程中一些软件的依赖性

在实际操作过程中,要根据具体的报错情况来安装软件或插件解决依赖性

yum install gcc pcre-devel openssl-devel -y

编译并安装

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_modulemake && make install

编译安装成功查看

cd /usr/local/lnmp/nginxls

创建nginx用户并在配置文件更改

id nginxuseradd nginxcd /usr/local/lnmp/nginx/confvim nginx.conf

添加软连接并测试

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/nginx nginxnetstat -antlp

测试

本地发布网页目录

vim /usr/local/lnmp/nginx/html/index.html

设置后端网页虚拟主机

在lnmp服务器端修改配置文件

cd /usr/local/lnmp/nginx/confvim nginx.conf在末尾行加入

server {listen 80;server_name ;location / {root html/www;index index.html;}} server {listen 80;server_name ;location / {root html/bbs;index index.html;}}server {listen 80;server_name ;location / {root html/blog;index index.html;}} }

在默认发布目录下创建目录并写入对应网页

cd /usr/local/lnmp/nginx/htmlmkdir wwwcd wwwvim index.html

检测配置文件语法并重启服务

nginx -tnginx -s reload

测试:

在真机注意更改本地解析

curl curl curl

设置均衡负载

在开启两台虚拟机,安装httpd,写入网页并开启服务

在lnmp服务器虚拟机修改配置文件

cd /usr/local/lnmp/nginx/confvim nginx.conf

http {include mime.types;default_type application/octet-stream;upstream cc {server 172.25.11.1:80;server 172.25.11.2:80;}将之前设定的网页虚拟主机注释server {listen 80;server_name ;location / {proxy_pass http://cc;} }}

检测语法并重启nginx

nginx -tnginx -s reload

测试:

mysql的编译安装及设置

在编译安装mysql之前关闭nginx

nginx -s stop

准备好源码包并解压

tar zxf mysql-boost-5.7.17.tar.gzcd mysql-5.7.17/ls

安装编译过程中有依赖性的软件(实际操作中,请根据自身情况来安装)

yum install -y cmake-2.8.12.2-4.el7.x86_64.rpmyum install -y gcc gcc-c++ ncurses-develyum install -y bison

安装依赖性软件后进行mysql的编译安装

编译安装时间较长

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/

编译好之后安装

make && make install

安装成功,查看

cd /usr/local/lnmp/mysqlls

复制启动脚本到/etc/init.d/

cd /lnmp安装包/mysql-5.7.17/support-filescp mysql.server /etc/init.d/mysqldchmod +x /etc/init.d/mysqld

将原来的/etc/f备份,重新拷贝安装包里的过去

cd /etccp f f.bakcd /lnmp安装包/mysql-5.7.17/support-files/cp my-f /etc/fvim /etc/fbasedir = /usr/local/lnmp/mysqldatadir = /usr/local/lnmp/mysql/datasocket = /usr/local/lnmp/mysql/data/mysql.sock

添加用户和组

groupadd -g 27 mysqluseradd -u 27 -g 27 mysql (id=27是因为rpm默认安装时mysql用户的id为27,并非强制)chown mysql.mysql /usr/local/lnmp/mysql -R (修改mysql目录的权限,使其对mysql用户可写)

将mysql命令添加到环境变量

vim ~/.bash_profile添加:PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/binsource ~/.bash_profile使文件生效

初始化和安全初始化mysql

mysqld --user=mysql --initialize(以mysql用户身份初始化)初始化会生成一个临时密码,用于登录mysql(要记住此密码)

为了安全,再将mysql目录的所有者改为root

chown root /usr/local/lnmp/mysql -Rchown mysql /usr/local/lnmp/mysql/data -R ##数据目录所有者必须是mysql,不然mysql用户不能写

启动mysql 并安全初始化

/etc/init.d/mysqld startmysql_secure_installation 然后会提示是否启用密码检测插件,直接回车不启用

测试登陆mysql并查看

php的编译安装及设置

准备好源码包并解压

yum -y install bzip2tar jxf php-5.6.35.tar.bz2

解决编译过程中软件的依赖性(实际操作中,请根据自身情况来安装)

yum install -y libxml2-devel libcurl-develyum install -y libjpeg-turbo-devel-1.2.1-1.el6.x86_64 libjpeg-turbo-devel-1.2.90-5.el7.x86_64yum install -y libpng-devel-1.2.49-1.el6_2.x86_64 libpng-devel-1.5.13-7.el7_2.x86_64yum install -y freetype freetype-develyum install -y net-snmp net-snmp-develcd /lnmp安装包yum install -y re2c-0.13.5-1.el6.x86_64.rpm libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm

开始编译并安装

./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhashmake && make install

拷贝更改配置文件

cd /usr/local/lnmp/php/etccp php-fpm.conf.default php-fpm.confvim php-fpm.conf查看配置文件中以下几项是否开启:user = nginxgroup = nginxpid = run/php-fpm.pid

拷贝更改php主配置文件

cd /lnmp安装包/php-5.6.35cp php.ini-production /usr/local/lnmp/php/etc/php.ini cd /usr/local/lnmp/php/etcvim php.ini修改时区:date.timezone = Asia/Shanghai

拷贝php启动脚本至/etc/init.d/

cd /lnmp/php-5.6.35/sapi/fpmcp init.d.php-fpm /etc/init.d/php-fpmchmod +x /etc/init.d/php-fpm

启动php

/etc/init.d/php-fpm start

查看网络端口

netstat -antlp

LNMP架构部署

先确保nginx、mysql、php都是开启状态

查看端口:

netstat -antlp

安装论坛前测试php网页

并修改nginx配置文件

cd /usr/local/lnmp/nginx/confvim nginx.conf注释掉之前设定的负载均衡集群并且开启php界面设定、增加index.php文件

检测语语法并重启nginx

nginx -tnginx -s reload

编写php测试网页

cd /usr/local/lnmp/nginxhtmlvim index.php

自行准备好论坛的压缩包

安装解压命令并解压文件到指定目录

yum install -y unzipunzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/

切换到解压目录并查看文件

重命名 uoload 为bbs

并给目录增加权限

cd /usr/local/lnmp/nginx/htmllsmv upload bbschmod 777 config/ -Rchmod 777 data/ -Rchmod 777 uc_server/ uc_client/ -R

编辑php主配置文件

并重启php

vim /usr/local/lnmp/php/etc/php.inipdo_mysql.default_socket= /usr/local/lnmp/mysql/data/mysql.sockmysql.default_socket = /usr/local/lnmp/mysql/data/mysql.sockmysqli.default_socket = /usr/local/lnmp/mysql/data/mysql.sock/etc/init.d/php-fpm reload

由于 nginx用户 对于 /usr/local/lnmp/mysql/data 目录没有权限

cd /usr/local/lnmp/mysqlchmod 755 data/

打开浏览器开始安装部署

172.25.11.4/bbs

这里输入mysql密码并设定论坛管理者密码

点击右上角管理中心进入管理

发现没有界面

解决如下:

cd /usr/local/lnmp/nginx/html/bbs/installrm -fr index.php

重新刷新管理界面

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。