LNMP黄金架构搭建

简述:

LNMP是当前各大中小公司常采用的技术架构,作为运维工程师必了解的技术之一,本文简单描述LNMP架构的部署方式,无论单机或分离部署采用的方法大同小异。

1.LNMP架构之linux环境的准备

本文采用centos7.9版本,初始化配置请点击如下链接进行查阅
centos7.9初始化配置

2.LNMP架构之nginx安装

#1.下载依赖
sudo yum install yum-utils

#2. 配置最新稳定版
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF

#3.清空yum源,安装最新版nginx
yum clean all
yum install nginx

#4. 安装完nginx版本查看
[root@nginx-test yum.repos.d]# which nginx
/usr/sbin/nginx
[root@nginx-test yum.repos.d]# nginx -V
nginx version: nginx/1.24.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
[root@nginx-test yum.repos.d]# 

#5 查看默认安装路径
[root@nds-1 app]# find / -name nginx
/etc/logrotate.d/nginx
/etc/nginx
/var/log/nginx
/var/cache/nginx
/usr/sbin/nginx
/usr/lib64/nginx
/usr/share/nginx
/usr/libexec/initscripts/legacy-actions/nginx
[root@nds-1 app]# 

#6.启动
nginx
[root@nds-1 app]# netstat -ntlp |grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1619/nginx: master

3.LNMP架构之mysql安装

3.1mysql环境准备及配置文件编辑

#安装前查询是否已安装
grep "mysql" /etc/passwd

#1.创建普通mysql用户,降低程序运行权限
useradd -s /sbin/nologin mysql

#2.查看msyql用户信息
[root@localhost ~]# id mysql
uid=1000(mysql) gid=1000(mysql) groups=1000(mysql)

#3.提前下载msyql 二进制代码包,注意提前下载好wget工具
yum  install wget -y

#4.下载mysql二进制
wget https://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar

#5. 解压缩msyql包,会多解压出两个包
tar -xf mysql-5.7.36-linux-glibc2.12-x86_64.tar 

#6.继续解压
tar zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz

#7.移动解压后的包到/opt/mysql/
mv mysql-5.7.36-linux-glibc2.12-x86_64 /opt/mysql/

#8.设置软连接(第七步未做的情况下)
ln -s mysql-5.7.36-linux-glibc2.12-x86_64 /opt/mysql

#9.安全性的准备工作,卸载可能centos7存在的mariadb相关的依赖关系
rpm -e --nodeps mariadb-libs

#10.开始准备启动mysql 的配置文件,[mysqld]是区,以下的参数对其生效。
#[mysqld] 对服务端生效的参数
#[mysql] 对客户端生效的参数

vim /etc/my.cnf
[mysqld]
basedir=/opt/mysql/
datadir=/opt/mysql/data
socket=/tmp/mysql.sock
server_id=1
port=3306
log_error=/opt/mysql/data/mysql_err.log

[mysql]
socket=/tmp/mysql.sock

3.2初始化mysql服务端

#1.先卸载系统自带的mariadb的依赖
rpm -e --nodeps mariadb-libs

#2.检查mysql的所需依赖环境
yum install libaio-devel -y

#3.创建mysql 数据库文件夹,用于初始化数据,且进行权限控制
mkdir -p /opt/mysql/data/
chown -R mysql.mysql /opt/mysql/   #修改mysql所有内容属主属组都为mysql

#4.初始化数据库
/opt/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql/ --datadir=/opt/mysql/data/

3.3 配置mysql客户端

#1.编写mysql启动脚本,定义一个mysqld.service
touch /etc/systemd/system/mysqld.service
vim /etc/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
Documentation=man:mysqld(7)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000

3.4 启动mysql服务

#1.由于我们配置了msyql.service脚本,直接用命令启动

systemctl start mysqld.service

systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/etc/systemd/system/mysqld.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2023-07-08 20:54:13 CST; 22s ago
     Docs: man:mysqld(7)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
 Main PID: 12003 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─12003 /opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf

#检查状态为active

3.5 配置mysql环境变量及登录mysql数据库

#1.配置mysql的环境变量PATH

/opt/mysql/bin


#2.编辑全局配置文件,在末尾写入安装路径
vim /etc/profile
PATH="$PATH:/opt/mysql/bin"
source /etc/profile

#3.which mysql 查看mysql,有具体路径则设置成功
[root@localhost ~]# which mysql
/opt/mysql/bin/mysql


