三臺虛擬主機搭建lnmp
目錄
- 三臺虛擬主機搭建lnmp
- 部署nginx
- 部署mysql
- 部署php
- 配置nginx
- 配置php
環境說明:
| 主機說明 | ip | 安裝服務 | 系統 |
|---|---|---|---|
| nginx | 192.168.222.137 | nginx | centos7,redhat7/centos8,redhat8 |
| mysql | 192.168.222.138 | mysql | centos7,redhat7/centos8,redhat8 |
| php | 192.168.222.139 | php | centos7,redhat7/centos8,redhat8 |
阿里云官網
nginx官網
此處我使用的是nginx-1.22.0
mysql官網
此處我使用的是mysql-5.7.38
php官網
此處我使用的是php-8.1.11
此處我使用的系統是centos8.5
部署nginx
[root@localhost ~]# hostnamectl set-hostname nginx
[root@localhost ~]# bash
[root@nginx ~]# systemctl stop firewalld.service //關閉防火墻
[root@nginx ~]# sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config
[root@nginx ~]# setenforce 0
[root@nginx ~]# systemctl disable --now firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@nginx ~]# dnf -y install wget
[root@nginx ~]# cd /etc/yum.repos.d/ //配置阿里源
[root@nginx yum.repos.d]#wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@nginx yum.repos.d]#sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@nginx yum.repos.d]# ls
CentOS-Base.repo
[root@nginx yum.repos.d]# cd
[root@nginx ~]# useradd -rMs /sbin/nologin nginx //創建用戶
[root@nginx ~]# dnf -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make vim //安裝依賴包
[root@nginx ~]# mkdir -p /var/log/nginx //創建日志存放目錄
[root@nginx ~]# chown -R nginx.nginx /var/log/nginx
[root@nginx ~]# wget http://nginx.org/download/nginx-1.22.0.tar.gz //下載nginx包
[root@nginx ~]# tar xf nginx-1.22.0.tar.gz //解壓
[root@nginx ~]# ls
anaconda-ks.cfg nginx-1.22.0 nginx-1.22.0.tar.gz
[root@nginx ~]# cd nginx-1.22.0/
[root@nginx nginx-1.22.0]# ls
CHANGES CHANGES.ru LICENSE README auto conf configure contrib html man src
[root@nginx 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@nginx nginx-1.22.0]# make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install //安裝
[root@nginx nginx-1.22.0]# cd
[root@nginx ~]# echo "export PATH=$PATH:/usr/local/nginx/sbin" > /etc/profile.d/nginx.sh //配置環境變數
[root@nginx ~]# source /etc/profile.d/nginx.sh //使其生效
[root@nginx ~]# cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/nginx.service
[root@nginx ~]# vim /usr/lib/systemd/system/nginx.service //將其加入systemd服務中
[root@nginx ~]# 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@nginx ~]# systemctl daemon-reload //加載一下配置
[root@nginx ~]# systemctl enable --now nginx.service
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service. //設定開機自啟
[root@nginx ~]# 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 [::]:*
訪問:

