前言:

本文是考虑安全问题,使用docker容器搭建宝塔与lanproxy,开始是直接在服务上搭建的宝塔,后来因为安全原因就又重新装系统,这次记录下创建的整个过程。
准备:安装好php,nginx,mysql,

一,修改nginx默认的80端口

因为,后面使用wordpress搭建个人博客时要用80端口,但ngnix也使用80端口,会引起冲突。

为了使访问博客方便,决定修改ngnix的默认端口。

若使用yum安装的ngnix,配置文件路径是:

/etc/nginx/nginx.conf 把80改为自己好记得端口号既可。并且在服务器防火墙开放相应的端口。

nginx实现内网穿透 csdn nginx可以内网穿透吗_数据库


在server{中添加如下代码:使服务器可以访问php文件

location ~ \.php(.*)$ {
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
           fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
           fastcgi_param  PATH_INFO  $fastcgi_path_info;
           fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
           include        fastcgi_params;
   }

重新启动:systemctl restart nginx

二,创建mysql普通用户

记住一句话:权限越大,风险越大。权限足够用就行。
为下面安装wordpress创建一个用户,及数据库。

1,创建用户:

使用root账户进入数据库

1,创建用户
use mysql;
create user '用户名'@'%' identified by '密码';#'%'表示所有ip都可访问
2,赋予权限

grant usage on *.* to 'zc'@'%' with grant option;

2,为用户创建数据库

create database wordpress;#数据库名为wordpress

3,给用户权限

授权格式:grant 权限 on 数据库. to 用户名@登录主机 identified by “密码” WITH GRANT OPTION;* 
授权本地访问GRANT ALL PRIVILEGES ON wordpress.* TO blog(修改成自己的用户名)@'localhost' IDENTIFIED BY '密码';授权远程登录执行:GRANT ALL PRIVILEGES ON wordpress.* TO blog(修改成自己的用户名)@’%’ IDENTIFIED BY ‘密码’;
刷新系统权限表**flush privileges;**

3.1 如果想指定部分权限给一用户,可以这样来写:

grant select,update on blog.* to blog@localhost identified by ‘密码’;
flush privileges; //刷新系统权限表
2.5 授权test用户拥有所有数据库的某些权限:
mysql>grant select,delete,update,create,drop on . to test@"%" identified by “1234”;
//test用户对所有数据库都有select,delete,update,create,drop 权限。
//@"%" 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。)
//对localhost授权:加上一句grant all privileges on testDB.* to test@localhost identified by ‘1234’;即可。

三,安装docker

因为

使用的镜像是

nginx实现内网穿透 csdn nginx可以内网穿透吗_数据库_02


所以系统自带docker,没有安装的使用下面命令

1,更新yum源

yum update

2,安装需要的软件包,

yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3,设置yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4,查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

5,安装docker

yum install # 例如:sudo yum install docker-ce-18.03.1.ce 6,启动并加入开机自启
sudo systemctl start docker sudo systemctl enable docker

四,docker中创wordpress容器

1,创建容器

docker run -d --name wordpress \
  -e WORDPRESS_DB_HOST=118.31.1.1:3306\
  -e WORDPRESS_DB_USER=数据库用户名 \
  -e WORDPRESS_DB_PASSWORD=数据库密码 \
  -e WORDPRESS_DB_NAME=wordpress \
  -p 80:80 \
  --restart=always \
 wordpress

参数说明:

  • WORDPRESS_DB_HOST:mysql的IP+端口
  • 若使用的是主机的mysql,ip为服务器的公网ip,若使用的是虚拟机的则IP为127.0.0.1
  • WORDPRESS_DB_USER:mysq用户名
  • WORDPRESS_DB_PASSWORD:mysql密码
  • WORDPRESS_DB_NAME:数据库名,默认是wordpress
  • -p 80:80 是指宿主机的80端口映射容器的80端口
  • restart=always 随docker的启动而启动

然后就直接访问IP地址就进入wordpress进行部署。
主题有在线的,也可以在别处下载直接传到容器的路径里;
/var/www/html/wp-content/themes
通过命令:docker cp 宿主机本地路径 容器名字/ID:容器路径
docker cp /root/123.txt wordpress:/var/www/html/wp-content/themes

五,修改头像无法显示的问题

当你注册,填写好信息后会发现左上角的头像显示不出来,不太美观

nginx实现内网穿透 csdn nginx可以内网穿透吗_nginx_03


1,点击插件里的安装插件

nginx实现内网穿透 csdn nginx可以内网穿透吗_nginx_04


2,搜索:Simple Local Avatars 进行安装

nginx实现内网穿透 csdn nginx可以内网穿透吗_mysql_05


3,点击插件->已安装插件

点击未启用列表,启动相对应的插件

nginx实现内网穿透 csdn nginx可以内网穿透吗_nginx_06


3,点击用户->个人资料

往下滑,上传头像既可。

nginx实现内网穿透 csdn nginx可以内网穿透吗_docker_07

2,进入容器

docker ps#查看运行的容器 docker ps -a#查看所有容器
docker exec -it 容器id或者名字 /bin/bash#(这里也可以直接用 bash)
退出容器命令:exit

删除命令:

docker rm 容器名字或id
但这个命令只是删除容器,一些配置还没有删除所以需要知道下面的命令

自动清理命令

docker system prune 可对空间进行自动清理。
该命令所清理的对象如下:
已停止的容器
未被任何容器使用的卷
未被任何容器所关联的网络
所有悬空的镜像
docker volume prune:删除无用的卷。
docker network prune:删除无用的网络