#4登录MySQL,此时msyql无密码,可以直接回车登录
mysql -uroot -p 

#5.简单查看数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

mysql> create database haige;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| haige              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> 

3.6 修改数据库密码

注意不是登录数据库后改密码,是直接在命令终端直接改
mysqladmin -u root password 'xlgw123456!'  使用mysqladmin命令,修改root 密码为xlgw123456!

修改密码后需要密码登录

4.LNMP架构之php安装

4.1 php安装环境准备

1.先检查好nginx和mysql的安装和启动
ps -ef |grep nginx
ps -ef |grep mysql

#安装前对服务器做好基本的初始化设置
#2.安装php所必须有的依赖环境
yum install -y gcc gcc-c++ \
make zlib-devel libxml2-devel \
libjpeg-devel libjpeg-turbo-devel libiconv-devel \
freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel \

#网上找的(上面依赖不全,使用这个最好)
yum install -y gcc gcc-c++ \
libxml2 libxml2-devel \
openssl openssl-devel \
bzip2 bzip2-devel \
libcurl libcurl-devel \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
gmp gmp-devel \
readline readline-devel \
libxslt libxslt-devel \
systemd-devel \
openjpeg-devel \
curl curl-devel \
pcre pcre-devel \
epel-release \
libmcrypt-devel \
autoconf



2、安装php所必须有的依赖环境
yum install gcc gcc-c++ make zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel \
freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y

3、发现yum仓库默认缺少一个libiconv-devel软件包,因此我们可以手动下载,自行编译安装该软件
No package libiconv-devel available.
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz

4、解压缩安装该软件包,编译三部曲(解压,检查环境,安装)
tar -zxvf libiconv-1.15.tar.gz
./configure --prefix=/opt/libiconv
make && make install

5、检查上述编译安装的命令是否正确结束了在执行上一条shell语句结束后,echo $?
[root@lnmp-php libiconv-1.15]# echo $?
0
[root@lnmp-php libiconv-1.15]# 

4.2 编译安装php

#1.下载php源代码
wget http://mirrors.sohu.com/php/php-7.3.5.tar.gz

#2、解压缩php源代码,准备编译安装
tar -zxvf php-7.3.5.tar.gz

# 准备编译环境,指定安装路径,开启额外的功能等等
./configure --prefix=/opt/php735 \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir=/opt/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-gd \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-short-tags \
--enable-static \
--with-xsl \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-ftp \
--enable-opcache=no 

#无报错则进行下一步
#系统环境检查完毕后,准备开始编译且安装
make && make install

4.3 php 配置

#通过命令查找,有两个文件一个是开发,一个是生产,复制开发的到编译安装的目录下
ls php.ini*

#1.比较生产模式和生产模式两文件的区别
[root@lnmp-php php-7.3.5]# vimdiff php.ini-development php.ini-production 

#2.拷贝该配置文件,放到php的编译安装目录下并改名
[root@lnmp-php php-7.3.5]# cp  php.ini-development /opt/php735/lib/php.ini
#1.检查fastcgi的默认配置文件
cd /opt/php735/etc
ls
[root@lnmp-php etc]# ls
pear.conf  php-fpm.conf.default  php-fpm.d

#2.拷贝模板配置文件,生成新的php配置文件
cp  php-fpm.conf.default  php-fpm.conf
cd php-fpm.d 
cp www.conf.default www.conf

4.4 启动php服务

#创建用户nginx 
useradd nginx -u 1111 -s /sbin/nologin -M
#用绝对路径启动
/opt/php735/sbin/php-fpm

#查看启动状态
ps -ef |grep php
[root@lnmp-php sbin]# ps -ef |grep php
root      45665      1  0 23:45 ?        00:00:00 php-fpm: master process (/opt/php735/etc/php-fpm.conf)
nginx     45666  45665  0 23:45 ?        00:00:00 php-fpm: pool www
nginx     45667  45665  0 23:45 ?        00:00:00 php-fpm: pool www
root      45670   1608  0 23:46 pts/0    00:00:00 grep --color=auto php

4.5 修改nginx支持php代码

#1.删除无用的注释及server,采用引入的方式



#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#error_log  "pipe:rollback logs/error_log interval=1d baknum=7 maxsize=2G";

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
    #access_log  logs/access.log  main;
    #access_log  "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G"  main;
    
    sendfile        on;
    #tcp_nopush     on;
    
    #keepalive_timeout  0;
    keepalive_timeout  65;
    
    #gzip  on;
    include  extra/my_php.conf;

}




