分离部署LNMP架构

  • 分离部署LNMP架构已关闭评论
  • 111 次浏览
  • A+
所属分类:linux技术
摘要

环境说明:浏览器访问


分离部署LNMP

环境说明:

系统 主机名 IP 服务
centos8 nginx 192.168.111.141 nginx
centos8 mysql 192.168.111.142 mysql
centos8 php 192.168.111.143 php

部署nginx

//修改名字 [root@localhost ~]# hostnamectl set-hostname nginx [root@localhost ~]# bash [root@nginx ~]#   //关闭防火墙和selinux [root@nginx ~]# setenforce 0 [root@nginx ~]# sed -ri 's/^(SELINUX=).*/1disabled/g' /etc/selinux/config [root@nginx ~]# systemctl disable --now firewalld [root@nginx ~]# reboot  //配置yum源 [root@nginx ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo [root@nginx ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo  //创建用户 [root@nginx ~]# useradd -rMs /sbin/nologin nginx  //安装依赖包 [root@nginx ~]# dnf -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make wget vim  //创建日志存放目录 [root@nginx ~]# mkdir -p /var/log/nginx [root@nginx ~]# chown -R nginx.nginx /var/log/nginx  //下载nginx包并解压 [root@nginx ~]# wget http://nginx.org/download/nginx-1.20.2.tar.gz [root@nginx ~]# tar xf nginx-1.20.2.tar.gz   //进行编译安装 [root@nginx ~]# cd nginx-1.20.2 [root@nginx nginx-1.20.2]# ./configure   --prefix=/usr/local/nginx   --user=nginx   --group=nginx   --with-debug   --with-http_ssl_module   --with-http_realip_module   --with-http_gunzip_module   --with-http_gzip_static_module   --with-http_stub_status_module [root@nginx nginx-1.20.2]# make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install  //配置环境变量 [root@nginx ~]# echo "export PATH=$PATH:/usr/local/nginx/sbin" > /etc/profile.d/nginx.sh [root@nginx ~]# source /etc/profile.d/nginx.sh                  //配置system启动服务 [root@nginx ~]# vim /usr/lib/systemd/system/nginx.service [Unit] Description=nginx server daemon After=network.target    [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecStop=/usr/local/nginx/sbin/nginx -s stop ExecReload=/bin/kill -HUP $MAINPID   [Install] WantedBy=multi-user.target  //启动nginx [root@nginx ~]# systemctl enable --now nginx [root@nginx ~]# systemctl enable --now nginx Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service. [root@nginx ~]# ss -anlt State        Recv-Q       Send-Q               Local Address:Port               Peer Address:Port       Process        LISTEN       0            128                        0.0.0.0:80                      0.0.0.0:*                         LISTEN       0            128                        0.0.0.0:22                      0.0.0.0:*                         LISTEN       0            128                           [::]:22                         [::]:*                         

分离部署LNMP架构

部署mysql

