当前位置: 首页 > news >正文

LNMP 架构从安装到部署,带你实现copy搞定~

一、软件安装1、Nginx 安装方法一 利用官方源进行yum安装 最新的稳定版第一个历程更新yum源 vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck0 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.key 第二个历程nginx软件yum安装 yum install -y nginx方法二编译安装软件第一个历程获取源码文件 mkdir /server/tools -p cd /server/tools wget http://nginx.org/download/nginx-1.16.0.tar.gz 第二个历程解压源码包解决软件依赖问题 tar xf nginx-1.16.0.tar.gz yum install -y pcre-devel openssl-devel pcre-devel --- 兼容perl正则信息 openssl-devel --- 实现部署HTTPS网站 第三个历程编译安装软件 1配置过程 cd nginx-1.16.0 ./configure --prefix指定程序保存目录 --usernginx服务worker进程管理用户 --groupnginx服务worker进程管理用户组 --with-http_ssl_module -- 实现激活HTTPS访问功能 --with-http_stub_status_module -- 实现激活nginx状态监控功能 ./configure --prefix/application/nginx-1.16.0 --userwww --groupwww --with-http_ssl_module --with-http_stub_status_module 2编译过程翻译过程 c c java python go -- 翻译过程 -- 内核 -- 硬件 make 3编译安装 make install2、MySQL 安装方法一yum 安装思路下载yum源https://dev.mysql.com/downloads/repo/yum/yum install mysql-server -y方法二二进制包常用generic 绿色版相当于解压就能用。2.2 二进制包的安装过程 2.2.1 上传并解压 mkdir -p /application/ cd /application/ [rootdb01 /application]# tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz [rootdb01 /application]# mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql 2.2.2 历史环境处理 [rootdb01 /application]# rpm -qa |grep mariadb [rootdb01 /application]# yum remove mariadb-libs -y 2.2.3 创建数据库用户 [rootdb01 /application]# useradd mysql 2.2.4 创建数据目录并授权 [rootdb01 /application]# mkdir /data/mysql/data -p [rootdb01 /application]# chown -R mysql. /data/ 2.2.5 添加环境变量 vim /etc/profile export PATH/application/mysql/bin:$PATH [rootdb01 /application/mysql/bin]# source /etc/profile 2.2.6 初始化数据 [rootdb01 ~]# mysqld --initialize-insecure --usermysql --basedir/application/mysql --datadir/data/mysql/data ## -insecure 初始化后没有密码 mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory [rootdb01 ~]# yum install -y libaio-devel 2.2.7 配置文件准备 vim /etc/my.cnf [mysqld] basedir/application/mysql # 软件位置 datadir/data/mysql/data # 数据位置 socket/tmp/mysql.sock # 连接方式 log_error/data/mysql/mysql.log server_id6 port3306 log_bin/data/mysql/mysql-bin usermysql [mysql] socket/tmp/mysql.sock 2.2.8 启动脚本 [rootdb01 /application/mysql/support-files]# cp mysql.server /etc/init.d/mysqld [rootdb01 /data/mysql]# touch /data/mysql/mysql.log [rootdb01 /data/mysql]# chown -R mysql. /data/mysql/* [rootdb01 /data/mysql]# [rootdb01 /data/mysql]# /etc/init.d/mysqld start Starting MySQL. SUCCESS! # 使用systemd 的方式启动 cat /etc/systemd/system/mysqld.service EOF [Unit] DescriptionMySQL Server Documentationman:mysqld(8) Documentationhttp://dev.mysql.com/doc/refman/en/using-systemd.html Afternetwork.target Aftersyslog.target [Install] WantedBymulti-user.target [Service] Usermysql Groupmysql ExecStart/application/mysql/bin/mysqld --defaults-file/etc/my.cnf LimitNOFILE 5000 EOF [rootdb01 ~]# /etc/init.d/mysqld stop Shutting down MySQL.. SUCCESS! [rootdb01 ~]# systemctl start mysqld [rootdb01 ~]# [rootdb01 ~]# netstat -lnp|grep 330 tcp6 0 0 :::3306 :::* LISTEN 2935/mysqld方法三 简单安装yum install -y mariadb-server mariadb systemctl start mariadb3、PHP安装yum remove php-mysql php php-fpm php-common rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb systemctl start php-fpm二、服务部署01. 配置nginx文件 (nginx--php建立连接)cd /html/blog vim blog.conf [rootweb01 conf.d]# cat blog.conf server { listen 80; server_name blog.oldboy.com; client_max_body_size 5m; # 允许上传的数据大小 location / { root /html/blog; index index.php index.html index.htm; } location ~ \.php$ { root /html/blog; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }02. PHP---mysqlsystemctl start mariadb cd /ntml/blog vim mysql_test.php ?php $servername localhost; $username root; $password oldboy123; //$link_idmysql_connect(主机名,用户,密码); //mysql -u用户 -p密码 -h 主机 $conn mysqli_connect($servername, $username, $password); if ($conn) { echo mysql successful by oldboy !\n; }else{ die(Connection failed: . mysqli_connect_error()); } ? mysqladmin -uroot password oldboy123 --- 给数据库设置密码 mysql -uroot -poldboy123 浏览器访问10.0.0.7/mysql_test.php03. 实现代码上线第一个历程: 获取代码信息 第二个历程: 将代码解压放置站点目录中 第三个历程: 调整站点目录数据权限 # 统一nginx、还有wordpress 文件、php-fpm进程 属主为www。 chown -R www.www blog/ --- 属主为nginx worker进程用户 vim /etc/php-fpm.d/www.conf user www group www 第四个历程: 进行网站页面初始化配置 创建数据库: show databases; --- 查看数据库信息 create database wordpress; --- 创建数据库 创建数据管理用户: grant all on wordpress.* to wordpresslocalhost identified by oldboy123; select user,host from mysql.user; 413 Request Entity Too Large --- 上传的数据大于程序默认大小 client_max_body_size 5m; --- 设置请求主体最大尺寸04. 数据库如何进行迁移# web01 上操作第一个历程: 备份数据库 mysqldump -uroot -poldboy123 -A /tmp/backup.sql # web01 上操作第二个历程: 将数据进行传输 scp -rp /tmp/backup.sql 172.16.1.51:/tmp # db上操作第三个历程: 恢复数据 mysql -uroot -poldboy123 /tmp/backup.sql # db 上操作第四个历程: 检查网站页面 grant all on wordpress.* to wordpress172.16.1.% identified by oldboy123; # web01 上操作修改代码文件链接指定数据库 vim blog/wp-config.php define(DB_HOST, 172.16.1.51); # 两边数据库都是mariadb不一样可能会有问题。05. 如何实现数据共享存储nfs服务器配置(172.16.0.32) [rootnfs01 blog]# cat /etc/exports /data 172.16.0.0/24(rw,sync,all_squash,anonuid888,anongid888) chown -R www. /data web01服务器配置 yum install nfs-utils showmount -e 172.16.0.32 第一个历程: 确认数据本地存储位置 方式一: 复制图片地址 http://blog.oldboy.com/wp-content/uploads/2019/07/1_oldboy01-300x300.jpg 方式二: 利用命令操作 inotify rsync -- 脚本 inotify rsync -- sersync 实时同步 yum install inotify-tools -y inotifywait -mrq /html/blog find /html/blog/ -type f -name oldboy02* -mmin -3 本地存储目录--blog /html/blog/wp-content/uploads/ --- 存储服务挂载点 第二个历程: 将本地存储数据进行移动备份 mkdir -p /tmp/blog_backup/ mv /html/blog/wp-content/uploads/* /tmp/blog_backup/ 第三个历程: 实现存储目录挂载操作 mount -t nfs 172.16.0.32:/data/blog /html/blog/wp-content/uploads 第四个历程: 还原原来数据 mv /tmp/blog_backup/* /html/blog/wp-content/uploads/ 第五个历程: 检查测试 # 注意nginx、php-fpm/data/html/blog/wp-content/uploads, 的属主都是www06. LNMP架构安全访问第一个历程: 创建私钥和证书信息 先有私钥 openssl genrsa -idea -out server.key 2048 输入私钥密码 创建证书 openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt -days 36500 --- 设置证书时效 -x509 --- 设置证书文件信息格式 -sha256 --- 证书数据加密方式 -nodes -newkey --- 去掉密码信息 rsa:2048 --- 识别私钥加密信息 -keyout --- 读取私钥文件 -out --- 输出一个证书 第二个历程: 编写配置文件 blog.conf # cat /etc/nginx/conf.d/blog.conf server { listen 80; server_name blog.oldboy.com; rewrite ^(.*) https://$server_name$1 redirect; } server { listen 443 ssl; server_name blog.oldboy.com; client_max_body_size 5m; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; location / { root /html/blog; index index.php index.html index.htm; } location ~ \.php$ { root /html/blog; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }07. 实现blog网站伪静态配置第一个历程: 修改网站后台设置 需要开发配合 设置---固定链接---自定义结构 /%post_id%.html 第二个历程: 编写nginx配置文件 [rootweb01 html]# cat /etc/nginx/conf.d/blog.conf server { listen 80; server_name blog.oldboy.com; rewrite ^(.*) https://$server_name$1 redirect; } server { listen 443 ssl; server_name blog.oldboy.com; client_max_body_size 5m; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; rewrite /wp-admin$ $scheme://$host$uri/ permanent; --- 伪静态地址信息重写 # $scheme: 识别是http 还是 https。 location / { root /html/blog; index index.php index.html index.htm; try_files $uri $uri/ /index.php?$args$uri; --- 访问伪静态页面 } location ~ \.php$ { root /html/blog; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }至此实现基本的LNMP架构功能
http://www.rkmt.cn/news/1411690.html