#2 .创建extra目录,编辑虚拟机文件server内容,文件名为my_php.conf,注意转到后端(后端部署在其他服务器上时)需要填写绝对路径

    server {
        listen       80;
        server_name  localhost;
        
        location / {
            root   html;
            index  index.html index.htm;
        }
        
        
        # add this php setings
        location ~ .*\.(php|php5) {
            root /opt/nginx/html/myphp;
            fastcgi_pass 192.168.10.52:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
        }
            
    }

#3.检查nginx语法,以及重启nginx
[root@lnmp-nginx extra]# nginx -t
nginx: the configuration file /opt/tngx233/conf/nginx.conf syntax is ok
nginx: configuration file /opt/tngx233/conf/nginx.conf test is successful
[root@lnmp-nginx extra]# nginx -s reload
[root@lnmp-nginx extra]# netstat -ntlp


#4. 创建php的首页文件放到后端服务器上
mkdir -p /opt/nginx/html/myphp
echo "<?php phpiinfo();   ?>"  > /opt/nginx/html/myphp/index.php

#5.访问验证
192.168.10.50/index.php

在这里插入图片描述

当看到phpinfo的页面,表示lnmp环境搭建好了,nginx已可以转发请求给php了。

4.6 测试php访问mysql

#后端服务器上(php服务器上)
#注意由于数据库是在其他服务器上,所以需要开启数据库的远程远程链接功能,数据库的用户权限设置等,具体请参考文档:https://www.python100.com/html/97120.html

cd /opt/nginx/html/myphp
vim test_mysql.php

<?php
$link_id=mysqli_connect('192.168.10.51','xlgw','xlgw123456!') or mysql_error();
if($link_id){
    echo "mysql successful by haige.\n";
}
else {
    echo mysql_error();
}
?>

-----------
##代码解释:
#1.建立mysql连接,把连接信息复制给变量 link_id
#2.如果link_id为真,那么就打印一串字符串信息,告诉你mysql链接成功了
#3.否则给你输出mysql链接报错的信息,让你能够自行体哦阿正程序

在这里插入图片描述
至此,LNMP架构部署完成,有问题欢迎留言探讨!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建基于LNMP(Linux + Nginx + MySQL + PHP)基础架构的政务平台,你可以按照以下流程进行: 1. 选择合适的Linux发行版:选择一个稳定、安全且适合政务应用的Linux发行版,如Ubuntu、CentOS等。 2. 安装操作系统:根据选择的Linux发行版,按照官方文档或参考在线教程进行操作系统的安装。 3. 系统配置:完成操作系统的安装后,进行一些基本的系统配置,如网络设置、防火墙配置等。 4. 安装Nginx:安装Nginx作为Web服务器。可以通过包管理器(如apt、yum)进行安装,也可以从源码编译安装。 5. 安装MySQL:安装MySQL数据库服务器,用于存储和管理数据。同样可以通过包管理器进行安装。 6. 配置Nginx和MySQL:根据实际需求,对Nginx和MySQL进行配置。配置文件通常位于`/etc/nginx/`和`/etc/mysql/`目录下。 7. 安装PHP:安装PHP解释器和相关扩展。可以使用包管理器进行安装,也可以从源码编译安装。 8. 配置Nginx和PHP:将Nginx与PHP进行集成,配置Nginx以将请求转发给PHP解释器处理。配置文件通常位于`/etc/nginx/`目录下。 9. 部署应用程序:根据政务平台的具体要求,进行应用程序的部署。这可能涉及到安装和配置各种应用程序和框架,如Laravel、WordPress等。 10. 数据库配置:根据政务平台的数据库需求,进行数据库的安装和配置。需要创建数据库、用户,并进行权限设置。 11. 安全设置:确保系统和应用程序的安全性。这包括使用合适的防火墙规则、加密通信、限制访问权限等。 12. 监控和日志:设置系统监控和日志记录机制,以便及时发现和解决问题。 13. 测试和优化:完成搭建后,进行测试和优化,确保平台的稳定性和性能。 14. 上线运维:将平台部署到生产环境后,进行持续的运维工作,包括系统更新、备份、故障排除等。 请注意,上述流程仅提供了一个基本的指导,具体的搭建流程可能因政务平台的具体需求而有所不同。建议在搭建过程中参考相关文档和教程,并根据实际情况进行适当调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值