部署mysql
[root@localhost ~]# hostnamectl set-hostname mysql
[root@localhost ~]# bash
[root@mysql ~]# systemctl stop firewalld.service //關閉防火墻
[root@mysql ~]# sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config
[root@mysql ~]# setenforce 0
[root@mysql ~]# systemctl disable --now firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@mysql ~]# dnf -y install wget
[root@mysql ~]# cd /etc/yum.repos.d/ //配置阿里源
[root@mysql yum.repos.d]#wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@mysql yum.repos.d]#sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@mysql yum.repos.d]# ls
CentOS-Base.repo
[root@mysql yum.repos.d]# cd
[root@mysql ~]# useradd -rMs /sbin/nologin mysql //創建用戶
[root@mysql ~]# dnf -y install ncurses-devel openssl-devel openssl cmake mariadb-devel ncurses-compat-libs //安裝依賴包
[root@mysql ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz //下載二進制格式的mysql軟體包
root@mysql ~]# ls
anaconda-ks.cfg 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]# ls
bin etc games include lib lib64 libexec mysql-5.7.38-linux-glibc2.12-x86_64 sbin share src
[root@mysql local]# mv mysql-5.7.38-linux-glibc2.12-x86_64 mysql
//也可以做軟鏈接ln -sv mysql-5.7.38-linux-glibc2.12-x86_64/ mysql
[root@mysql local]# ls
bin etc games include lib lib64 libexec mysql sbin share src
[root@mysql local]# chown -R mysql.mysql mysql //修改目錄/usr/local/mysql的屬主屬組
[root@mysql local]# ll
total 0
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:28 lib64
drwxr-xr-x. 2 root root 6 May 19 2020 libexec
drwxr-xr-x. 9 mysql mysql 129 Oct 11 20:20 mysql
drwxr-xr-x. 2 root root 6 May 19 2020 sbin
drwxr-xr-x. 5 root root 49 Sep 26 23:28 share
drwxr-xr-x. 2 root root 6 May 19 2020 src
[root@mysql local]# ln -s /usr/local/mysql/include /usr/include/mysql //做頭檔案
[root@mysql local]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf //配置庫檔案
[root@mysql 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@mysql local]# cd
[root@mysql ~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh //配置環境變數
[root@mysql ~]# source /etc/profile.d/mysql.sh //使其生效
[root@mysql ~]# which mysql //查找mysql
/usr/local/mysql/bin/mysql
[root@mysql ~]# mkdir -p /opt/data //建立資料存放目錄
[root@mysql ~]# chown -R mysql.mysql /opt/data/
[root@mysql ~]# mysqld --initialize --user mysql --datadir /opt/data
2022-10-11T13:11:47.502588Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-10-11T13:11:47.668270Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-10-11T13:11:47.697202Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-10-11T13:11:47.752786Z 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: 42fa08f1-4966-11ed-ae8c-000c29f68357.
2022-10-11T13:11:47.753548Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2022-10-11T13:11:47.891548Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2022-10-11T13:11:47.891580Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2022-10-11T13:11:47.892159Z 0 [Warning] CA certificate ca.pem is self signed.
2022-10-11T13:11:47.928429Z 1 [Note] A temporary password is generated for root@localhost: yfHMXUl8go*T //臨時密碼
[root@mysql ~]# echo 'yfHMXUl8go*T' > password //將臨時密碼保存到這個檔案里面
[root@mysql ~]# cat password
yfHMXUl8go*T
[root@mysql ~]# rpm -qa |grep mariadb //查找mariadb的資料庫
mariadb-connector-c-config-3.1.11-2.el8_3.noarch
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
[root@mysql ~]# dnf -y remove mariadb* //要卸載掉mariadb資料庫不然到時候和mysql資料庫發生沖突
[root@mysql ~]# rpm -qa |grep mariadb //再次查看是否還有
[root@mysql ~]# vim /etc/my.cnf //撰寫組態檔
[root@mysql ~]# 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@mysql ~]# cd /usr/local/mysql/
[root@mysql mysql]# ls
LICENSE README bin docs include lib man share support-files
[root@mysql mysql]# cd support-files/
[root@mysql support-files]# ls
magic mysql-log-rotate mysql.server mysqld_multi.server
[root@mysql support-files]# file mysql.server
mysql.server: POSIX shell script, ASCII text executable
//是一個腳本檔案
[root@mysql support-files]# cp mysql.server /etc/init.d/mysqld
[root@mysql support-files]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql //資料庫存放位置
datadir=/opt/data //資料存放位置
[root@mysql support-files]# chmod +x /etc/init.d/mysqld
//賦予執行權限
[root@mysql ~]# cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/mysqld.service //將其添加到systemd服務中
[root@mysql ~]# vim /usr/lib/systemd/system/mysqld.service
[root@mysql ~]# 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@mysql ~]# systemctl daemon-reload //加載一下配置
[root@mysql ~]# systemctl enable --now mysqld //設定開機自啟
[root@mysql ~]# ss -antl //查看3306埠
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:111 0.0.0.0:*
LISTEN 0 32 192.168.122.1:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 80 *:3306 *:*
LISTEN 0 128 [::]:111 [::]:*
LISTEN 0 128 [::]:22 [::]:*
[root@mysql ~]# cat passwd //查看密碼
yfHMXUl8go*T
[root@mysql ~]# mysql -uroot -p'yfHMXUl8go*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 -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 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> exit
Bye
部署php
[root@localhost ~]# hostnamectl set-hostname php
[root@localhost ~]# bash
[root@php ~]# systemctl stop firewalld.service //關閉防火墻
[root@php ~]# sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config
[root@php ~]# setenforce 0
[root@php ~]# systemctl disable --now firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@php ~]# dnf -y install wget
[root@php ~]# cd /etc/yum.repos.d/ //配置阿里源
[root@php yum.repos.d]#wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@php yum.repos.d]#sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@php yum.repos.d]# ls
CentOS-Base.repo
[root@php yum.repos.d]# cd
[root@php ~]# dnf -y install epel-release //安裝epel源
[root@php ~]# dnf -y install gcc gcc-c++ make 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 libsqlite3x-devel http://mirror.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-2.el8.x86_64.rpm libzip-devel //安裝依賴包
[root@php ~]# wget https://www.php.net/distributions/php-8.1.11.tar.gz //下載php的包
[root@php ~]# ls
anaconda-ks.cfg php-8.1.11.tar.gz
root@php ~]# tar xf php-8.1.11.tar.gz //解壓
[root@php ~]# ls
anaconda-ks.cfg php-8.1.11 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 php-8.1.11]# cd /usr/local/php8/
[root@php php8]# ls
bin etc include lib php sbin var
[root@php php8]# echo 'export PATH=/usr/local/php8/bin:$PATH' > /etc/profile.d/php8.sh //配置環境變數
[root@php php8]# source /etc/profile.d/php8.sh //使其生效
[root@php php8]# ln -s /usr/local/php8/include /usr/include/php8 //配置頭檔案
[root@php php8]# ll -d /usr/include/php8
lrwxrwxrwx. 1 root root 23 Oct 11 23:07 /usr/include/php8 -> /usr/local/php8/include
root@php php8]# cd
[root@php ~]# cd php-8.1.11/
[root@php 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@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
[root@php php-8.1.11]# cd
[root@php ~]# cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/php-fpm.service //將其加入systemd服務中
[root@php ~]# vim /usr/lib/systemd/system/php-fpm.service
[root@php ~]# cat /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=php-fpm server daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php8/bin/php-fpm start
ExecStop=/usr/local/php8/bin/php-fpm stop
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
[root@php ~]# systemctl daemon-reload //加載組態檔
[root@php ~]# systemctl enable --now php-fpm.service //設定開機自啟
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
[root@php ~]# 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 [::]:*
配置nginx
[root@nginx ~]# cd /usr/local/nginx/
[root@nginx nginx]# ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
[root@nginx nginx]# cd conf/
[root@nginx conf]# ls
fastcgi.conf fastcgi_params koi-utf mime.types nginx.conf scgi_params uwsgi_params win-utf
fastcgi.conf.default fastcgi_params.default koi-win mime.types.default nginx.conf.default scgi_params.default uwsgi_params.default
[root@nginx conf]# vim nginx.conf
location / {
root html;
index index.html index.htm index.php; //添加index.php
}
取消下面的注釋并進行修改:
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
修改:
location ~ \.php$ {
root html; //指向php端index.php檔案位置
fastcgi_pass 192.168.222.139:9000; //監聽php端的9000埠
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; // 將/scripts更改為/usr/local/nginx/html
include fastcgi_params;
[root@nginx conf]# cd
[root@nginx ~]# vim /usr/local/nginx/html/index.php //撰寫php測驗頁面
[root@nginx ~]# cat /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
[root@nginx nginx]# systemctl restart nginx.service //重啟服務
配置php
[root@php ~]# cd /usr/local/php8/etc/php-fpm.d/
[root@php php-fpm.d]# ls
www.conf www.conf.default
[root@php php-fpm.d]# vim www.conf
listen = 192.168.222.139:9000 //php主機ip
listen.allowed_clients = 192.168.222.137 //允許ip訪問
[root@php php-fpm.d]# cd
[root@php ~]# cat > /usr/local/nginx/html/index.php << EOF
//撰寫php端網站
> <?php
> phpinfo();
> ?>
> EOF
[root@php ~]# systemctl restart php-fpm.service //重啟服務
[root@php ~]# 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 192.168.222.139:9000 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
訪問:

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/513734.html
標籤:Linux
