nginx做负载均衡服务器,配置动静分离
nginx做负载均衡服务器,配置动静分离
目录
部署LNMP(nginx1.22+mysql8.0+php8.1)
部署LAMP(httpd2.4+mysql8.0+php8.1)
要求nginx和php使⽤编译安装最后要通过访问nginx负载均衡服务器的IP看到动静分离的效果
环境说明:
系统 | ip | 主机名 | 服务 |
---|---|---|---|
centos8 | 192.168.222.250 | RS1 | LNMP,动态资源,静态资源 |
centos8 | 192.168.222.137 | RS2 | LAMP,静态资源,动态资源 |
centos8 | 192.168.222.139 | node1 | nginx,负载均衡服务器 |
关闭防火墙
RS1
[root@localhost ~]# hostnamectl set-hostname RS1
[root@localhost ~]# bash
[root@RS1 ~]# systemctl stop firewalld.service
[root@RS1 ~]# sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config
[root@RS1 ~]# setenforce 0
[root@RS1 ~]# systemctl disable --now firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
RS2:
[root@localhost ~]# hostnamectl set-hostname RS2
[root@localhost ~]# bash
[root@RS2 ~]# systemctl stop firewalld.service
[root@RS2 ~]# sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config
[root@RS2 ~]# setenforce 0
[root@RS2 ~]# systemctl disable --now firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
node1:
[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# bash
[root@node1 ~]# systemctl stop firewalld.service
[root@node1 ~]# sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config
[root@node1 ~]# setenforce 0
[root@node1 ~]# systemctl disable --now firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
部署LNMP
源码安装nginx
[root@RS1 ~]# wget https://nginx.org/download/nginx-1.22.0.tar.gz
//安装nginx
[root@RS1 ~]# ls
anaconda-ks.cfg nginx-1.22.0.tar.gz
[root@RS1 ~]# useradd -r -M -s /sbin/nologin nginx
//创建用户
[root@RS1 ~]# dnf -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make vim
//安装依赖包
[root@RS1 ~]# mkdir -p /var/log/nginx //创建日志存放目录
[root@RS1 ~]# chown -R nginx.nginx /var/log/nginx
[root@RS1 ~]# ll -d /var/log/nginx/
drwxr-xr-x. 2 nginx nginx 6 Oct 19 14:47 /var/log/nginx/
[root@RS1 ~]# tar xf nginx-1.22.0.tar.gz //解压
[root@RS1 ~]# cd nginx-1.22.0/
[root@RS1 nginx-1.22.0]# ./configure \ //编译
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log
[root@RS1 nginx-1.22.0]# make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install //安装
[root@RS1 nginx-1.22.0]# cd
[root@RS1 ~]# echo "export PATH=$PATH:/usr/local/nginx/sbin" > /etc/profile.d/nginx.sh //配置环境变量
[root@RS1 ~]# source /etc/profile.d/nginx.sh //使其生效
[root@RS1 ~]# cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/nginx.service //将其加入systemd服务中
[root@RS1 ~]# vim /usr/lib/systemd/system/nginx.service
[root@RS1 ~]# cat /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
[root@RS1 ~]# systemctl daemon-reload //加载一下配置
[root@RS1 ~]# systemctl enable --now nginx.service
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
[root@RS1 ~]# ss -antl //查看端口
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@RS1 ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz //下载安装包
[root@RS1 ~]# ls
anaconda-ks.cfg mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz nginx-1.22.0 nginx-1.22.0.tar.gz
[root@RS1 ~]# dnf -y install ncurses-devel openssl-devel openssl cmake mariadb-devel ncurses-compat-lib //安装依赖包
[root@RS1 ~]# useradd -r -M -s /sbin/nologin mysql //创建用户
[root@RS1 ~]# tar xf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz -C /usr/local/ //解压
[root@RS1 ~]# cd /usr/local/
[root@RS1 local]# ls
bin games lib libexec nginx share
etc include lib64 mysql-8.0.30-linux-glibc2.12-x86_64 sbin src
[root@RS1 local]# mv mysql-8.0.30-linux-glibc2.12-x86_64 mysql
[root@RS1 local]# chown -R mysql.mysql mysql //修改属组
[root@RS1 local]# ll -d mysql/
drwxr-xr-x. 9 mysql mysql 129 Oct 19 15:22 mysql/
[root@RS1 local]# ln -s /usr/local/mysql/include /usr/include/mysql //做头文件
[root@RS1 local]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf //配置库文件
[root@RS1 local]# vim /etc/man_db.conf //配置man文档
MANDATORY_MANPATH /usr/man
MANDATORY_MANPATH /usr/share/man
MANDATORY_MANPATH /usr/local/share/man
MANDATORY_MANPATH /usr/local/mysql/man //添加
[root@RS1 local]# cd
[root@RS1 ~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh //配置环境变量
[root@RS1 ~]# source /etc/profile.d/mysql.sh
[root@RS1 ~]# which mysql //查找一下mysql
/usr/local/mysql/bin/mysql
[root@RS1 ~]# mkdir -p /opt/data //建立数据存放目录
[root@RS1 ~]# chown -R mysql.mysql /opt/data/
[root@RS1 ~]# mysqld --initialize --user mysql --datadir /opt/data //初始化数据库
2022-10-19T07:31:43.959369Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.30) initializing of server in progress as process 170967
2022-10-19T07:31:43.974364Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-10-19T07:31:44.695177Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-10-19T07:31:45.926693Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: FBjyVRqnF6%;
[root@RS1 ~]# echo 'FBjyVRqnF6%;' > password //提前保存临时密码
[root@RS1 ~]# cat password
FBjyVRqnF6%;
[root@RS1 ~]# rpm -qa |grep mariadb //查找mariadb的数据库
mariadb-connector-c-config-3.1.11-2.el8_3.noarch
mariadb-connector-c-3.1.11-2.el8_3.x86_64
mariadb-connector-c-devel-3.1.11-2.el8_3.x86_64
mariadb-devel-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
[root@RS1 ~]# dnf -y remove mariadb* //要卸载掉mariadb数据库不然到时候和mysql数据库发生冲突
[root@RS1 ~]# rpm -qa |grep mariadb //再次查看是否还有
[root@RS1 ~]# vim /etc/my.cnf //编写配置文件
[root@RS1 ~]# cat /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
[root@RS1 support-files]# cp mysql.server /etc/init.d/mysqld
[root@RS1 support-files]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql //数据库存放位置
datadir=/opt/data //数据存放位置
[root@RS1 support-files]# chmod +x /etc/init.d/mysqld
//赋予执行权限
[root@RS1 support-files]# cd
[root@RS1 ~]# cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/mysqld.service //将其添加到systemd服务中
[root@RS1 ~]# vim /usr/lib/systemd/system/mysqld.service
[root@RS1 ~]# cat /usr/lib/systemd/system/mysqld.service
[Unit]
Description=mysqld 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@RS1 ~]# systemctl daemon-reload //重新加载配置
[root@RS1 ~]# systemctl enable --now mysqld.service
[root@RS1 ~]# ss -antl //查看端口
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 70 *:33060 *:*
LISTEN 0 128 *:3306 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@RS1 ~]# cat password //查看密码
FBjyVRqnF6%;
[root@RS1 ~]# mysql -uroot -p'FBjyVRqnF6%;' //使用临时密码登录
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 9
Server version: 8.0.30
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> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.01 sec) //修改密码
mysql> exit
Bye
[root@RS1 ~]# mysql -uroot -p'123456' //测试
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 10
Server version: 8.0.30 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> exit
Bye
源码安装php
[root@RS1 ~]# wget https://www.php.net/distributions/php-8.1.11.tar.xz //下载安装包
[root@RS1 ~]# ls
anaconda-ks.cfg nginx-1.22.0 password
mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz nginx-1.22.0.tar.gz php-8.1.11.tar.xz
[root@RS1 ~]# vim /etc/hosts //可以提前做一个映射,防止访问不了github
[root@RS1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
20.205.243.166 github.com //添加
[root@RS1 ~]# yum -y install autoconf freetype gd libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel net-snmp-devel libjpeg-devel php-ldap openldap-devel openldap-clients freetype-devel gmp-devel libzip libzip-devel sqlite-devel readline-devel
[root@RS1 ~]# yum -y install autoconf automake libtool
[root@RS1 ~]# wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
[root@RS1 ~]# tar xf oniguruma-6.9.4.tar.gz && cd oniguruma-6.9.4
[root@RS1 oniguruma-6.9.4]# ./autogen.sh && ./configure --prefix=/usr
[root@RS1 oniguruma-6.9.4]# make && make install
[root@RS1 oniguruma-6.9.4]# cd
[root@RS1 ~]# tar xf php-8.1.11.tar.xz
[root@RS1 ~]# cd php-8.1.11/
[root@RS1 php-8.1.11]# ./configure --prefix=/usr/local/php8 \
--with-config-file-path=/etc \
--enable-fpm \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-soap \
--with-openssl \
--enable-bcmath \
--with-iconv \
--with-bz2 \
--enable-calendar \
--with-curl \
--enable-exif \
--enable-ftp \
--enable-gd \
--with-jpeg \
--with-zlib-dir \
--with-freetype \
--with-gettext \
--enable-mbstring \
--enable-pdo \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-readline \
--enable-shmop \
--enable-simplexml \
--enable-sockets \
--with-zip \
--enable-mysqlnd-compression-support \
--with-pear \
--enable-pcntl \
--enable-posix
...
+--------------------------------------------------------------------+
| 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@RS1 php-8.1.11]# make && make install
//安装
[root@RS1 php8]# echo 'export PATH=/usr/local/php8/bin:/usr/local/php8/:sbin:$PATH' > /etc/profile.d/php8.sh //配置环境变量
[root@RS1 php8]# source /etc/profile.d/php8.sh
[root@RS1 php8]# ln -s /usr/local/php8/include /usr/include/php
[root@RS1 php8]# ll -d /usr/include/php
lrwxrwxrwx. 1 root root 23 Oct 19 16:46 /usr/include/php -> /usr/local/php8/include //做头文件
[root@RS1 php8]# echo '/usr/local/php8/lib' > /etc/ld.so.conf.d/php.conf //配置lib库文件
[root@RS1 php8]# ldconfig //使配置生效
[root@RS1 php8]# cd
[root@RS1 ~]# php -v //查看版本
PHP 8.1.11 (cli) (built: Oct 19 2022 16:41:51) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.11, Copyright (c) Zend Technologies
[root@RS1 ~]# cd php-8.1.11/
[root@RS1 php-8.1.11]# ls
CODING_STANDARDS.md README.md buildconf include sapi
CONTRIBUTING.md TSRM buildconf.bat libs scripts
EXTENSIONS UPGRADING config.log libtool tests
LICENSE UPGRADING.INTERNALS config.nice main travis
Makefile Zend config.status modules win32
Makefile.fragments appveyor configure pear
Makefile.objects azure configure.ac php.ini-development
NEWS azure-pipelines.yml docs php.ini-production
README.REDIST.BINS build ext run-tests.php
[root@RS1 php-8.1.11]# cp php.ini-production /etc/php.ini
cp: overwrite '/etc/php.ini'? y
[root@RS1 php-8.1.11]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@RS1 php-8.1.11]# chmod +x /etc/rc.d/init.d/php-fpm
[root@RS1 php-8.1.11]# ll /etc/rc.d/init.d/php-fpm
-rwxr-xr-x. 1 root root 2402 Oct 19 16:54 /etc/rc.d/init.d/php-fpm
[root@RS1 php-8.1.11]# pwd
/root/php-8.1.11
[root@RS1 php-8.1.11]# cd /usr/local/php7/etc/
[root@RS1 php-8.1.11]# ls
[root@RS1 etc]# ls
pear.conf php-fpm.conf php-fpm.conf.default php-fpm.d
[root@RS1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@RS1 etc]# cd php-fpm.d/
[root@RS1 php-fpm.d]# ls
www.conf.default
[root@RS1 php-fpm.d]# cp www.conf.default www.conf
[root@RS1 php-fpm.d]# ls
www.conf www.conf.default
[root@RS1 php-fpm.d]# cd
[root@RS1 ~]# cd /etc/init.d
[root@RS1 init.d]# ls
README functions mysqld php-fpm
[root@RS1 init.d]# service php-fpm start //开启
Starting php-fpm done
[root@RS1 init.d]# service php-fpm stop //关闭
Gracefully shutting down php-fpm . done
[root@RS1 init.d]# service php-fpm start
Starting php-fpm done
[root@RS1 init.d]# ss -antl //查看端口
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 127.0.0.1:9000 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 70 *:33060 *:*
LISTEN 0 128 *:3306 *:*
配置nginx
[root@RS1 init.d]# cd /usr/local/nginx/conf/
[root@RS1 conf]# ls
fastcgi.conf koi-utf nginx.conf uwsgi_params
fastcgi.conf.default koi-win nginx.conf.default uwsgi_params.default
fastcgi_params mime.types scgi_params win-utf
fastcgi_params.default mime.types.default scgi_params.default
[root@RS1 conf]# vim nginx.conf
...
location / {
root html;
index index.php ;
}
[root@RS1 ~]# systemctl restart nginx
[root@RS1 ~]# ss -antl
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 127.0.0.1:9000 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 70 *:33060 *:*
LISTEN 0 128 *:3306 *:*
...
下面内容需要取消注释然后修改
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
[root@RS1 ~]# cd
[root@RS1 ~]# cd /usr/local/nginx/html/
[root@RS1 html]# vim index.php //编辑访问网站
[root@RS1 html]# cat index.php
<?php
phpinfo();
?>
[root@RS1 html]# service php-fpm stop
Gracefully shutting down php-fpm . done
[root@RS1 html]# service php-fpm start
Starting php-fpm done
[root@RS1 ~]# ss -antl
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 127.0.0.1:9000 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 70 *:33060 *:*
LISTEN 0 128 *:3306 *:*
访问:
配置虚拟主机用于存放静态文件
[root@RS1 ~]# vim /usr/local/nginx/conf/nginx.conf
#gzip on;
server {
listen 82;
root html/tushanbu;
index index.html;
}
部署LAMP
源码安装httpd
[root@RS2 ~]# dnf groups mark install 'Development Tools' -y
//安装开发工具包
[root@RS2 ~]# dnf -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ wget vim make
//安装依赖包
[root@RS2 ~]# useradd -r -M -s /sbin/nologin apache
//创建用户
[root@RS2 ~]# wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz https://downloads.apache.org/httpd/httpd-2.4.54.tar.gz
//下载依赖包
[root@RS2 ~]# ls
anaconda-ks.cfg apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz
[root@RS2 ~]# tar -xf apr-1.7.0.tar.gz //解压
[root@RS2 ~]# tar -xf apr-util-1.6.1.tar.gz
[root@RS2 ~]# tar -xf httpd-2.4.54.tar.gz
[root@RS2 ~]# ls
anaconda-ks.cfg apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz
apr-1.7.0 apr-util-1.6.1 httpd-2.4.54
[root@RS2 ~]# cd apr-1.7.0/
[root@RS2 apr-1.7.0]# ls
CHANGES README apr.pc.in config.layout file_io locks random time
CMakeLists.txt README.cmake apr.spec configure helpers memory shmem tools
LICENSE apr-config.in atomic configure.in include misc strings user
Makefile.in apr.dep build docs libapr.dep mmap support
Makefile.win apr.dsp build-outputs.mk dso libapr.dsp network_io tables
NOTICE apr.dsw build.conf emacs-mode libapr.mak passwd test
NWGNUmakefile apr.mak buildconf encoding libapr.rc poll threadproc
[root@RS2 apr-1.7.0]# vim configure
$RM "$cfgfile" //删除或者注释掉这个
[root@RS2 apr-1.7.0]# ./configure --prefix=/usr/local/apr //编译
[root@RS2 apr-1.7.0]# make && make install //安装
[root@RS2 apr-1.7.0]# cd ../apr-util-1.6.1/
[root@RS2 apr-util-1.6.1]# ls
CHANGES README.FREETDS apu-config.in configure.in include redis
CMakeLists.txt README.cmake buckets crypto ldap renames_pending
LICENSE apr-util.pc.in build dbd libaprutil.dep strmatch
Makefile.in apr-util.spec build-outputs.mk dbm libaprutil.dsp test
Makefile.win aprutil.dep build.conf docs libaprutil.mak uri
NOTICE aprutil.dsp buildconf encoding libaprutil.rc xlate
NWGNUmakefile aprutil.dsw config.layout export_vars.sh.in memcache xml
README aprutil.mak configure hooks misc
[root@RS2 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr //编译
[root@RS2 apr-util-1.6.1]# make && make install //安装
[root@RS2 apr-util-1.6.1]# cd ../httpd-2.4.54/
[root@RS2 httpd-2.4.54]# ls
ABOUT_APACHE INSTALL NWGNUmakefile acinclude.m4 configure httpd.spec server
Apache-apr2.dsw InstallBin.dsp README ap.d configure.in include srclib
Apache.dsw LAYOUT README.CHANGES apache_probes.d docs libhttpd.dep support
BuildAll.dsp LICENSE README.cmake build emacs-style libhttpd.dsp test
BuildBin.dsp Makefile.in README.platforms buildconf httpd.dep libhttpd.mak
CHANGES Makefile.win ROADMAP changes-entries httpd.dsp modules
CMakeLists.txt NOTICE VERSIONING config.layout httpd.mak os
[root@RS2 httpd-2.4.54]# ./configure --prefix=/usr/local/apache \
> --enable-so \
> --enable-ssl \
> --enable-cgi \
> --enable-rewrite \
> --with-zlib \
> --with-pcre \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr-util/ \
> --enable-modules=most \
> --enable-mpms-shared=all \
> --with-mpm=prefork
[root@RS2 httpd-2.4.54]# make && make install //安装
[root@RS2 httpd-2.4.54]# cd
[root@RS2 ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh //配置环境变量
[root@RS2 ~]# source /etc/profile.d/httpd.sh
[root@RS2 ~]# ln -s /usr/local/apache/include /usr/include/apache //做头文件
[root@RS2 ~]# ll -d /usr/include/apache
lrwxrwxrwx. 1 root root 25 Oct 19 23:21 /usr/include/apache -> /usr/local/apache/include
[root@RS2 ~]# vim /etc/man_db.conf //配置man文档
MANDATORY_MANPATH /usr/man
MANDATORY_MANPATH /usr/share/man
MANDATORY_MANPATH /usr/local/share/man
MANDATORY_MANPATH /usr/local/apache/man //添加
[root@RS2 ~]# cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/httpd.service
[root@RS2 ~]# vim /usr/lib/systemd/system/httpd.service
[root@RS2 ~]# cat /usr/lib/systemd/system/httpd.service
[Unit]
Description=httpd server daemon
Documentation=man:httpd(5)
After=network.target sshd-keygen.target
[Service]
Type=forking
ExecStart=/usr/local/apache/bin/apachectl start
ExecStop=/usr/local/apache/bin/apachectl stop
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
[root@RS2 ~]# systemctl daemon-reload //重新加载配置
[root@RS2 ~]# systemctl enable --now httpd.service
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@RS2 ~]# ss -antl //查看端口
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 [::]:22 [::]:*
LISTEN 0 128 *:80 *:*
访问:
二进制安装mysql
[root@RS2 ~]# dnf -y install ncurses-devel openssl-devel openssl cmake mariadb-devel ncurses-compat-libs
//安装依赖包
[root@RS2 ~]# useradd -r -M -s /sbin/nologin mysql
//创建用户
[root@RS2 ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
//下载安装包
[root@RS2 ~]# ls
anaconda-ks.cfg apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz
apr-1.7.0 apr-util-1.6.1 httpd-2.4.54 mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
[root@RS2 ~]# tar xf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz -C /usr/local/ //解压
[root@RS2 ~]# cd /usr/local/
[root@RS2 local]# ls
apache apr-util etc include lib64 mysql-8.0.30-linux-glibc2.12-x86_64 share
apr bin games lib libexec sbin src
[root@RS2 local]# mv mysql-8.0.30-linux-glibc2.12-x86_64 mysql
[root@RS2 local]# chown -R mysql.mysql mysql
[root@RS2 local]# ll
total 0
drwxr-xr-x. 14 root root 164 Oct 19 23:20 apache
drwxr-xr-x. 6 root root 58 Oct 19 23:09 apr
drwxr-xr-x. 5 root root 43 Oct 19 23:13 apr-util
drwxr-xr-x. 2 root root 6 May 19 2020 bin
drwxr-xr-x. 2 root root 6 May 19 2020 etc
drwxr-xr-x. 2 root root 6 May 19 2020 games
drwxr-xr-x. 2 root root 6 May 19 2020 include
drwxr-xr-x. 2 root root 6 May 19 2020 lib
drwxr-xr-x. 3 root root 17 Sep 26 23:27 lib64
drwxr-xr-x. 2 root root 6 May 19 2020 libexec
drwxr-xr-x. 9 mysql mysql 129 Oct 19 23:40 mysql
drwxr-xr-x. 2 root root 6 May 19 2020 sbin
drwxr-xr-x. 5 root root 49 Sep 26 23:27 share
drwxr-xr-x. 2 root root 6 May 19 2020 src
[root@RS2 local]# ln -s /usr/local/mysql/include /usr/include/mysql //做头文件
[root@RS2 local]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf //配置lib库文件
[root@RS2 local]# vim /etc/man_db.conf //配置man文档
MANDATORY_MANPATH /usr/man
MANDATORY_MANPATH /usr/share/man
MANDATORY_MANPATH /usr/local/share/man
MANDATORY_MANPATH /usr/local/apache/man
MANDATORY_MANPATH /usr/local/mysql/man //添加
[root@RS2 local]# cd
[root@RS2 ~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh //配置环境变量
[root@RS2 ~]# source /etc/profile.d/mysql.sh
[root@RS2 ~]# which mysql //查找是否有mysql
/usr/local/mysql/bin/mysql
[root@RS2 ~]# mkdir -p /opt/data //建立数据存放目录
[root@RS2 ~]# chown -R mysql.mysql /opt/data/
[root@RS2 ~]# mysqld --initialize --user mysql --datadir /opt/data //初始化数据库
2022-10-19T15:46:08.860840Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.30) initializing of server in progress as process 192456
2022-10-19T15:46:08.871399Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-10-19T15:46:09.366282Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-10-19T15:46:10.866688Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: GtK_Q;t*l7s7
[root@RS2 ~]# echo 'GtK_Q;t*l7s7' >passwd //将临时密码保存到这个文件里面
[root@RS2 ~]# cat passwd
GtK_Q;t*l7s7
[root@RS2 ~]# rpm -qa |grep mariadb //查找mariadb的数据库
mariadb-devel-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
mariadb-connector-c-3.1.11-2.el8_3.x86_64
mariadb-connector-c-devel-3.1.11-2.el8_3.x86_64
mariadb-connector-c-config-3.1.11-2.el8_3.noarch
[root@RS2 ~]# dnf -y remove mariadb* //要卸载掉mariadb数据库不然到时候和mysql数据库发生冲突
[root@RS2 ~]# rpm -qa |grep mariadb //查看是否有存留
[root@RS2 ~]# vim /etc/my.cnf //配置文件
[root@RS2 ~]# cat /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
[root@RS2 ~]# cd /usr/local/mysql/support-files/
[root@RS2 support-files]# ls
mysql-log-rotate mysql.server mysqld_multi.server
[root@RS2 support-files]# cp mysql.server /etc/init.d/mysqld
[root@RS2 support-files]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql //数据库存放位置
datadir=/opt/data //数据存放位置
[root@RS2 support-files]# chmod +x /etc/init.d/mysqld
[root@RS2 support-files]# cd
[root@RS2 ~]# cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/mysqld.service
[root@RS2 ~]# vim /usr/lib/systemd/system/mysqld.service
[root@RS2 ~]# cat /usr/lib/systemd/system/mysqld.service
[Unit]
Description=mysqld 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@RS2 ~]# systemctl daemon-reload //重新加载配置
[root@RS2 ~]# systemctl enable --now mysqld.service
[root@RS2 ~]# ss -antl
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 [::]:22 [::]:*
LISTEN 0 70 *:33060 *:*
LISTEN 0 128 *:3306 *:*
LISTEN 0 128 *:80 *:*
[root@RS2 ~]# cat passwd
GtK_Q;t*l7s7
[root@RS2 ~]# mysql -uroot -p'GtK_Q;t*l7s7' //使用临时密码登录
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 8
Server version: 8.0.30
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> ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '123456'; //修改密码
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
[root@RS2 ~]# mysql -uroot -p'123456' //测试
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 9
Server version: 8.0.30 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> exit
Bye
源码安装php
[root@RS2 ~]# wget https://www.php.net/distributions/php-8.1.11.tar.xz //下载包
[root@RS2 ~]# ls
anaconda-ks.cfg apr-util-1.6.1 httpd-2.4.54.tar.gz php-8.1.11.tar.xz
apr-1.7.0 apr-util-1.6.1.tar.gz mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
apr-1.7.0.tar.gz httpd-2.4.54 passwd
[root@RS2 ~]# dnf -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel php-mysqlnd sqlite* libzip* //安装依赖包
[root@RS2 ~]# vim /etc/hosts //可以提前做一个映射,防止访问不了github
[root@RS2 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
20.205.243.166 github.com //添加
[root@RS2 ~]# tar xf php-8.1.11.tar.xz //解压
[root@RS2 ~]# cd php-8.1.11/
[root@RS2 php-8.1.11]# wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O ./oniguruma-6.9.4.tar.gz
[root@RS2 php-8.1.11]# tar zxf ./oniguruma-6.9.4.tar.gz
[root@RS2 php-8.1.11]# cd oniguruma-6.9.4
[root@RS2 oniguruma-6.9.4]# ./autogen.sh
[root@RS2 oniguruma-6.9.4]# ./configure --prefix=/usr
[root@RS2 oniguruma-6.9.4]# make && make install
[root@RS2 oniguruma-6.9.4]# cd ..
[root@RS2 php-8.1.11]# ./configure --prefix=/usr/local/php8 \
--with-config-file-path=/etc --enable-fpm \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-soap \
--with-openssl \
--enable-bcmath \
--with-iconv \
--with-bz2 \
--enable-calendar \
--with-curl \
--enable-exif \
--enable-ftp \
--enable-gd \
--with-jpeg \
--with-zlib-dir \
--with-freetype \
--with-gettext \
--enable-mbstring \
--enable-pdo \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-readline \
--enable-shmop \
--enable-simplexml \
--enable-sockets \
--with-zip \
--enable-mysqlnd-compression-support \
--with-pear \
--enable-pcntl \
--enable-posix
...
+--------------------------------------------------------------------+
| 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@RS2 php-8.1.11]# make && make install //安装
[root@RS2 php-8.1.11]# echo 'export PATH=/usr/local/php8/bin:$PATH' > /etc/profile.d/php8.sh //配置环境变量
[root@RS2 php-8.1.11]# source /etc/profile.d/php8.sh
[root@RS2 php-8.1.11]# which php
/usr/local/php8/bin/php
[root@RS2 php-8.1.11]# php -v
PHP 8.1.11 (cli) (built: Oct 20 2022 00:44:10) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.11, Copyright (c) Zend Technologies
[root@RS2 php-8.1.11]# cp php.ini-production /etc/php.ini
cp: overwrite '/etc/php.ini'? y
[root@RS2 php-8.1.11]# cd sapi/fpm/
[root@RS2 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
[root@RS2 fpm]# chmod +x /etc/init.d/php-fpm
[root@RS2 fpm]# cd /usr/local/php8/
[root@RS2 php8]# cd etc/
[root@RS2 etc]# cp php-fpm.conf.default php-fpm.conf
[root@RS2 etc]# cd php-fpm.d/
[root@RS2 php-fpm.d]# cp www.conf.default www.conf
[root@RS2 php-fpm.d]# ls
www.conf www.conf.default
[root@RS2 php-fpm.d]# service php-fpm start
Starting php-fpm done
[root@RS2 php-fpm.d]# ss -antl
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 [::]:*
LISTEN 0 70 *:33060 *:*
LISTEN 0 128 *:3306 *:*
LISTEN 0 128 *:80 *:*
[root@RS2 php-fpm.d]# cd
[root@RS2 ~]# chkconfig --add php-fpm //设置开机自启
[root@RS2 ~]# ps -ef |grep php //查看进程
root 453628 1 0 00:52 ? 00:00:00 php-fpm: master process (/usr/local/php8/etc/php-fpm.conf)
nobody 453629 453628 0 00:52 ? 00:00:00 php-fpm: pool www
nobody 453630 453628 0 00:52 ? 00:00:00 php-fpm: pool www
root 457056 42021 0 00:54 pts/0 00:00:00 grep --color=auto php
配置apache
[root@RS2 ~]# cd /usr/local/apache/conf/
[root@RS2 conf]# ls
extra httpd.conf magic mime.types original
[root@RS2 conf]# vim httpd.conf
LoadModule proxy_module modules/mod_proxy.so //取消注释
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so //取消注释
配置虚拟主机
[root@RS2 conf]# mkdir -p /usr/local/apache/htdocs/runtime //创建虚拟主机的存放位置
[root@RS2 conf]# vim /usr/local/apache/htdocs/runtime/index.php //在刚刚创建的这个目录里面写一个网站
[root@RS2 conf]# cat /usr/local/apache/htdocs/runtime/index.php
<?php
phpinfo();
?>
[root@RS2 conf]# cd extra/
[root@RS2 extra]# ls
httpd-autoindex.conf httpd-info.conf httpd-mpm.conf httpd-userdir.conf
httpd-dav.conf httpd-languages.conf httpd-multilang-errordoc.conf httpd-vhosts.conf
httpd-default.conf httpd-manual.conf httpd-ssl.conf proxy-html.conf
[root@RS2 extra]# vim httpd-vhosts.conf
listen 82
<VirtualHost *:82>
DocumentRoot "/usr/local/apache/htdocs/runtime" //主机,网站存放位置
ServerName runtime.example.com //域名
ErrorLog "logs/runtime.example.com-error_log" //错误日志
CustomLog "logs/runtime.example.com-access_log" common //日志
ProxyRequests Off //关闭正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/runtime/$1 //打开反向代理
<Directory "/usr/local/apache/htdocs/runtime"> //存放网站的位置
Options none
AllowOverride none
Require all granted //允许所有人访问
</Directory>
</VirtualHost>
[root@RS2 conf]# vim httpd.conf
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz //在这两行下面添加
AddType application/x-httpd-php .php //添加
AddType application/x-httpd-php-source .phps //添加
Include conf/extra/httpd-vhosts.conf //取消注释,因为刚刚写了虚拟主机的文件
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
//在index.html前面添加index.php,表示我默认去访问index.php页面
[root@RS2 conf]# systemctl restart httpd.service //重启服务
[root@RS2 conf]# systemctl status httpd.service //查看状态
● httpd.service - httpd server daemon
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2022-10-20 01:08:26 CST; 9s ago
Docs: man:httpd(5)
Process: 477285 ExecStop=/usr/local/apache/bin/apachectl stop (code=exited, status=1/FAILURE)
Process: 483228 ExecStart=/usr/local/apache/bin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 483231 (httpd)
Tasks: 6 (limit: 12221)
Memory: 6.1M
CGroup: /system.slice/httpd.service
├─483231 /usr/local/apache/bin/httpd -k start
├─483232 /usr/local/apache/bin/httpd -k start
├─483233 /usr/local/apache/bin/httpd -k start
├─483234 /usr/local/apache/bin/httpd -k start
├─483235 /usr/local/apache/bin/httpd -k start
└─483236 /usr/local/apache/bin/httpd -k start
Oct 20 01:08:26 RS2 systemd[1]: Starting httpd server daemon...
Oct 20 01:08:26 RS2 apachectl[483228]: AH00558: httpd: Could not reliably determine the server's fully qu>
Oct 20 01:08:26 RS2 systemd[1]: Started httpd server daemon.
访问:
源码安装nginx
[root@node1 ~]# wget https://nginx.org/download/nginx-1.22.0.tar.gz //安装包
[root@node1 ~]# ls
anaconda-ks.cfg nginx-1.22.0.tar.gz
[root@node1 ~]# useradd -rMs /sbin/nologin nginx
//创建用户
[root@node1 ~]# dnf -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make vim
//安装依赖包
[root@node1 ~]# mkdir -p /var/log/nginx //创建日志存放目录
[root@node1 ~]# chown -R nginx.nginx /var/log/nginx
[root@node1 ~]# tar xf nginx-1.22.0.tar.gz //解压
[root@node1 ~]# cd nginx-1.22.0/
[root@node1 nginx-1.22.0]# ./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@node1 nginx-1.22.0]# make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install //安装
[root@node1 ~]# echo "export PATH=$PATH:/usr/local/nginx/sbin" > /etc/profile.d/nginx.sh //配置环境变量
[root@node1 ~]# source /etc/profile.d/nginx.sh
[root@node1 ~]# cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/nginx.service
[root@node1 ~]# vim /usr/lib/systemd/system/nginx.service
[root@node1 ~]# cat /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
[root@node1 ~]# systemctl daemon-reload //重新加载配置
[root@node1 ~]# systemctl enable --now nginx.service
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
[root@node1 ~]# ss -antl //查看端口
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 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
实现动静分离
[root@node1 conf]# pwd
/usr/local/nginx/conf
[root@node1 conf]# vim nginx.conf
upstream static {
server 192.168.222.250; //lnmp的ip
server 192.168.222.137; //lamp的ip
}
upstream dynamic {
server 192.168.222.250; //lnmp的ip
server 192.168.222.137:82; //lamp的ip
}
location / {
proxy_pass http://static;
}
location / {
proxy_pass http://static; //访问静态资源会自动跳转到进行访问
}
location ~ \.php$ {
proxy_pass http://dynamic; //访问动态资源会自动跳转到进行访问
}
[root@node1 conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@node1 conf]# systemctl restart nginx.service
访问静:
访问动: