容器架构转传统lnmp架构(失败篇)
因为一些特殊原因我要将此博客的系统架构更换为传统lnmp架构,这里坐下记录。
首先做下数据库迁移,连接到容器内部查看相应数据库版本,导出sql数据。
[root@xyz ~]# docker exec -it wordpress_db_1 /bin/bash
root@0f975d71dd50:/# mysql -p
mysql> select @@version;
退出容器,导出sql语句
[root@xyz ~]# docker exec -it wordpress_db_1 mysqldump -uroot -pwordpress wordpress >/root/wp.sql
scp传给迁入端服务器
[root@xyz ~]# scp wp.sql 124.70.208.75:/root/
在迁移服务器上查询卸载系统自带的关于mysql或mariadb的软件包。
俩条执行没有结果则可以安装,有结果的话,请执行下面命令卸载。
[root@hecs-x-medium-2-linux-20200610093015 ~]# rpm -qa |grep mysql
[root@hecs-x-medium-2-linux-20200610093015 ~]# rpm -qa |grep mariadb
卸载命令
[root@hecs-x-medium-2-linux-20200610093015 ~]# yum -y remove mysql*
[root@hecs-x-medium-2-linux-20200610093015 ~]# yum -y remove mariadb*
查询得出容器内的数据库版本为mysql5.7.30,安装对应版本数据库。
[root@hecs-x-medium-2-linux-20200610093015 ~]# curl -O https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
[root@hecs-x-medium-2-linux-20200610093015 ~]# tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@hecs-x-medium-2-linux-20200610093015 ~]# cd /usr/local
[root@hecs-x-medium-2-linux-20200610093015 local]# mv mysql-5.7.30-linux-glibc2.12-x86_64/ mysql
初始化数据库并更改root密码
[root@hecs-x-medium-2-linux-20200610093015 mysql]# useradd -r mysql -s /sbin/nologin
执行下面这条初始化命令报错
[root@hecs-x-medium-2-linux-20200610093015 mysql]# ./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data2020-07-03 15:46:15 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2020-07-03 15:46:15 [ERROR] Child process: /usr/local/mysql/bin/mysqldterminated prematurely with errno= 32
2020-07-03 15:46:15 [ERROR] Failed to execute /usr/local/mysql/bin/mysqld --bootstrap --datadir=/usr/local/mysql/data --lc-messages-dir=/usr/local/mysql/share --lc-messages=en_US --basedir=/usr/local/mysql
-- server log begin ---- server log end --提示mysql_install_db 这条命令被弃用了,建议考虑 mysqld --initialize,好吧执行下面这条命令[root@hecs-x-medium-2-linux-20200610093015 mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/但是报错./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory不要慌,这个时候安装libaio,安装完毕重新执行上一条命令。[root@hecs-x-medium-2-linux-20200610093015 mysql]# yum install libaio -y[root@hecs-x-medium-2-linux-20200610093015 mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/2020-07-03T07:53:44.394814Z 1 [Note] A temporary password is generated for root@localhost: Z;23cw-j2Qih安装完成,会提示上面这一行note,给出了初始root密码。[root@hecs-x-medium-2-linux-20200610093015 mysql]# cd support-files/[root@hecs-x-medium-2-linux-20200610093015 support-files]# ./mysql.server start
Starting MySQL.Logging to '/usr/local/mysql/data/hecs-x-medium-2-linux-20200610093015.err'.
SUCCESS!
执行启动命令,启动数据库。[root@hecs-x-medium-2-linux-20200610093015 support-files]# ../bin/mysql -p
输入初始化密码,可进入数据库。进入数据库需要设密码,否则执行什么都会报1820错误ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
这个时候执行mysql> set password = password('新密码');
mysql> flush privileges;
退出数据库,输入新密码就可以进入正常使用了。mysql> exit
[root@hecs-x-medium-2-linux-20200610093015 support-files]# /usr/local/mysql/bin/mysql -p
迁入端数据库mysql5.7.30部署完毕。创建数据库,执行导入数据。
mysql> create database wordpress;
mysql> use wordpress;
mysql> source /root/wp.sql;
安装nginx,并设置开机自启动。
[root@hecs-x-medium-2-linux-20200610093015 support-files]# yum -y install nginx
[root@hecs-x-medium-2-linux-20200610093015 support-files]# systemctl start nginx
[root@hecs-x-medium-2-linux-20200610093015 support-files]# systemctl enable nginx
容器端导出web家目录中的文件,放到迁入端服务器nginx家目录。
[root@xyz ~]# mkdir web
[root@xyz ~]# docker cp wordpress_wordpress_1:/var/www/html/. /root/web/
[root@xyz ~]# scp -r web/ 124.70.208.75:/root
这里建议打个包传输,不然小文件太多,很慢的。
[root@hecs-x-medium-2-linux-20200610093015 support-files]# rm -rf /usr/share/nginx/html
[root@hecs-x-medium-2-linux-20200610093015 support-files]# mv /root/web /usr/share/nginx/
[root@hecs-x-medium-2-linux-20200610093015 support-files]# mv /usr/share/nginx/web/ /usr/share/nginx/html
安装配置php软件
安装php软件依赖
[root@hecs-x-medium-2-linux-20200610093015 support-files]# yum -y install libxml2-devel libjpeg-devel libpng-devel freetype-devel curl-devel openssl-devel
[root@hecs-x-medium-2-linux-20200610093015 ~] # curl -O https://www.php.net/distributions/php-7.2.31.tar.gz
当前目录下(复制这个主机名太长了,以下省略)
# tar -zxf php-7.2.31.tar.gz
# cd php-7.2.31
#./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-ftp --with-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --with-libzip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts
配置完成编译安装
# make && make install
安装完成后,复制配置文件到对应目录
# cp /root/php-7.2.31/php.ini-development /usr/local/php/etc/php.ini
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
添加启动服务
# cp /root/php-7.2.31/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod +x /etc/init.d/php-fpm
# useradd -r www -s /sbin/nologin
# service php-fpm start
把php下的bin目录添加到环境变量
# echo 'export PATH=$PATH:/usr/local/php/bin' >> /etc/profile
# source /etc/profile
更改配置文件让nginx找到php解析器。
# vim /etc/nginx/nginx.conf
将以下内容添加到对应server区块中
location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
# nginx -t 检查下语法是否有误。
# systemctl restart nginx
最后,不好意思失败了,提示数据库连接失败,我TM(一万个字小声逼逼。。。)?总体搭建nginx环境没问题,是代码和数据库连接这里出了问题,等想好再回来改。做个记录,这个mysql5.7.30是真的坑,实验好几次都没搭成功,不过最后总算ok了。
这篇就没脸要点赞转发了。有特殊见解的欢迎骚扰。再见。
容器架构转传统lnmp架构(失败篇)相关推荐
- 项目架构之传统三层架构和领域模型三层架构
一.架构之传统三层架构 传统三层架构是一种软件架构,是一种典型的.基于贫血模型的.面向过程的JavaWeb分层方式.该架构分为以下三个层次: 数据访问层(DAL - Data Access Layer ...
- JavaEE架构之传统三层架构,集群架构,分布式架构,微服务架构
javaEE架构 1.传统三层架构(all in one项目) 传统三层架构大致可以分为表现层,业务层和持久层(数据访问层).其中表现层负责接受请求和转发请求.业务层负责处理请求(注:事务管理,日志记 ...
- InServ-T级存储系统能否挑战传统存储架构?
如今的存储界,不仅仅EMC.IBM.NetApp这些存储巨头风光无限,而且像3PAR.Data Domain.Nexsan等后起之秀也是风头十足.3PAR公司就是后起之秀中的典型代表,作为公用计算存储 ...
- Linux运维之LNMP架构
Linux运维之LNMP架构 什么是lnmp架构 LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写.L指Linux,N指Nginx,M一般指MySQL,也可以指MariaD ...
- SOA架构与微服务架构到底是什么?以及对应的一些常用的框架简介
架构是逻辑上的设计模式,而框架则是具体的实现.一个架构模式上,可能会使用到多个框架. 一.架构的演变 架构的演变是根据业务量的急速扩张对技术要求不断的加深而产生的.如果细粒度的划分可以有很多路线,我一 ...
- linux 源码搭建lnmp_Linux精华篇—CentOS 7.4下源码编译构建LNMP架构
CentOS 7.4搭建LNMP 最新版本LNMP:Linux7.4.ngnix1.13.9.mysql5.7.20.php7.1.10 目录: 第一部分 准备工作 第二部分 安装nginx服务 第三 ...
- linux编译框架的搭建,Linux精华篇—CentOS 7.4下源码编译构建LNMP架构
CentOS 7.4搭建LNMP 最新版本LNMP:Linux7.4.ngnix1.13.9.mysql5.7.20.php7.1.10 目录: 第一部分 准备工作 第二部分 安装nginx服务 第三 ...
- 【云原生】第二篇--容器管理工具 Docker生态架构及部署
容器管理工具 Docker生态架构及部署 一.Docker生态架构 1.1 Docker Containers Are Everywhere 1.2 生态架构 1.2.1 Docker Host 1. ...
- 企业数字化转型之传统IT架构改造
在最近中国信通院发布的2021年云计算关键词中,再次将云原生排在第一位. 何宝宏表示,随着我国在"新基建"领域的布局加速,云计算迎来全新的发展机遇,万千企业数字化转型提速换挡,也对 ...
最新文章
- 系统集成项目管理工程师教程(第2版)带书签目录
- amazon mws api 获取所有产品_Amazon’s Choice是什么?Amazon's Choice标签全解读
- TRILL技术白皮书
- springmvc三十:异常处理流程
- 指向结构体的指针别名
- JVM 运行时数据区详解,写得非常好!
- (Spring)AOP-面向切面编程
- web_find和web_reg_find的用法和区别
- FastReport人民币大写转换
- 明细表如何添加重量_关于Revit中明细表标准的导出及导入
- .NET开源MSSQL、Redis监控产品Opserver之安全配置
- 判断用户 小程序_【重要声明】小程序维护中,iphone用户手机暂时用不了小程序...
- DDOS防御流量清洗的解决方案,流量清洗服务有什么功能?
- 一张表看懂英式音标和美式音标的差异
- Android分屏显示
- dfs之解救小哈-c语言
- 如何用ps设计出一张吸引人眼球的创意节日海报?
- Python + ChatterBot 创建聊天机器人
- ispreedSheet ios编辑类似表格界面在ipad上
- 【Python数据分析与可视化】Pandas统计分析-实训