//修改名字 [root@localhost ~]# hostnamectl set-hostname mysql [root@localhost ~]# bash [root@mysql ~]#   //关闭防火墙 [root@mysql ~]# setenforce 0 [root@mysql ~]# sed -ri 's/^(SELINUX=).*/1disabled/g' /etc/selinux/config [root@mysql ~]# systemctl disable --now firewalld  //配置yum源 [root@mysql ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo [root@mysql ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo  //创建用户 [root@mysql ~]# useradd -rMs /sbin/nologin mysql  //下载依赖包 [root@mysql ~]# yum -y install ncurses-devel openssl-devel openssl cmake mariadb-devel ncurses-compat-libs  //下载mysql包并解压 [root@mysql ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz [root@mysql ~]# tar xf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local/  //修改包名,更改属主属组 [root@mysql ~]# cd /usr/local/ [root@mysql local]# mv mysql-5.7.38-linux-glibc2.12-x86_64 mysql [root@mysql local]# chown -R mysql.mysql mysql* [root@mysql local]# ll -d mysql/ drwxr-xr-x. 9 mysql mysql 129 Oct 11 13:42 mysql/  //配置环境变量 [root@mysql local]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh [root@mysql local]# source /etc/profile.d/mysql.sh  //创建头文件 [root@mysql local]# ln -s /usr/local/mysql/include /usr/include/mysql  //添加帮助文档 [root@mysql local]# vim /etc/man_db.conf  MANDATORY_MANPATH                       /usr/man MANDATORY_MANPATH                       /usr/share/man MANDATORY_MANPATH                       /usr/local/share/man MANDATORY_MANPATH                       /usr/local/mysql/man  //创建库文件 [root@mysql ~]# vim /etc/ld.so.conf.d/mysql.conf /usr/local/mysql/lib/ [root@mysql ~]# ldconfig   //创建数据存放路劲 [root@mysql ~]# mkdir -p /opt/data [root@mysql ~]# chown -R mysql.mysql /opt/data/ [root@mysql ~]# ll -d /opt/data/ drwxr-xr-x. 2 mysql mysql 6 Oct 11 13:48 /opt/data/  //初始化数据库 [root@mysql ~]# mysqld --initialize --user mysql --datadir /opt/data/ 2022-10-11T05:49:31.198902Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2022-10-11T05:49:31.347232Z 0 [Warning] InnoDB: New log files created, LSN=45790 2022-10-11T05:49:31.366252Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2022-10-11T05:49:31.427201Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 7a1816e2-4928-11ed-a649-000c29074265. 2022-10-11T05:49:31.428093Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2022-10-11T05:49:31.649647Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher. 2022-10-11T05:49:31.649663Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher. 2022-10-11T05:49:31.649960Z 0 [Warning] CA certificate ca.pem is self signed. 2022-10-11T05:49:31.695538Z 1 [Note] A temporary password is generated for root@localhost: h.#agi;KB7%t		//临时密码 [root@mysql ~]# echo 'h.#agi;KB7%t' > pass  //编写配置文件 [root@mysql ~]# dnf -y remove mariadb* [root@mysql ~]# vim /etc/my.cnf [mysqld] basedir = /usr/local/mysql datadir = /opt/data socket = /tmp/mysql.sock port = 3306 pid-file = /opt/data/mysql.pid user = mysql skip-name-resolve  //编写system控制脚本 [root@mysql ~]# vim /usr/lib/systemd/system/mysqld.service [Unit] Description=mysql server daemon After=network.target   [Service] Type=forking ExecStart=/usr/local/mysql/support-files/mysql.server start ExecStop=/usr/local/mysql/support-files/mysql.server stop ExecReload=/bin/kill -HUP $MAINPID  [Install] WantedBy=multi-user.target [root@mysql ~]# systemctl daemon-reload  //设置开机自启 [root@mysql ~]# systemctl enable --now mysqld [root@mysql ~]# ss -anlt State        Recv-Q       Send-Q               Local Address:Port               Peer Address:Port       Process        LISTEN       0            128                        0.0.0.0:22                      0.0.0.0:*                         LISTEN       0            80                               *:3306                          *:*                         LISTEN       0            128                           [::]:22                         [::]:*                        //设置mysql密码 [root@mysql ~]# cat pass  h.#agi;KB7%t [root@mysql ~]# mysql -uroot -p'h.#agi;KB7%t' mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor.  Commands end with ; or g. Your MySQL connection id is 3 Server version: 5.7.38  Copyright (c) 2000, 2022, Oracle and/or its affiliates.  Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.  Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.  mysql> set password = password('123456'); Query OK, 0 rows affected, 1 warning (0.00 sec)  mysql> exit Bye  //修改后验证 [root@mysql ~]# mysql -uroot -p123456 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor.  Commands end with ; or g. Your MySQL connection id is 4 Server version: 5.7.38 MySQL Community Server (GPL)  Copyright (c) 2000, 2022, Oracle and/or its affiliates.  Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.  Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.  mysql>  

部署php