相关文章:

  • 如何用Untrunc开源工具拯救损坏的视频文件:从绝望到重生的完整指南
  • UltraISO制作Win7启动盘时,选USB-ZIP+还是USB-HDD+?一次讲清MBR启动那些事儿
  • 突破性窗口置顶方案:用AlwaysOnTop彻底改变你的多任务工作流
  • 如何用Python实现TrueSkill动态评分系统:游戏匹配算法的终极指南
  • ppt模板_0053_黑橙条纹
  • 别再只调骨干网络了!用PCB、MGN和BoT提升ReID模型性能的实战调优指南
  • 在Ubuntu 18.04上从零开始:手把手教你用AutoDock Vina完成一次分子对接(附MGLtools和Open Babel配置)
  • 如何快速实现GitHub界面中文化:面向中文开发者的完整指南
  • 手把手带你用C语言写一个带完整测试菜单的循环队列程序(附三种实现源码)
  • Boss直聘批量投递工具:高效自动化求职解决方案的完整指南
  • 如何高效实现WebRTC视频通话实时变声:3步快速集成方案
  • Potsdam数据集预处理避坑指南:如何正确划分训练/测试集并可视化检查结果
  • 保姆级教程:为Jetson Xavier NX定制载板,手把手修改设备树(含Pinmux配置避坑)
  • 别再死磕公式了!用MATLAB手把手教你搞定机械臂手眼标定(附Tsai算法源码)
  • 宏基因组数据分析避坑指南:从Raw Data到Profile,我踩过的那些“雷”
  • Windows 11下用EasyUEFI给Ubuntu做引导,避开Secure Boot的坑
  • 《电脑显示器哪家好:排名前五 专业测评解析》 - 服务品牌热点
  • DELL R730XD服务器上,用Windows Server 2019搭建Hyper-V的保姆级避坑指南
  • AI开发成本失控?实时监控与优化策略全解析
  • STP协议原理与配置详解:消除网络环路的生成树技术
  • ppt模板_0054_青色椭圆
  • Java LLM应用安全防护:JGuardrails框架实战指南
  • 数据库操作核心:DDL与DML详解及SQL关键概念实战
  • ncmdump终极解密指南:3分钟解锁网易云音乐NCM加密文件
  • 从低代码平台迁移到自主部署:破解供应商锁定,重获增长自由
  • 微信聊天记录解密终极指南:3步解锁你的加密数据宝藏
  • 架构漂移设计阶段检测:用架构即代码与静态分析守护系统一致性
  • 告别Easy Touch!用Fingers Gesture插件5分钟搞定Unity手游摇杆与多点触控
  • 手把手教你用Python画出模型可靠性曲线:直观比较逻辑回归、SVC和贝叶斯的概率预测差异
  • 《会议平板哪家好:排名前五 专业深度测评解析》 - 服务品牌热点