- 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 [::]:*
部署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 [::]:*
浏览器访问