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架构功能