一、软件安装
1、Nginx 安装
方法一: 利用官方源进行yum安装 最新的稳定版
第一个历程:更新yum源 vim /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 gpgkey=https://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=指定程序保存目录 --user=nginx服务worker进程管理用户 --group=nginx服务worker进程管理用户组 --with-http_ssl_module -- 实现激活HTTPS访问功能 --with-http_stub_status_module -- 实现激活nginx状态监控功能 ./configure --prefix=/application/nginx-1.16.0 --user=www --group=www --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/ [root@db01 /application]# tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz [root@db01 /application]# mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql 2.2.2 历史环境处理 [root@db01 /application]# rpm -qa |grep mariadb [root@db01 /application]# yum remove mariadb-libs -y 2.2.3 创建数据库用户 [root@db01 /application]# useradd mysql 2.2.4 创建数据目录并授权 [root@db01 /application]# mkdir /data/mysql/data -p [root@db01 /application]# chown -R mysql. /data/ 2.2.5 添加环境变量 vim /etc/profile export PATH=/application/mysql/bin:$PATH [root@db01 /application/mysql/bin]# source /etc/profile 2.2.6 初始化数据 [root@db01 ~]# mysqld --initialize-insecure --user=mysql --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 [root@db01 ~]# 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_id=6 port=3306 log_bin=/data/mysql/mysql-bin user=mysql [mysql] socket=/tmp/mysql.sock 2.2.8 启动脚本 [root@db01 /application/mysql/support-files]# cp mysql.server /etc/init.d/mysqld [root@db01 /data/mysql]# touch /data/mysql/mysql.log [root@db01 /data/mysql]# chown -R mysql. /data/mysql/* [root@db01 /data/mysql]# [root@db01 /data/mysql]# /etc/init.d/mysqld start Starting MySQL. SUCCESS! # 使用systemd 的方式启动 cat >/etc/systemd/system/mysqld.service <<EOF [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE = 5000 EOF [root@db01 ~]# /etc/init.d/mysqld stop Shutting down MySQL.. SUCCESS! [root@db01 ~]# systemctl start mysqld [root@db01 ~]# [root@db01 ~]# 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 [root@web01 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---mysql
systemctl start mariadb cd /ntml/blog vim mysql_test.php <?php $servername = "localhost"; $username = "root"; $password = "oldboy123"; //$link_id=mysql_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 'wordpress'@'localhost' 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 'wordpress'@'172.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) [root@nfs01 blog]# cat /etc/exports /data 172.16.0.0/24(rw,sync,all_squash,anonuid=888,anongid=888) 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配置文件 [root@web01 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架构功能~