lnmp 架构
LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP 、 POP3、SMTP 代理服务器。
Mysql是一个小型关系型数据库管理系统
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统
准备环境,关闭防火墙,selinux,配好yum源
部署nginx
# 下载nginx [root@localhost ~]# cd /usr/src/ [root@localhost src]# wget https://nginx.org/download/nginx-1.22.0.tar.gz # 下载 依赖包 [root@localhost src]# dnf -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make [root@localhost ~]# yum -y groups mark install 'Development Tools' #包组可以下也可以不下 # 创建系统用户 [root@localhost src]# useradd -r -M -s /sbin/nologin nginx [root@localhost src]# id nginx uid=994(nginx) gid=991(nginx) groups=991(nginx) # 创建日志存放目录 [root@localhost ~]# mkdir -p /var/log/nginx [root@localhost ~]# chown -R nginx.nginx /var/log/nginx/ [root@localhost ~]# ll -d /var/log/nginx/ drwxr-xr-x 2 nginx nginx 6 Sep 4 06:40 /var/log/nginx/ # 编译安装 [root@localhost ~]# cd /usr/src/ [root@localhost src]# ls debug kernels nginx-1.22.0.tar.gz [root@localhost src]# tar xf nginx-1.22.0.tar.gz # 解压 [root@localhost src]# ls debug kernels nginx-1.22.0 nginx-1.22.0.tar.gz [root@localhost src]# cd nginx-1.22.0 #进到解压目录 [root@localhost 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@localhost nginx-1.22.0]# nproc # 查看核心数 1 [root@localhost nginx-1.22.0]# make && make install #设置环境变量 [root@localhost nginx-1.22.0]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh #设置环境变量 [root@localhost nginx-1.22.0]# source /etc/profile.d/nginx.sh # 读一下这个文件 [root@localhost nginx-1.22.0]# which nginx #此时就可以找到它了 /usr/local/nginx/sbin/nginx # 启动 nginx [root@localhost nginx-1.22.0]# nginx [root@localhost nginx-1.22.0]# 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 [::]:* //服务控制方式,使用nginx命令 -t //检查配置文件语法 -v //输出nginx的版本 -c //指定配置文件的路径 -s //发送服务控制信号,可选值有{stop|quit|reopen|reload} [root@localhost nginx-1.22.0]# vim /usr/local/nginx/conf/nginx.conf # 进到主配置文件 #取消注释,开启反向代理 location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name; #此行修改 include fastcgi_params; } # 配置 PHP 网页 [root@localhost nginx-1.22.0]# cd /usr/local/nginx/html/ [root@localhost html]# ls 50x.html index.html [root@localhost html]# vim index.php <?php phpinfo(); ?> #停掉以后在重新启动 [root@localhost html]# nginx -s stop;nginx [root@localhost html]# nginx -s reload [root@localhost html]# 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 [::] # 设置开机自启 [root@localhost html]# cd /usr/lib/systemd/system [root@localhost system]# cp sshd.service nginxd.service [root@localhost system]# vim nginxd.service [Unit] Description=nginx server daemon After=network.target sshd-keygen.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@localhost system]# systemctl daemon-reload #读取一下 [root@localhost ~]# systemctl enable --now nginxd # 设置开机自启 [root@localhost ~]# systemctl status nginxd ● nginxd.service - nginx server daemon Loaded: loaded (/usr/lib/systemd/system/nginxd.service; enabled; vendor preset: disable> Active: active (running) since Sun 2022-09-04 07:14:01 CST; 11s ago Process: 26939 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS) Main PID: 26940 (nginx) Tasks: 2 (limit: 11202) Memory: 2.5M CGroup: /system.slice/nginxd.service ├─26940 nginx: master process /usr/local/nginx/sbin/nginx └─26941 nginx: worker process
部署mysql
# 安装依赖包 [root@localhost ~]# dnf -y install ncurses-compat-libs openssl-devel openssl cmake mariadb-devel # 创建mysql系统用户 [root@localhost ~]# useradd -r -M -s /sbin/nologin mysql [root@localhost ~]# id mysql uid=993(mysql) gid=990(mysql) groups=990(mysql) # 把提前下载好的包拖进来 [root@localhost ~]# ls anaconda-ks.cfg mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz [root@localhost ~]# mv mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz /usr/src/ [root@localhost ~]# cd /usr/src/ [root@localhost src]# ls debug mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz nginx-1.22.0.tar.gz kernels nginx-1.22.0 # 解压软件至/usr/local/ [root@localhost src]# tar xf mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz -C /usr/local/ [root@localhost src]# cd /usr/local/ [root@localhost local]# ls bin games lib libexec nginx share etc include lib64 mysql-8.0.12-linux-glibc2.12-x86_64 sbin src [root@localhost local]# mv mysql-8.0.12-linux-glibc2.12-x86_64 mysql [root@localhost local]# ll -d mysql/ drwxr-xr-x 9 root root 129 Sep 4 07:29 mysql/ # 修改目录/usr/local/mysql的属主属组 [root@localhost local]# chown -R mysql.mysql mysql [root@localhost local]# ll -d mysql/ drwxr-xr-x 9 mysql mysql 129 Sep 4 07:29 mysql/ # 添加环境变量 [root@localhost local]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh [root@localhost local]# source /etc/profile.d/mysql.sh #读取一下这文件,也可以用. /etc/profile.d/mysql.sh的方式 [root@localhost local]# which mysqld /usr/local/mysql/bin/mysqld # 配置include [root@localhost local]# ln -s /usr/local/mysql/include /usr/include/mysql # 配置 man 文档 [root@localhost 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@localhost local]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf [root@localhost local]# ldconfig #让它生效 # 建立数据存放目录 [root@localhost local]# mkdir -p /opt/data [root@localhost local]# cd [root@localhost ~]# chown -R mysql.mysql /opt/data/ #更改属主属组为mysql [root@localhost ~]# ll /opt/data/ -d drwxr-xr-x 2 mysql mysql 6 Sep 4 07:38 /opt/data/ # 初始化数据库 [root@localhost ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/opt/data/ 2022-09-03T23:40:05.023692Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.12) initializing of server in progress as process 27491 2022-09-03T23:40:05.833844Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: sdWqHF.lP8!u 2022-09-03T23:40:06.304126Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.12) initializing of server has completed 零时密码:sdWqHF.lP8!u # 生成配置文件 [root@localhost ~]# 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 # 配置服务启动脚本 [root@localhost ~]# cd /usr/local/mysql/support-files/ [root@localhost support-files]# cp mysql.server /etc/init.d/mysqld [root@localhost support-files]# ll /etc/init.d/mysqld -rwxr-xr-x 1 root root 10576 Sep 4 07:42 /etc/init.d/mysqld # 设置所有者所属组为mysql [root@localhost support-files]# chown -R mysql.mysql /etc/init.d/mysqld [root@localhost support-files]# ll /etc/init.d/mysqld -rwxr-xr-x 1 mysql mysql 10576 Sep 4 07:42 /etc/init.d/mysqld # [root@localhost ~]# vim /etc/init.d/mysqld basedir=/usr/local/mysql datadir=/opt/data #设置开机自启 [root@localhost ~]# chkconfig --add mysqld #添加mysqld要开机自启 [root@localhost ~]# chkconfig mysqld on #打开mysqld开机自启的功能 [root@localhost ~]# service mysqld start # 启动 Starting MySQL.Logging to '/opt/data/localhost.localdomain.err'. SUCCESS! [root@localhost ~]# 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@localhost ~]# mysql -uroot -p'sdWqHF.lP8!u' 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.12 Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 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.09 sec) #新版本的mysql更改密码的命令换了,不支持函数了 mysql> quit # 验证密码 [root@localhost ~]# 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.12 MySQL Community Server - GPL Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 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 ~]# cd /usr/src/ [root@localhost src]# wget https://www.php.net/distributions/php-8.0.23.tar.gz # 安装依赖包 [root@localhost src]# dnf -y install 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 sqlite-devel libzip-devel php-mysqlnd # 安装 oniguruma 包 [root@localhost ~]# dnf -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@localhost src]# ls debug mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz nginx-1.22.0.tar.gz kernels nginx-1.22.0 php-8.0.23.tar.gz # 解压 [root@localhost src]# tar xf php-8.0.23.tar.gz [root@localhost src]# ls debug nginx-1.22.0 php-8.0.23.tar.gz kernels nginx-1.22.0.tar.gz mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz php-8.0.23 # 编译安装php [root@localhost src]# cd php-8.0.23 [root@localhost php-8.0.23]# ./configure --prefix=/usr/local/php8 \ --with-config-file-path=/etc \ --enable-fpm \ --enable-inline-optimization \ --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-json \ --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 [root@localhost php-8.0.23]# make [root@localhost php-8.0.23]# make install # 设置环境变量 [root@localhost php-8.0.23]# echo 'export PATH=/usr/local/php8/bin:$PATH' > /etc/profile.d/php8.sh [root@localhost php-8.0.23]# source /etc/profile.d/php8.sh [root@localhost php-8.0.23]# which php /usr/local/php8/bin/php # 设置头文件 [root@localhost ~]# ln -s /usr/local/php8/include /usr/include/php8 #设置库文件 [root@localhost ~]# echo '/usr/local/php8/lib' > /etc/ld.so.conf.d/php8.conf [root@localhost ~]# ldconfig # 查看版本 [root@localhost ~]# php -v PHP 8.0.23 (cli) (built: Sep 4 2022 08:26:51) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.23, Copyright (c) Zend Technologies # 配置php-fpm [root@localhost ~]# cd /usr/src/php-8.0.23 # 这个文件已存在所以要加上\表示覆盖 [root@localhost php-8.0.23]# \cp php.ini-production /etc/php.ini [root@localhost php-8.0.23]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm [root@localhost php-8.0.23]# ll -d /etc/init.d/php-fpm -rw-r--r-- 1 root root 2402 Sep 4 08:33 /etc/init.d/php-fpm [root@localhost php-8.0.23]# chmod +x /etc/init.d/php-fpm #增加执行权限 [root@localhost php-8.0.23]# ll -d /etc/init.d/php-fpm -rwxr-xr-x 1 root root 2402 Sep 4 08:33 /etc/init.d/php-fpm [root@localhost php-8.0.23]# cd /usr/local/php8/etc [root@localhost etc]# cp php-fpm.conf.default php-fpm.conf [root@localhost etc]# cd php-fpm.d [root@localhost php-fpm.d]# cp www.conf.default www.conf [root@localhost ~]# vim /usr/local/php8/etc/php-fpm.d/www.conf user = nginx group = nginx # 修改如下 # 启动php-fpm 、 并开机自启 [root@localhost ~]# service php-fpm start Starting php-fpm done [root@localhost ~]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 127.0.0.1:9000 0.0.0.0:* 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@localhost ~]# chkconfig --add php-fpm [root@localhost ~]# chkconfig php-fpm on #设置优先访问php页面 [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf index index.php index.html index.htm; # index后面添加index.php #更新配置文件 [root@localhost ~]# nginx -s reload # 最后验证能不能都开机自启 [root@localhost ~]# reboot WARNING! The remote SSH server rejected X11 forwarding request. Last login: Sun Sep 4 06:34:26 2022 from 192.168.6.1 [root@localhost ~]# 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 *:*
访问
标签:--,LNMP,nginx,构建,mysql,php,root,localhost From: https://www.cnblogs.com/sunyiming023654/p/16654111.html