//修改名字 [root@localhost ~]# hostnamectl set-hostname php [root@localhost ~]# bash [root@php ~]#   //关闭防火墙和selinux [root@php ~]# setenforce 0 [root@php ~]# sed -ri 's/^(SELINUX=).*/1disabled/g' /etc/selinux/config [root@php ~]# systemctl disable --now firewalld  //配置yum源 [root@php ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo [root@php ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo  //安装依赖包 [root@php ~]# yum -y install gcc gcc-c++ glibc automake autoconf libtool make [root@php ~]# yum -y install libxslt-devel libjpeg libjpeg-devel libpng libpng-devel  [root@php ~]# yum -y install freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel  [root@php ~]# yum -y install glibc glibc-devel glib2 bzip2-devel ncurses ncurses-devel  [root@php ~]# yum -y install curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel  [root@php ~]# yum -y install openssl openssl-devel sqlite-devel libcurl-devel libpng-devel libjpeg-devel  [root@php ~]# yum -y install freetype-devel libicu-devel libxslt-devel [root@php ~]# yum -y install systemd-devel [root@php ~]# yum -y install oniguruma oniguruma-devel [root@php ~]# yum -y install gmp-devel [root@php ~]# yum -y install net-snmp-devel [root@php ~]# yum -y install http://mirror.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-2.el8.x86_64.rpm [root@php ~]# yum -y install libsqlite3x-devel libzip-devel  //下载PHP包并解压 [root@php ~]# wget https://www.php.net/distributions/php-8.1.11.tar.gz [root@php ~]# tar xf php-8.1.11.tar.gz  //编译安装 [root@php ~]# cd php-8.1.11 [root@php php-8.1.11]# ./configure --prefix=/usr/local/php8  --with-config-file-path=/usr/local/php8/etc  --enable-fpm  --enable-mysqlnd  --with-mysqli  --with-pdo-mysql  --enable-opcache  --with-pcre-jit  --enable-gd  --with-jpeg  --with-freetype  --with-gettext  --with-curl  --with-openssl  --enable-sockets  --enable-mbstring  --enable-xml  --with-zip  --with-zlib  --with-snmp  --with-mhash  --enable-ftp  --enable-bcmath  --enable-soap  --enable-shmop  --enable-sysvsem  --enable-pcntl  --with-gmp  //显示这个表示没问题了 +--------------------------------------------------------------------+ | License:                                                           | | This software is subject to the PHP License, available in this     | | distribution in the file LICENSE. By continuing this installation  | | process, you are bound by the terms of this license agreement.     | | If you do not agree with the terms of this license, you must abort | | the installation process at this point.                            | +--------------------------------------------------------------------+  Thank you for using PHP.  [root@php php-8.1.11]# make && make install  //配置环境变量 [root@php ~]# echo 'export PATH=/usr/local/php8/bin:$PATH' > /etc/profile.d/php8.sh [root@php ~]# source /etc/profile.d/php8.sh  //配置php-fpm [root@php ~]# cd php-8.1.11 [root@php php-8.1.11]# cp php.ini-production /etc/php.ini cp: overwrite '/etc/php.ini'? y [root@php php-8.1.11]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm [root@php php-8.1.11]# chmod +x /etc/rc.d/init.d/php-fpm [root@php php-8.1.11]# cp /usr/local/php8/etc/php-fpm.conf.default /usr/local/php8/etc/php-fpm.conf [root@php php-8.1.11]# cp /usr/local/php8/etc/php-fpm.d/www.conf.default /usr/local/php8/etc/php-fpm.d/www.conf  //启动php-fpm [root@php ~]# service php-fpm start Starting php-fpm  done [root@php ~]# ss -anlt State        Recv-Q       Send-Q               Local Address:Port               Peer Address:Port       Process        LISTEN       0            128                        0.0.0.0:22                      0.0.0.0:*                         LISTEN       0            128                      127.0.0.1:9000                    0.0.0.0:*                         LISTEN       0            128                           [::]:22                         [::]:*                       

安装后配置

nginx服务器端

//修改配置文件 [root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf #查找index         location / {             root   html;             index  index.php index.html index.htm;		//添加index.php         }          #大概65-71行,取消注释  location ~ .php$ {             root           /var/www/html;			//指向php端index.php文件位置             fastcgi_pass   192.168.111.143:9000;	//ip地址为php服务器地址             fastcgi_index  index.php;             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;		//将/scripts更改为$document_root             include        fastcgi_params;         }  //配置php网页 [root@nginx ~]# vim /usr/local/nginx/html/index.php <?php     phpinfo(); ?>  //重启服务 [root@nginx ~]# systemctl restart nginx 

php端配置

//修改配置文件 [root@php ~]# vim /usr/local/php8/etc/php-fpm.d/www.conf listen = 192.168.111.143:9000		//修改为php本机IP  listen.allowed_clients = 192.168.111.141	//允许指定ip访问  //在php端上配置网站 [root@php ~]# mkdir -p /var/www/html [root@php ~]# vim /var/www/html/index.php <?php     phpinfo(); ?>  //重启php-fpm服务 [root@php ~]# service php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm  done [root@php ~]# ss -anlt State        Recv-Q       Send-Q               Local Address:Port               Peer Address:Port       Process        LISTEN       0            128                        0.0.0.0:22                      0.0.0.0:*                         LISTEN       0            128                192.168.111.143:9000                    0.0.0.0:*                         LISTEN       0            128                           [::]:22                         [::]:*                         

浏览器访问

分离部署LNMP架构