【ECS】阿里云ECS安装配置各种环境

目录

ECS云服务器新手上路

1、创建ECS实例资源

2、RAM用户登录(子用户和子用户密码)进入ECS管理控制台

3、查看实例,选择地域找到ECS实例资源,点击ID进入某个实例的管理界面

4、远程连接:ssh root@xx.xx.xx.xx

快速配置Linux云服务器

创建以ecs.s6-c1m1.small(1 vCPU,1GiB )实例规格为例,Alibaba Cloud Linux 2.1903 LTS 64位系统的云服务器ECS实例。若不再需要这台实例,可以将其释放。释放后,实例停止计费,数据不可恢复。

查看费用账单:ECS管理控制台顶部菜单栏,费用,用户中心,账单详情,明细账单

基础配置:

配置项示例说明
付费模式按量付费按量付费模式操作相对灵活。详情请参见计费概述。说明 如果您需要为网站域名备案,必须选择包年包月。
地域及可用区地域:华东1(杭州)可用区:随机分配实例创建后,无法直接更改地域和可用区,请谨慎选择。
实例规格规格族:共享标准型 s6实例规格:ecs.s6-c1m1.small您可以前往ECS实例可购买地域,查看实例在各地域的可购情况。
镜像类型:公共镜像版本:Alibaba Cloud Linux 2.1903 LTS 64位实例启动后,系统盘将完整复制镜像的操作系统和应用数据。

网络和安全组:

配置项示例说明
专有网络默认专有网络首次使用推荐默认专有网络。如果您要创建专有网络,请单击下方的前往控制台创建
交换机默认交换机首次使用推荐默认交换机。如果您要创建交换机,请单击下方的前往控制台创建
分配公网IPv4地址选中分配公网IPv4地址选中后,自动分配一个公网IPv4地址。
带宽计费模式按使用流量按使用流量模式只需为所消耗的公网流量付费。详情请参见公网带宽计费。
带宽峰值5 Mbps无。
安全组默认安全组

系统配置

配置项示例说明
登录凭证自定义密码本教程中选择自定义密码,并手动设置一个密码,用于远程连接并登录ECS实例。
登录密码Ecs123456当登录凭证选择自定义密码时,需要设置此选项并确认密码,在后续连接ECS实例时,您需要输入用户名root和此处设置的密码。
实例名称EcsQuickStart

分组设置 保持默认

远程连接VNC

创建成功后,远程连接VNC:在实例列表页面,找到您的实例资源,单击右侧操作列下的远程连接

1、在输入VNC密码对话框中, 单击重置VNC密码

2、远程连接ECS实例,输入ECS实例的用户名密码

配置Apache服务
  1. 执行如下命令,安装Apache服务。
yum install -y httpd
  1. 执行如下命令,启动Apache服务。
systemctl start httpd
  1. 执行如下命令,设置Apache服务开机自启动。
systemctl enable httpd
  1. 执行如下命令,可查询Apache服务是否处于运行中状态。
systemctl status httpd
#回应是active(running)
  1. 在当前浏览器页面,新开启一个网页,在地址栏输入实例的弹性IP地址,并回车。
http://<实例公网IP地址>
#出现Hello Apache
解析网站域名

直接通过实例公网IP地址访问Apache服务会降低服务端安全性。如果您已有域名或者想为Apache网站注册一个域名,请参见以下步骤。

1、注册域名。详情请参见注册通用域名。

2、如果域名指向的网站托管在阿里云中国内地地域的节点服务器,您需要备案域名。

首次备案,请参见首次备案流程,其他情况请参见ICP备案流程概述。

3、解析域名,将域名指向实例公网IP。

域名解析是使用域名访问您的网站的必备环节。具体操作流程,请参见设置域名解析。

4、使用解析后的域名访问Apache服务,例如,https://ecs-quickstarts.info。

快速搭建LNMP环境(Linux+Nginx+MySQL+PHP)

基于CentOS 7.7

安装并配置MySQL 5.7.41

1、执行如下命令,下载并安装MySQL官方的Yum Repository。

wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server --nogpgcheck

2、执行如下命令,启动 MySQL 数据库。

systemctl start mysqld.service

3、执行如下命令,查看MySQL运行状态。

systemctl status mysqld.service

4、执行以下命令,查看MySQL初始密码。

grep "password" /var/log/mysqld.log

5、执行以下命令,登录数据库。

mysql -uroot -p

6、执行以下命令,修改MySQL默认密码。

set global validate_password_policy=0;  #修改密码安全策略为低(只校验密码长度,至少8位)。
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';

7、执行以下命令,授予root用户远程管理权限。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678';

8、输入exit退出数据库。

数据库优化案例

其他有关MySQL索引:

未加索引查看SQL执行计划,可以发现key和key_len的值都是null。

explain select * from test_tb where name='abc';

查看test_tb表的表结构

show create table test_tb;

创建test_tb表的索引,再次查看test_tb表的表结构,会发现表结构中多了一个KEY `name` (`name`)

alter table test_tb add index(name);

查看数据库运行中的SQL

select * from `information_schema`.`PROCESSLIST`
安装Nginx 1.17.10

1、安装Nginx运行所需要的插件。

  • 安装gcc。gcc是Linux下的编译器,它可以编译C、C++、Ada、Object C和Java等语言。
yum -y install gcc
  • 安装pcre。pcre是一个perl库,Nginx的HTTP模块使用pcre来解析正则表达式。
yum install -y pcre pcre-devel
  • 安装zlib。zlib是一个文件压缩和解压缩的库,Nginx使用zlib对HTTP数据包进行gzip压缩和解压。
yum install -y zlib zlib-devel

2、下载Nginx安装包。

wget http://nginx.org/download/nginx-1.17.10.tar.gz

3、解压Nginx安装包。

tar -zxvf nginx-1.17.10.tar.gz

4、编译安装Nginx。

cd nginx-1.17.10
./configure
make && make install

5、启动Nginx。

cd /usr/local/nginx/
sbin/nginx

6、测试Nginx启动。在浏览器地址栏输入ECS服务器的公网地址xx.xx.xx.xx,出现如下界面表示安装启动成功。

安装PHP 5.4.16

1、安装PHP。

yum -y install php php-mysql php-fpm

2、在nginx.conf文件中增加对PHP的支持。

vim /usr/local/nginx/conf/nginx.conf

进入Vim编辑器后,按下i键进入编辑模式,在server的根路由配置中新增index.php。

location / {
      root   html;
      index  index.html index.htm index.php;
}

并在根路由下面新增以下配置。在server{中}

if (!-e $request_filename) {
     rewrite ^/(.*)$ /index.php/$1 last;
}

location ~ .*\.php(\/.*)*$ {
     fastcgi_pass   127.0.0.1:9000;
     include       fastcgi.conf;
     fastcgi_index  index.php;
}

按下ESC键,输入:wq保存并退出Vim编辑器。

3、重启php-fpm服务。

systemctl restart php-fpm

4、重启Nginx服务。

/usr/local/nginx/sbin/nginx -s reload

5、检查PHP安装。

a. 在Nginx的网站根目录下创建PHP探针文件phpinfo.php。

echo "<?php phpinfo(); ?>" > /usr/local/nginx/html/phpinfo.php

b. 访问PHP探针页面。在浏览器地址栏输入xx.xx.xx.xx/phpinfo.php(请将xx.xx.xx.xx替换为ECS服务器的公网地址),出现如下页面表示PHP环境配置成功。

快速搭建LAMP环境(Linux+Apache+MySQL+PHP)

基于CentOS 7.7

配置Apache服务
  1. 执行如下命令,安装Apache服务及其扩展包。
yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql
  1. 执行如下命令,启动Apache服务。
systemctl start httpd.service
  1. 在当前浏览器页面,新开启一个网页,在地址栏输入实例的弹性IP地址,并回车。
http://<实例公网IP地址>
安装并配置MySQL 5.7.41

1、执行如下命令,下载并安装MySQL官方的Yum Repository。

wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server --nogpgcheck

2、执行如下命令,启动 MySQL 数据库。

systemctl start mysqld.service

3、执行如下命令,查看MySQL运行状态。

systemctl status mysqld.service

4、执行以下命令,查看MySQL初始密码。

grep "password" /var/log/mysqld.log

5、执行以下命令,登录数据库。

mysql -uroot -p

6、执行以下命令,修改MySQL默认密码。

set global validate_password_policy=0;  #修改密码安全策略为低(只校验密码长度,至少8位)。
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';

7、执行以下命令,授予root用户远程管理权限。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678';

8、运行以下命令查看MySQL版本号。

mysql -V
安装PHP 5.4.16

PHP(PHP:Hypertext Preprocessor递归缩写)中文名字是:“超文本预处理器”,是一种广泛使用的通用开源脚本语言,适合于Web网站开发,它可以嵌入HTML中。编程范型是面向对象、命令式编程的。

1、安装PHP环境。

yum -y install php php-mysql gd php-gd gd-devel php-xml php-common php-mbstring php-ldap php-pear php-xmlrpc php-imap

2、执行以下命令创建PHP测试页面。

echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

3、执行以下命令,重启Apache服务。

systemctl restart httpd

4、在本地浏览器的址栏中,,访问http://<ECS公网IP>/phpinfo.php,显示如下页面表示PHP语言环境安装成功。

安装phpMyAdmin 4.0.10.20

phpMyAdmin是一个MySQL数据库管理工具,通过Web接口管理数据库方便快捷。

1、执行以下命令,创建phpMyAdmin数据存放目录。

mkdir -p /var/www/html/phpmyadmin

2、执行以下命令,下载phpMyAdmin压缩包。

wget --no-check-certificate https://labfileapp.oss-cn-hangzhou.aliyuncs.com/phpMyAdmin-4.0.10.20-all-languages.zip

3、执行以下命令,安装unzip并解压phpMyAdmin压缩包。

yum install -y unzip
unzip phpMyAdmin-4.0.10.20-all-languages.zip

4、执行以下命令,复制phpMyAdmin文件到数据存放目录。

mv phpMyAdmin-4.0.10.20-all-languages/*  /var/www/html/phpmyadmin

5、在本地浏览器的址栏中,输入http://实例公网 IP/phpmyadmin,访问phpMyAdmin。

返回页面出现phpMyAdmin登录页,说明phpMyAdmin安装成功。

6、在phpMyAdmin登录页面,依次输入MySQL的用户名和密码,单击执行

使用云原生PolarDB并使用LAMP搭建门户网站

创建PolarDB数据库账号

在阿里云控制台页面,依次单击产品与服务>云数据库PolarDB ,进入云数据库PolarDB管理控制台,在集群列表页面顶部菜单栏中,切换资源所在地域,找到您的PolarDB实例,单击实例ID。创建数据库账号和创建数据库.

设置数据库白名单。连接数据库需要设置数据库白名单。在左侧导航栏中,选择配置与管理>集群白名单。在集群白名单页面的IP列表区域,单击配置。将默认的白名单地址127.0.0.1更改为0.0.0.0/0,然后单击确定,使白名单地址生效。

安装LAMP环境

安装Apache服务及其扩展包

yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql

PbootCMS是使用PHP语言开发的CMS系统需安装PHP环境。

执行以下命令,安装PHP

yum -y install php php-mysql gd php-gd gd-devel php-xml php-common php-mbstring php-ldap php-pear php-xmlrpc php-imap

执行以下命令下载并安装MySQL

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server

启动MySQL数据库

systemctl start mysqld
使用PbootCMS搭建门户网站

安装Git

yum -y install git

下载PbootCMS源码文件,并回退到兼容低版本PHP的版本,PbootCMS是一套全新内核且永久开源免费的PHP企业网站开发建设管理系统。系统默认采用sqlite轻型数据库,放入PHP空间即可直接使用,可选mysql、pgsql等数据库。&& 表示前一条命令执行成功时,才执行后一条命令。

cd ~ && git clone https://gitee.com/hnaoyun/PbootCMS.git && cd ~/PbootCMS/ && git checkout 43bd6e4481eb5d3516f1d33187c308b25de76af3 && cd ~

将安装包拷贝到Apache的wwwroot目录下

cp -r PbootCMS/* /var/www/html/

修改站点根目录文件权限

chmod -R a+w /var/www/html

向数据库中导入CMS的初始数据,初始化数据库pbootcms的表结构和数据。

sql_file="/var/www/html/static/backup/sql/"$(ls /var/www/html/static/backup/sql/) &&
mysql -h数据库连接地址(公网地址) -uUserName -pPassWord -Dpbootcms < $sql_file

修改CMS系统数据库配置

cat > /var/www/html/config/database.php << EOF
<?php
return array(
    'database' => array(
        'type' => 'mysqli', // 数据库连接驱动类型: mysqli,sqlite,pdo_mysql,pdo_sqlite
        'host' => '数据库连接地址', // PolarDB数据库链接地址
        'user' => 'UserName', // PolarDB数据库的用户名
        'passwd' => 'PassWord', // PolarDB数据库的密码
        'port' => '3306', // 数据库端口
        'dbname' => 'pbootcms' //数据库名称
    )
);
EOF

在云数据库PolarDB控制台页面左侧,依次单击产品与服务>云服务器ECS,进入云服务器ECS管理控制台找到实例ID,在实例详情页面, 单击安全组,在安全组页面的访问规则区域,确保安全组开放了80端口访问,否则无法访问已搭建的门户网站。

安全组是一种虚拟防火墙,具备状态检测和数据包过滤能力,用于在云端划分安全域。通过配置安全组规则,可以控制安全组内一台或多台ECS实例的入流量和出流量。

重启Apache服务

systemctl restart httpd

在浏览器地址栏输入http:///admin.php,访问系统后台。默认账号为admin,密码为123456

手动部署 Java Web环境

基于Alibaba Cloud Linux 2.1903 LTS 64位操作系统

准备编译环境(关闭防火墙和SELinux)

本步骤将指导您如何在ECS实例上关闭防火墙和SELinux。

关闭防火墙

  1. 执行如下命令,查看当前防火墙的状态。
systemctl status firewalld

返回结果您可查看到当前防火墙的状态

  1. 关闭防火墙。如果防火墙为关闭状态可以忽略此步骤。
  • 如果您想临时关闭防火墙,需要运行以下命令。

说明 临时关闭防火墙后,如果Linux实例重启,则防火墙将会自动开启。

systemctl stop firewalld
  • 如果您想永久关闭防火墙,需要依次运行以下命令。说明 如果您想重新开启防火墙,请参见firewalld官网信息。

执行如下命令,关闭防火墙。

systemctl stop firewalld

执行如下命令,实例开机时,禁止启动防火墙服务。

systemctl disable firewalld

关闭SELinux

  1. 执行如下命令,查看SELinux的当前状态。
getenforce

返回如下结果,您可查看到SELinux的当前状态为Disabled。

  • 如果SELinux状态参数是Disabled,则SELinux为关闭状态。
  • 如果SELinux状态参数是Enforcing,则SELinux为开启状态。

关闭SELinux。如果SELinux为关闭状态可以忽略此步骤。如果您想临时关闭SELinux,运行以下命令。

setenforce 0

说明 该操作只是暂时关闭SELinux,下次重启Linux后,SELinux还会开启。

如果您想永久关闭SELinux,运行以下命令打开SELinux配置文件。

vi /etc/selinux/config

在/etc/selinux/config文件内,将光标移动到SELINUX=enforcing一行,按i键进入编辑模式,修改为SELINUX=disabled,然后按Esc键,再输入:wq并回车,保存关闭SELinux配置文件。重启系统使设置生效。

说明 如果您想重新开启SELinux,具体操作,请参见开启或关闭SELinux。

执行如下命令,创建一般用户www来运行Tomcat。

useradd www

执行如下命令,创建网站根目录。

mkdir -p /data/wwwroot/default		#-p 确保目录名称存在,不存在的就建一个。
  1. 执行如下命令,将网站根目录的所属用户设置为www。
chown -R www.www /data/wwwroot     #-R : 处理指定目录以及其子目录下的所有文件
安装JDK1.8
  1. 执行如下命令,通过yum命令查找JDK1.8软件包。
yum -y list java*
  1. 执行如下命令,安装列表中的JDK1.8软件包。
yum -y install java-1.8.0-openjdk-devel.x86_64
  1. 执行如下命令,查看JDK版本。
java -version

配置环境变量。

vim /etc/profile

说明 JAVA_HOME值为当前JDK安装的路径。本示例中,运行命令

find /usr/lib/jvm -name ‘java-1.8.0-openjdk-1.8.0*’,查看JDK安装后文件的路径。

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.1.al7.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH
  1. 按下Esc键,输入:wq并回车以保存并关闭文件。
  2. 执行如下命令,立即生效环境变量。
source /etc/profile
安装Apache Tomcat 8.5.72

下载Tomcat 8安装包。

wget --no-check-certificate https://labfileapp.oss-cn-hangzhou.aliyuncs.com/apache-tomcat-8.5.72.tar.gz

解压Tomcat 8安装包。

tar -zxvf apache-tomcat-8.5.72.tar.gz

移动Tomcat所在目录。

mv apache-tomcat-8.5.72 /usr/local/tomcat/

将文件的所属用户设置为www。

chown -R www.www /usr/local/tomcat/

在/usr/local/tomcat/目录下:

  • bin:存放Tomcat的一些脚本文件,包含启动和关闭Tomcat服务脚本。

  • conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml。

  • webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录。

  • logs:存放Tomcat执行时的日志文件。

配置server.xml文件。切换到/usr/local/tomcat/conf/目录。

cd /usr/local/tomcat/conf/

重命名server.xml文件。

mv server.xml server.xml_bk

新建一个server.xml文件。创建并打开server.xml文件。

vi server.xml
  1. 按下i键,添加以下内容。
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8006" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<Listener className="org.apache.catalina.core.AprLifecycleListener"/>
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
 type="org.apache.catalina.UserDatabase"
 description="User database that can be updated and saved"
 factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
 pathname="conf/tomcat-users.xml"/>
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080"
 protocol="HTTP/1.1"
 connectionTimeout="20000"
 redirectPort="8443"
 maxThreads="1000"
 minSpareThreads="20"
 acceptCount="1000"
 maxHttpHeaderSize="65536"
 debug="0"
 disableUploadTimeout="true"
 useBodyEncodingForURI="true"
 enableLookups="false"
 URIEncoding="UTF-8"/>
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
  resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="/data/wwwroot/default" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/data/wwwroot/default" debug="0" reloadable="false" crossContext="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
</Server>

设置 JVM 内存参数,创建并打开/usr/local/tomcat/bin/setenv.sh文件。

vi /usr/local/tomcat/bin/setenv.sh

指定 JAVA_OPTS 参数,用于设置 JVM 的内存信息以及编码格式。

JAVA_OPTS='-Djava.security.egd=file:/dev/./urandom -server -Xms256m -Xmx496m -Dfile.encoding=UTF-8'

设置Tomcat自启动脚本

下载Tomcat自启动脚本文件。该脚本来源于社区,仅供参考。如果您运行wget命令下载失败,您可以通过浏览器访问https://raw.githubusercontent.com/oneinstack/oneinstack/master/init.d/Tomcat-init 直接获取脚本内容。

wget https://raw.githubusercontent.com/oneinstack/oneinstack/master/init.d/Tomcat-init
#!/bin/bash
### BEGIN INIT INFO
# Provides:          tomcat
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: tomcat-server daemon
# Description:       tomcat-server daemon
### END INIT INFO
#
# chkconfig: - 95 15
# description: Tomcat start/stop/status script

#Location of JAVA_HOME (bin files)
export JAVA_HOME=

#Add Java binary files to PATH
export PATH=$JAVA_HOME/bin:$PATH

#CATALINA_HOME is the location of the configuration files of this instance of Tomcat
CATALINA_HOME=/usr/local/tomcat

#TOMCAT_USER is the default user of tomcat
TOMCAT_USER=www

#TOMCAT_USAGE is the message if this script is called without any options
TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}"

#SHUTDOWN_WAIT is wait time in seconds for java proccess to stop
SHUTDOWN_WAIT=20

tomcat_pid() {
  echo `ps -ef | grep java | grep $CATALINA_HOME/ | grep -v grep | tr -s " "|cut -d" " -f2`
}

start() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]; then
    echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m"
  else
    echo -e "\e[00;32mStarting tomcat\e[00m"
    if [ `user_exists $TOMCAT_USER` = "1" ]; then
      su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh
    else
      $CATALINA_HOME/bin/startup.sh
    fi
    status
  fi
  return 0
}

status() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]; then
    echo -e "\e[00;32mTomcat is running with pid: $pid\e[00m"
  else
    echo -e "\e[00;31mTomcat is not running\e[00m"
  fi
}

stop() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]; then
    echo -e "\e[00;31mStoping Tomcat\e[00m"
    $CATALINA_HOME/bin/shutdown.sh

    let kwait=$SHUTDOWN_WAIT
    count=0;
    until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
    do
      echo -n -e "\e[00;31mwaiting for processes to exit\e[00m\n";
      sleep 1
      let count=$count+1;
    done

    if [ $count -gt $kwait ]; then
      echo -n -e "\n\e[00;31mkilling processes which didn't stop after $SHUTDOWN_WAIT seconds\e[00m"
      kill -9 $pid
    fi
  else
    echo -e "\e[00;31mTomcat is not running\e[00m"
  fi

  return 0
}

user_exists() {
  if id -u $1 >/dev/null 2>&1; then
    echo "1"
  else
    echo "0"
  fi
}

case $1 in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  status)
    status
    ;;
  *)
    echo -e $TOMCAT_USAGE
    ;;
esac
exit 0

执行如下命令,移动并重命名Tomcat-init。

mv Tomcat-init /etc/init.d/tomcat

执行如下命令,为/etc/init.d/tomcat添加可执行权限。

chmod +x /etc/init.d/tomcat

设置启动脚本 JAVA_HOME。

说明 脚本中JDK的路径信息必须与您安装的JDK路径保持一致,否则Tomcat会启动失败。

sed -i 's@^export JAVA_HOME=.*@export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.1.al7.x86_64@' /etc/init.d/tomcat

依次执行如下命令,设置Tomcat开机自启动。

chkconfig --add tomcat
chkconfig tomcat on

执行如下命令,启动Tomcat

service tomcat start
# 多了org.apache.catalina.startup.Bootstrap进程
部署测试项目并验证

将需要部署的Java Web项目文件War包上传到网站根目录下,并将网站根目录下文件所属用户改为www。您可以使用支持文件传输功能的远程连接工具或搭建FTP站点上传项目文件。

本示例中,网站根目录为/data/wwwroot/default,运行以下命令直接在网站根目录下新建一个Tomcat测试页面,并进行访问。

执行如下命令,新建测试文件。

echo Tomcat test > /data/wwwroot/default/index.jsp

在本地浏览器地址栏中输入http://弹性IP:8080进行访问。

基于ECS搭建云上博客

基于CentOS 7.7

配置Apache服务

执行如下命令,安装Apache服务及其扩展包。

yum -y install httpd mod_ssl mod_perl mod_auth_mysql

查看Apache是否安装成功。

httpd -v

启动Apache服务,在浏览器的址栏中,访问http://ECS公网地址

systemctl start httpd.service
安装MariaDB数据库

由于使用WordPress搭建云上博客,需要使用MySQL数据库存储数据。
在ECS实例上安装MySQL的开源替代品MariaDB(MariaDB兼容MySQL),并创建博客数据库。

安装MariaDB Server

yum install -y mariadb-server

启动MariaDB Server

systemctl start mariadb

查看MariaDB Server运行状态。

systemctl status mariadb	
#返回结果可看到active (running)时,表示MariaDB Server启动成功

设置数据库root用户的初始密码。(出现Enter Password提示符的时,直接回车)

mysqladmin -u root -p password

连接数据库。

mysql -uroot -p

创建WordPress数据库。

create database wordpress;

创建WordPress数据库。create database wordpress;

安装PHP 5.4.16

PHP是一种广泛使用的通用开源脚本语言,适合于Web网站开发,它可以嵌入HTML中。

安装PHP

yum -y install php php-mysql gd php-gd gd-devel php-xml php-common php-mbstring php-ldap php-pear php-xmlrpc php-imap

执行如下命令,创建PHP测试页面。

echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

执行如下命令,重启Apache服务。

systemctl restart httpd

浏览器的地址栏中,访问http://<ECS公网地址>/phpinfo.php。

安装和配置WordPress

安装WordPress

yum -y install wordpress

修改WordPress配置文件

修改wp-config.php指向路径为绝对路径

# 进入/usr/share/wordpress目录。
cd /usr/share/wordpress
# 修改路径。
ln -snf /etc/wordpress/wp-config.php wp-config.php
# 查看修改后的目录结构。
ll

移动wordpress文件到Apache根目录

# 在Apache的根目录/var/www/html下,创建一个wp-blog文件夹。
mkdir /var/www/html/wp-blog
mv * /var/www/html/wp-blog/

修改wp-config.php配置文件

sed -i 's/database_name_here/wordpress/' /var/www/html/wp-blog/wp-config.php
sed -i 's/username_here/root/' /var/www/html/wp-blog/wp-config.php
sed -i 's/password_here/123456789/' /var/www/html/wp-blog/wp-config.php

查看配置文件信息是否修改成功

cat -n /var/www/html/wp-blog/wp-config.php

#可看到 修改
    23  define( 'DB_NAME', 'wordpress' );
    25  /** MySQL database username */
    26  define( 'DB_USER', 'root' );
    28  /** MySQL database password */
    29  define( 'DB_PASSWORD', '123456789' );

重启Apache服务

systemctl restart httpd

测试WordPress:浏览器的地址栏中,访问 http://<ECS公网地址>/wp-blog/wp-admin/install.php。

在WordPress配置页面,配置相关信息,然后单击Install WordPress。
参数说明:
Site Title:站点名称。本示例为Hello ABC。
Username:管理员用户名。本示例为admin。
Password:访问密码。本示例为Cm%c4(MKI3gQwGk8ap。
Your Email:邮箱地址,建议使用真实有效的邮箱地址。若没有,可以填写虚拟邮箱地址,但将无法接收信息。

基于Leanote和Mongodb搭建云笔记本

安装Mongodb

MongoDB是一个基于分布式文件存储的高性能数据库,属于NOSQL,由C++语言编写,运行稳定,性能高。支持的数据结构非常松散是类似于json和bson格式,可以存储比较复杂的数据类型。它支持的查询语言非常强大,可以实现类似关系数据库单表查询的绝大部分功能,支持对数据建立索引。

#1.配置MongoDB的yum源
vim /etc/yum.repos.d/mongodb-org-3.4.repo
#添加以下内容:
[mongodb-org-3.4]  
name=MongoDB Repository  
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/  
gpgcheck=1  
enabled=1  
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
#2. 将服务器上的软件包信息在本地缓存,以提高搜索安装软件的速度
yum makecache

#3.安装MongoDB
yum -y install mongodb-org

#4. 查看mongo安装位置 
whereis mongod

#5. 修改mongo配置文件
vim /etc/mongod.conf
net:
  port: 27017
  bindIp: 0.0.0.0  # Listen to local interface only, comment to listen on all interfaces.
#修改配置文件的 bindIp, 默认是 127.0.0.1 只限于本机连接。所以安装完成后必须把这个修改为 0.0.0.0 ,否则无法通过远程连接,需要远程连接需要把服务器端口打开。

#6. 启动MongoDB
systemctl start mongod

#7. 查到mongodb的状态
systemctl status mongod
安装Leanote
#0. 创建/app目录,用于存放Leanote软件
mkdir /app
cd /app

#1.下载Leanote二进制安装包
wget https://nchc.dl.sourceforge.net/project/leanote-bin/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz

#2.解压安装包
tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz

#3.Leanote配置
#编辑文件/app/leanote/conf/app.conf,在文件中找到app.secret项,将该项的值改为任意字符串。
#根据Leanote官方文档,如不修改app.secret项的值,将会有安全隐患。
vim /app/leanote/conf/app.conf
#修改app.secret=任意字符串

#4.初始化数据库
mongorestore -h localhost -d leanote --dir /app/leanote/mongodb_backup/leanote_install_data/

#5.启动服务
nohup bash /app/leanote/bin/run.sh > /app/leanote/run.log 2>&1 &

根据Leanote的配置文件/app/leanote/conf/app.conf可知,笔记服务使用的端口号为9000,在浏览器中访问http://<ECS公网地址>:9000 访问云笔记。默认管理用户为admin,密码为abc123

搭建Node.js编程环境

基于CentOS 7.7

安装配置Node.js v12.4.0

下载Node.js的安装包。

wget https://npm.taobao.org/mirrors/node/v12.4.0/node-v12.4.0-linux-x64.tar.xz

解压Node.js的安装包。

tar -xvf node-v12.4.0-linux-x64.tar.xz

重命名Node.js安装目录。

mv node-v12.4.0-linux-x64/ /usr/local/node

配置Node.js,将Node.js的可执行文件目录加入到系统环境变量中。

echo "export PATH=$PATH:/usr/local/node/bin" >> /etc/profile
source /etc/profile

分别查看node和npm版本。

node -v
npm -v
测试Node.js环境

使用vim命令创建一个测试文件。

vim HelloWorld.js

复制如下代码到HelloWorld.js文件中。

var http = require('http');
http.createServer(function (request, response) {
    response.writeHead(
        200,
        {
            'Content-Type': 'text/plain'
        });
    response.end('Hello World\n');
}).listen(8080);
console.log('Server started');

运行HelloWorld.js文件。

node HelloWorld.js

4 打开浏览器,在地址范围输入http://<ECS公网地址>:8080 看见打印的Hello World

部署Linux主机管理系统WDCP

WDCP(WDlinux Control Panel)是一套Linux服务器及虚拟主机管理系统,通过Web控制和管理服务器。在WDCP的后台中,您可以更方便地使用Linux系统作为网站服务器系统,并对Linux服务器进行管理。

部署Linux主机管理系统WDCP

查看我们创建的实例ID,在ECS控制台实例列表中找到对应的实例。普通停机模式停止实例。接下来更换操作系统,点击更换操作系统。在更换操作系统页面,单击镜像市场,然后单击从镜像市场获取更多选择(含操作系统)。在镜像市场对话框中,输入WDCPv3.0,并单击搜索。示例选用 PHP运行环境(WDCPv3.0面板 多引擎切换 免费版)镜像,可进入该云市场镜像页面获取产品信息。单击使用。使用云市场镜像更换操作系统后,您可以开始使用WDCP主机管理系统,示例中,WDCP主机管理系统访问地址为 http://ECS实例的公网IP:8080

手动搭建FTP站点(Windows)

基于Windows Server 2012 R2数据中心版64位操作系统

添加 IIS 以及 FTP 服务角色

实例进行Workbench远程连接——>Window图标服务器管理,选择管理,选择添加角色和功能,默认进到服务器角色选择添加 Web 服务器(IIS),下一步至选择角色服务选中IIS管理控制台以及 FTP 服务器 进行安装。

创建用于访问FTP站点的Windows用户
说明:创建 Windows 用户,用于访问 FTP 站点时的身份验证。如果只需要匿名用户(即仅提供用户名 anonymous 或 ftp 的用户)访问 FTP 站点,可以跳过本步骤。

Window图标管理工具选择计算机管理,左侧导航栏选择系统工具 > 本地用户和组 > 用户。页面右侧的操作列,单击更多操作,然后单击新用户

说明:具体配置用户名:示例中创建一个用户名为 ftptest 的 Windows 用户。密码及确认密码:输入自定义密码信。密码须包括大小写字母和数字,否则提示无法通过密码策略。密码相关设置:选中密码永不过期。
设置共享文件的权限
说明:需创建一个文件夹作为 FTP 站点共享文件的入口,该文件夹需要开放访问、修改等权限。后续各客户端访问该 FTP 站点时,文件传输均基于该文件夹完成。

Windows实例磁盘创建一个供FTP站点使用的文件夹。例在C盘下创建一个名为ftp的文件夹——>修改属性安全页签单击编辑——>单击添加,输入对象名称ftptest,然后单击检查名称。检查名称无误后,单击确定。——>在组或用户名区域,单击新添加的用户名ftptest,然后在ftptest 的权限区域设置权限后,单击确定。示例中允许所有权限。可根据实际业务对权限的要求,自行设置权限为允许或拒绝。

添加并设置FTP站点

Window图标服务器管理器顶部导航栏工具 Internet Information Services(IIS)管理器——>左侧导航栏选择Windows实例主机名 网站,然后在右侧操作列,单击添加 FTP 站点——>在弹出的对话框中设置站点信息,然后单击下一步。具体配置说明如下:FTP站点名称:自定义名称。例如 ftptest。内容目录:FTP所需的共享文件夹。示例对应的是C盘中的ftp文件夹 ——> 设置IP地址(默认)以及SSL证书(无),然后单击下一步——>设置身份验证(基本)和授权信息(指定用户 ftptest),设置权限(读取,写入),然后单击完成,完成后可以在IIS管理器查看到成功搭建的FTP站点 ——>配置FTP站点的防火墙。在IIS管理器中,双击 FTP 站点名称 ftptest,进入FTP站点的主页。双击FTP 防火墙支持。在防火墙的外部 IP 地址下的文本框中,输入Windows实例的公网IP地址,页面右侧单击应用

说明:具体配置:
 
   - IP地址:保持默认配置。
   - SSL:不同配置项对应的说明如下。本示例中选择 无 ,即不需要SSL加密。如果您需要保证数据传输安全且已拥有SSL证书,请根据实际的数据传输安全要求,设置为 允许 或 需要 。
     -  无 :不需要SSL加密。
     -  允许 :允许FTP服务器支持与客户端的非SSL和SSL连接。
     -  需要 :需要对FTP服务器和客户端之间的通信进行SSL加密。
   - 其他配置保持默认设置。
说明:具体配置项:

- 身份验证:不同选项的说明如下所示。本示例中仅选择 基本 ,后续将通过已创建的ftptest用户访问FTP站点。如果您对数据传输安全没有要求,可以设置为 匿名 ,使匿名用户支持直接访问FTP站点。
  -  匿名 :允许任何仅提供用户名anonymous或ftp的用户访问内容。
  -  基本 :需要用户提供有效用户名和密码才能访问内容。由于基本身份验证通过网络传输未加密的密码,因此请仅在清楚客户端和FTP服务器之间的连接是安全的情况下(例如,使用安全套接字层SSL时)使用此身份验证方法。
- 授权:允许访问的范围说明如下所示。本示例中选择**指定用户**,并在对应的文本框中输入ftptest。
  -  所有用户 :所有用户(不论是匿名用户还是已标识的用户)均可访问FTP站点对应的共享文件夹。
  -  匿名用户 :匿名用户可访问FTP站点对应的共享文件夹。
  -  指定角色或用户组 :仅特定角色或用户组的成员才能访问FTP站点对应的共享文件夹。需要在对应的文本框中输入角色或用户组。
  -  指定用户 :仅指定用户才能访问FTP站点对应的共享文件夹。需要在对应的文本框中输入用户名。
- 权限:选中 读取 和 写入 权限。
设置安全组及防火墙

说明:当在Windows实例中搭建好FTP站点后,需要在实例所属的安全组中,添加入方向规则,放行FTP服务器所需的21端口以及FTP服务器被动模式可能占用的端口范围1024~65535。

有两种配置方式:(1)在Windows实例所属的安全组中,添加入方向规则,放行21端口以及1024~65535端口。

具体操作,请参见添加安全组规则。(2)配置Windows实例内部的防火墙。Windows实例内部的防火墙默认为关闭状态。如果您的防火墙为开启状态,则需要放行TCP 21端口与1024~65535端口用于FTP服务。具体操作,请参见设置 ECS 实例远程连接防火墙

采用第二种方式中的添加端口规则

Window图标 运行——>输入wf.msc,在弹出的 高级安全 Winodws 防火墙 窗口,单击 入站规则,然后单击 新建规则,在弹出的新建入站规则向导窗口,选择 端口下一步。在弹出的窗口中,选择 TCP,然后添加 **特定本地端口(21端口以及1024~65535端口)**填写:21,1024-65535,下一步。在弹出的窗口中,选择 允许连接下一步。使用默认配置即可,下一步。在弹出的窗口中,填写规则名称。单击 完成——>查看 Windows 防火墙属性,以确认防火墙是否启用。如防火墙未启用,选择 启用(推荐)提示:建议将 域配置文件专用配置文件公用配置文件 选项卡下的防火墙全部启用。

客户端测试访问FTP站点

Windows的文件夹目录、命令行工具、浏览器或者是第三方FTP连接工具均可用来测试FTP服务器。示例将以本地Windows主机作为客户端,通过文件夹目录测试访问FTP站点。在本地物理主机中,打开文件夹目录,在文件夹路径中,输入ftp://FTP站点的公网IP地址:21进行访问。在弹出的登录身份对话框,完成登录信息设置,然后单击登录。示例中使用ftptest用户名及对应的密码信息,登录FTP站点。可新建一个测试文件夹test。重新登录Windows实例,查看C盘的ftp文件夹中新增了test文件夹,表示FTP站点搭建成功且可以进行文件数据传输。

ECS数据管理实践-备份与恢复

在ECS中对已创建的数据盘进行分区并挂载到ECS上,从而可以使用数据盘进行文件存储;然后,用户创建ECS数据盘的快照,并使用快照进行磁盘的回滚。

数据盘分区及挂载

查询当前系统中的数据盘

fdisk -l

对数据盘进行分区:

fdisk /dev/vdb

在弹出的命令行中需要输入的参数是:

Command(m for help)输入n; #新建一个分区

Command action输入p; #分区类型为主分区(如果想添加扩展分区,就按e)

Partition number(1-4,default 1)输入1;

First cylinder和Last cylinder处直接输入回车,使用默认的配置;

Command(m for help)输入w,从而使上面的配置生效。 #输入w保存退出

再次执行如下命令,查询当前系统中的数据盘。如果看到显示分区 /dev/vdb1 的信息,则说明数据盘分区成功。

fdisk -l

对数据盘进行格式化:

mkfs.ext3 /dev/vdb1

创建目录 /alidata:

mkdir /alidata

然后,将磁盘挂载上去

mount /dev/vdb1 /alidata

查看磁盘的使用情况。

df -h
数据盘快照创建及回滚

进入数据盘 /alidata 目录下。

cd /alidata

在数据盘上创建一个文件 test.txt,并往文件里面写入内容:

>test.txt
echo “Hello Aliyun”>test.txt

在ECS实例的管理页面中,点击云盘,界面显示ECS实例挂载的磁盘信息:数据盘系统盘。点击数据盘右侧的创建快照。在弹出的页面中自定义一个快照的名称,例如:sl001-ss 。完成后,点击【确定】。

返回ECS的远程登录工具,在ECS的命令行中,使用如下命令,删除刚刚创建的文件 test.txt,模拟数据误删的情况

rm -f test.txt

通过快照回滚的方式,将磁盘恢复到包含删除数据的时间点,从而将数据恢复出来。回滚磁盘需要ECS是停止的状态。点击【本实例快照】,进入ECS的快照页面。然后,在右侧快照列表中,找到已创建的数据盘快照,点击【回滚磁盘】进行磁盘数据的回滚。

当ECS实例启动成功后,重新远程登录到ECS实例中,并重新使用命令,将数据盘挂载到挂载到 /alidata。

mount /dev/vdb1/alidata

将会看到误删除的数据 test.txt 文件已恢复。

ls /alidata

部署Hadoop环境

基于 CentOS7.7 搭建Hadoop 3.3.0 伪分布式环境

安装JDK 1.8

1、下载JDK1.8安装包。

wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz

2、解压下载的JDK1.8安装包。

tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz

3、移动并重命名JDK包。

mv java-se-8u41-ri/ /usr/java8

4、执行以下命令,配置Java环境变量。

echo 'export JAVA_HOME=/usr/java8' >> /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
source /etc/profile

5、执行以下命令,查看Java是否成功安装。

java -version

安装Hadoop

安装Hadoop 3.3.0

1、执行以下命令,下载Hadoop安装包。示例安装hadoop-3.3.0版本

wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz

2、执行以下命令,解压Hadoop安装包至/opt/hadoop

tar -zxvf hadoop-3.3.0.tar.gz -C /opt/
mv /opt/hadoop-3.3.0 /opt/hadoop

3、执行以下命令,配置Hadoop环境变量。

echo 'export HADOOP_HOME=/opt/hadoop/' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/bin' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/sbin' >> /etc/profile
source /etc/profile 

4、执行以下命令,修改配置文件 yarn-env.sh 和 hadoop-env.sh

echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/yarn-env.sh
echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/hadoop-env.sh

5、执行以下命令,测试Hadoop是否安装成功。

hadoop version
配置Hadoop 3.3.0

1、修改Hadoop配置文件 core-site.xml。

vim /opt/hadoop/etc/hadoop/core-site.xml

在节点内插入如下内容。

    <property>
    	<!-- 指定 hadoop 数据的存储目录 -->
        <name>hadoop.tmp.dir</name>
        <value>file:/opt/hadoop/tmp</value>
    </property>
    <property>
    	<!-- 指定 NameNode 的地址 -->
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>

2、修改Hadoop配置文件 hdfs-site.xml。

vim /opt/hadoop/etc/hadoop/hdfs-site.xml

在节点内插入如下内容。

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/opt/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/opt/hadoop/tmp/dfs/data</value>
    </property>

3、修改 start-dfs.sh 和 stop-dfs.sh文件。

在/opt/hadoop/sbin目录下找到start-dfs.sh和stop-dfs.sh两个文件,在文件顶部添加以下内容:

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

4、修改start-yarn.sh和stop-yarn.sh文件.

在 /opt/hadoop/sbin目录下找到start-yarn.sh和stop-yarn.sh两个文件,在文件顶部添加以下内容:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
配置SSH免密登录

1、执行以下命令,创建公钥和私钥。点击回车键

ssh-keygen -t rsa

2、执行以下命令,将公钥添加到authorized_keys文件中。

cd .ssh
cat id_rsa.pub >> authorized_keys
启动Hadoop

1、执行以下命令,初始化namenode 。

hdfs namenode -format

2、依次执行以下命令,启动Hadoop。

start-dfs.sh
start-yarn.sh

3、执行jps命令查看已启动的进程,若显示RM,NM,NN,SNN,DN,JPS,表明Hadoop启动成功。

4、打开浏览器访问http://ECS公网地址:8088和 http://ECS公网地址:9870查看Hadoop的Web页面

快速搭建Docker环境

基于CentOS 7.7

安装Docker CE 23.0.1

Docker有两个分支版本:Docker CE和Docker EE,即社区版和企业版。

安装Docker的依赖库

yum install -y yum-utils device-mapper-persistent-data lvm2

添加Docker CE的软件源信息。添加aliyun docker-ce yum源

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

源添加成功后,使用yum list命令查看当前的docker源中支持的安装包版本列表。

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

安装Docker CE

yum makecache fast #将软件包信息提前在本地索引缓存,提高搜索安装软件速度,执行命令可提升yum安装速度
yum -y install docker-ce

或者选择需要的docker版本,通过yum install命令进行安装。

yum install -y docker-ce.x86_64 3:20.10.16-3.el7 

启动Docker服务,使用docker version命令查看docker版本号

systemctl start docker
docker version
# Docker Engine Community 23.0.1

将docker服务配置为开机自启动。(可选)

systemctl enable docker.service
配置阿里云镜像仓库(镜像加速)

Docker的默认官方远程仓库是hub.docker.com,由于网络原因,下载一个Docker官方镜像可能会需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务ACR提供了官方的镜像站点,从而加速官方镜像的下载。下面使用阿里云镜像仓库。

复制容器镜像服务控制台地址,在FireFox浏览器打开新页签,粘贴并访问云容器镜像服务控制台。

https://cr.console.aliyun.com/

在容器镜像服务控制台左侧导航栏中,选择镜像工具>镜像加速器

镜像加速器页面的加速器区域,单击复制 加速器地址

切换至终端页面。执行如下命令配置Docker的自定义镜像仓库地址。请将命令中的镜像仓库地址 https://kqh8****.mirror.aliyuncs.com 替换为上一步阿里云为您提供的专属镜像加速地址。

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://****.mirror.aliyuncs.com"]
}
EOF

# tee命令用于读取标准输入的数据,并将其内容输出成文件
# >表示覆盖原文件内容(文件的日期也会自动更新)>>表示追加内容(会另起一行,文件的日期也会自动更新)

重新加载服务配置文件。

systemctl daemon-reload

重启Docker服务。

systemctl restart docker

服务重启后可通过下面指令测试docker运行环境是否安装成功。执行成功说明docker安装配置成功。

docker run hello-world
下载Ubuntu容器镜像并启动

通过docker search命令在的镜像源中查找所需要的容器镜像

docker search ubuntu

找到所需要容器镜像的名称后,通常需进一步在docker的镜像源中查找该镜像的版本列表。由于docker本身没有直接提供查看版本的功能,因此创建一个可以查看镜像版本的简单脚本docker-tags

vi docker-tags

在docker-tags脚本中加入

curl -s -S "https://registry.hub.docker.com/v2/repositories/library/$1/tags/?page=$2" |
sed -e 's/,/\n/g' -e 's/\[/\\\[\n/g' |
grep -E '"name":|"count":' |
sed -e 's/"//g' -e "s/name:/$1:/g" -e "s/{count:/$1总版本数-/"

docker-tags脚本编辑好之后,需要通过chmod修改文件权限才可以执行。权限修改完成后,可使用docker-tags脚本来查询相关镜像的最近版本信息了。

chmod 777 docker-tags
./docker-tags ubuntu

查找到镜像版本信息后,就可从docker镜像源来拉取镜像到本地。在拉取镜像时直接拉取拉取的版本,也可不指定版本默认拉取最新版本。

docker pull ubuntu:jammy
# docker pull ubuntu

通过docker images命令来查看已经拉取到的本地镜像

docker images

启动容器,需首先根据镜像创建容器,使用docker create命令,利用下载好的ubuntu镜像创建容器。

注意:因为要创建一个可以持久运行的ubuntu容器,因此需要添加 -it参数

docker create -it ubuntu

容器创建成功后,可使用docker ps命令查看现有的容器

注意:如果docker ps默认只会显示正在运行的容器。如果想查看所有状态的容器,需要添加-a参数。

docker ps -a
# CONTAINER ID表示系统为容器创建的ID,IMAGE为容器的镜像名称。STATUS表示容器当前的状态。NAMES为容器的名称。使用默认的docker create命令所创建的容器并没有指定名称,因此docker会为容器生成一个随机的名字。如果用户想创建指定名称的容器,则可以使用-name参数。注意如果用户制定了容器名,则要注意容器不要重名,否则会创建失败
docker create -it --name ubuntu-1 ubuntu
docker ps -a

当容器创建好之后,可通过docker start命令来启动容器,容器启动成功后通过docker ps命令可以查看到容器状态的变化。在这里我们要注意:同一个镜像创建的多个容器之间是不相关的。

docker start ubuntu-1
docker ps -a 

以上的步骤为docker容器创建的标准流程。而在实际操作过程中,使用标准步骤创建启动容器会比较繁琐,因此docker提供了更加简便的命令docker run

使用docker run命令时,docker会自动完成下载镜像,创建容器,启动容器的工作。通过以下的一条命令,就可完成下载busybox的容器镜像,创建名为busyboxdebian-1的容器,将该容器启动并在后台运行的全部功能。

docker run -itd --name busybox-1 busybox	#许多Docker镜像使用BusyBox为您提供最小镜像。
docker ps -a 

在操作容器之前,先用查看宿主操作系统

lsb_release -a

宿主机网络信息

ifconfig
# 出现docker 0

首先用docker run创建一个新的ubuntu容器并启动

docker run -itd --name ubuntu-2 ubuntu

容器创建好之后,使用docker exec命令在ubuntu-2容器上启动bash控制台程序,从而对容器进行操作。

docker exec -it ubuntu-2 bin/bash

命令执行之后提示行提示符发生了改变。这说明当前用户所操作的已经是容器中的操作系统。

这时再通过lsb_release查看操作系统的状态。会显示命令无法找到,原因是通过容器安装的ubuntu属于极简版本,没有安装非必要的命令。因此需要先用apt-get命令安装常用命令。此步骤受网络速度影响可能会有比大的延迟。

apt-get update
apt-get install -y lsb-core net-tools vim --fix-missing

查看容器操作系统的状态和网络状态。发现和宿主机的信息已经不同。

lsb_release -a
ifconfig

想从容器操作系统退回宿主机操作系统。只需要输入exit命令即可。

用户在使用docker run创建容器的时候,如果不使用-d参数。则启动容器成功之后,会自动进入容器操作系统控制台。但是此种方法进入容器操作系统之后,如果使用exit退出,容器会被关闭。

docker run -it --name temp ubuntu 
exit
docker ps -a 
容器暂停、恢复、启动、停止、删除

对于已经启动的容器。我们可以使用docker pause/unpause命令对容器进行暂停/恢复。当容器被暂停之后,容器内的服务将会暂停,当容器恢复之后服务恢复。

创建新的ubuntu容器。创建成功后进入容器控制台,安装必要的应用

docker run -itd --name ubuntu-3 ubuntu
docker exec -it ubuntu-3 /bin/bash
apt-get update
apt-get install -y python3 net-tools curl

在容器中启动一个默认的python3 http服务器。并将服务器设置为后台运行。在服务启动之后通过curl测试服务的运行状态。

nohup python3 -m http.server 8000 &
curl 127.0.0.1:8000 

在容器内部测试http服务成功后,接下来需要在宿主机中测试http服务。在此之前,我们先通过ifconfig命令来显示并记录一下容器的ip地址。然后退出容器的控制台。

ifconfig
exit

在宿主机控制台中,同样使用curl命令来访问容器中的http服务,需要注意的是:在宿主机中我们需要通过容器IP地址才能访问到容器中的服务。

curl [容器IP]:8000 

除了通过curl之外,还可以通过docker top命令来查看容器中正在运行的具体进程。

docker top ubuntu-3

通过docker pause命令暂停容器运行,容器暂停后通过docker top命令来查看容器中进程。发现进程依然存在,再通过curl测试http服务,发现已经无响应,证明服务已经停止。

docker pause ubuntu-3
docker ps -a
curl [容器IP]:8000
Ctrl+C

通过docker unpause命令恢复容器运行,测试http服务,发现已经恢复访问。

docker unpause ubuntu-3
curl [容器IP]:8000 

容器重启之后,容器内部运行的应用会被停止。比较类似于物理机的重新启动。

显示正在运行的容器和容器中正在运行的应用

docker ps -a 
docker top ubuntu-3

docker stop命令停止服务,并利用docker ps -a 查看容器状态。发现容器的状态已经变成了Exited,利用docker start或者docker restart 重启,容器重启之后再利用docker top和curl测试容器中的http服务,发现服务已经不存在了。

docker restart ubuntu-3
docker top ubuntu-3
curl [容器IP]:8000

docker stop虽然会停止容器中的服务,但是并不会释放容器所占据的系统资源,因此对于已经不在需要的容器,可以使用docker rm命令删除,docker rm 命令可以使用CONTAINER ID或者NAME作为参数。如果容器的状态不是停止。则需要添加–force参数才可以删除。

docker rm --force [CONTAINER ID]
# 或者 docker rm --force ubuntu-3 
容器镜像的管理

通过docker pull的方式通过镜像仓库将镜像下载到本地docker内部。但这种方法需要保证服务器可以访问到外网且访问速度有保证。如果用户在网络条件不好的情况下希望获取镜像,则可以采用镜像的保存加载方式。首先我们可以通过docker save命令可以将docker内部的一个或多个镜像导出成文件。下面的命令将nginx,hello-world两个镜像导出到images.tar文件。

docker pull hello-world
docker pull nginx
docker save -o images.tar nginx hello-world 
ll images.tar

将现有的两个镜像从docker内部删除。为后面的镜像读取做准备。docker rmi : 删除本地一个或多个镜像。

docker rmi hello-world
docker rmi nginx
docker images 

通过docker load命令将images.tar中的两个镜像导入回docker内部。即可实现在没有网络访问的情况更新镜像。要注意的是:如果docker内部已经存在了相关的镜像,文件中的镜像会被忽略。

docker load -i images.tar
docker images 

通过docker save和 docker load的方法可以实现docker内部的镜像保存和加载。

而对于已经创建出来的容器,可使用导出容器的快照的方式实现备份或者保存。

首先创建一个容器ubuntu-3,然后在ubuntu-3创建一个文本文件。此处可以使用docker exec bash -c 方式直接在宿主机命令行执行。

docker run -itd --name ubuntu-3 ubuntu
docker exec ubuntu-3 bash -c "echo snapshot > snapshot.txt"
docker exec ubuntu-3 bash -c "cat snapshot.txt"

通过docker export 命令来将容器以快照的形式导出到文件。

docker export ubuntu-3 > ubuntu-snapshot.tar
ll ubuntu-snapshot.tar

对于容器的快照文件。可以通过docker import命令导入到docker中,特别注意的是:docker import是以镜像而不是容器的形式导入快照。也就是说导入的快照并不能直接运行,而是需要根据此快照镜像再次创建容器才可以使用。

docker import ubuntu-snapshot.tar ubuntu-snapshot:latest
docker images

利用导入的快照镜像创造一个新的容器。并验证通过快照创建的容器中包含着之前容器中创建的文件。

docker run -itd --name snapshot ubuntu-snapshot /bin/bash
docker exec snapshot cat snapshot.txt
使用Docker安装Nginx服务

查看Docker镜像仓库中Nginx的可用版本

docker search nginx

拉取最新版的Nginx镜像

docker pull nginx:latest

查看本地镜像

docker images

运行容器

docker run --name nginx-test -p 8080:80 -d nginx

命令参数说明:

  • –name nginx-test:容器名称
  • -p 8080:80: 端口进行映射,将本地8080端口映射到容器内部的80端口
  • -d nginx: 设置容器在后台一直运行
# 查看运行中的容器
docker ps -a

浏览器打开新页签,地址栏输入http://<ECS公网地址>:8080访问Nginx服务

进入启动了nginx的Docker容器系统

docker exec -it nginx-test /bin/bash
自定义Dockerfile并构建镜像

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

编写Dockerfile文件,文件名为Dockerfile,内容如下:

FROM centos:centos7
MAINTAINER myname <myname@gmail.com>
# 安装工具包
RUN yum install -y gcc-c++  pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 安装nginx1.14.2
RUN useradd -M -s /sbin/nologin nginx
COPY ./nginx-1.14.2.tar.gz /opt/
WORKDIR /opt/
RUN tar zxvf nginx-1.14.2.tar.gz
RUN mkdir -p /usr/local/nginx
RUN cd nginx-1.14.2 && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module  --with-http_sub_module && make && make install
RUN rpmkeys --import file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 && yum -y update && yum clean all
# 设置启动脚本
RUN mkdir -p /opt/work/bin
COPY ./start.sh /opt/work/bin
WORKDIR /opt/work/bin
RUN chmod -R 755 /opt/work/bin
# 定义要暴露的端口
EXPOSE 80
# 启动nginx脚本
CMD ["./start.sh"]

构建自定义镜像,下载需要的nginx-1.14.2源码包

wget http://nginx.org/download/nginx-1.14.2.tar.gz

创建start.sh文件,文件内容如下:

 #!/bin/bash 
/usr/local/nginx/sbin/nginx -g "daemon off;"

构建镜像(注意命令后面有个“点”)docker build 命令用于使用 Dockerfile 创建镜像。

docker build -t my-nginx-server . 
docker images

启动容器

docker run -p 8080:80 --name my_nginx2 -d my-nginx-server
docker ps -a

基于Docker搭建ELK (Elasticsearch、Logstash、Kibana)

下载需要的镜像

docker pull elasticsearch
docker pull kibana
docker pull logstash
docker pull nginx
docker images
部署Elasticsearch

修改JVM堆大小,默认情况下,Elasticsearch的JVM使用的堆大小为2GB,可以修改ES的jvm默认参数

find /var/lib/docker/overlay2/ -name jvm.options
# 修改相应的配置文件
# -Xms2g 改为 -Xms1g
# -Xmx2g 改为 -Xmx1g

调整vm.max_map_count大小

vim /etc/sysctl.conf
# 末尾添上 vm.max_map_count=262144
sysctl -p	#从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

启动elasticsearch容器

docker run --name elasticsearch -v "$PWD/esdata":/usr/share/elasticsearch/data -p 9200:9200 -d elasticsearch
docker logs elasticsearch
curl http://localhost:9200
部署logstash

创建logstash配置文件

mkdir -p /docker/config/logstash/
vim /docker/config/logstash/logstash.conf

在/docker/config/logstash/目录下创建配置文件logstash.conf,内容如下:

input {
     beats {
         port => 5044
         type => beats
     }
}

output {
     elasticsearch {
         hosts => ["elasticsearch:9200"]
     }
}

启动logstash容器

docker run --name logstash --link elasticsearch:elasticsearch -p 5044:5044 -d -v /docker/config/logstash:/config-dir logstash -f /config-dir/logstash.conf
docker logs logstash
部署nginx应用
docker run -e TZ="Asia/Shanghai" -d -p 80:80 -v "$PWD/logs":/var/log/nginx --name nginx nginx
部署filebeat
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.4.2-x86_64.rpm
rpm -ivh filebeat-7.4.2-x86_64.rpm
vim /etc/filebeat/filebeat.yml
grep -Ev '#|^

# 修改 filebeat.inputs中的enable为true,paths改为——root/logs/*.log
# output.logstash中hosts:["localhost:5044"]

启动filebeat服务

systemctl restart filebeat
systemctl enable filebeat
部署kibana
docker run --name kibana --link elasticsearch:elasticsearch -p 5601:5601 -d kibana
docker ps -a

访问kibana http://[ECS公网地址]:5601/ ,创建Index pattern,Discover查看采集到的日志信息。

基于Docker搭建Zabbix

下载实验需要的镜像

docker pull mysql:5.7
docker pull zabbix/zabbix-server-mysql:centos-latest
docker pull zabbix/zabbix-web-nginx-mysql:latest
docker pull zabbix/zabbix-java-gateway:latest
docker images
部署Zabbbix

创建Docker网络

docker network create -d bridge zabbix
docker network ls

启动mysql容器

docker run -dit -p 3306:3306 --name zabbix-mysql --network zabbix -v /etc/localtime:/etc/localtime --restart always  -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix-password" -e MYSQL_ROOT_PASSWORD="root-password" mysql:5.7
docker run -dit -p 10051:10051 --mount source=zabbix-server-vol,target=/etc/zabbix -v /etc/localtime:/etc/localtime --name=zabbix-server --restart=always --network zabbix -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e  MYSQL_PASSWORD="zabbix-password" -e MYSQL_ROOT_PASSWORD="root-password" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" zabbix/zabbix-server-mysql:centos-latest
docker run -dit -p 8080:8080 -v /etc/localtime:/etc/localtime --name zabbix-web --restart=always --network zabbix -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix-password" -e  MYSQL_ROOT_PASSWORD="root-password" -e ZBX_SERVER_HOST="zabbix-server" zabbix/zabbix-web-nginx-mysql:latest

部署高可用架构

基于四台配置了CentOS 7.7版本的ECS实例、一个负载均衡SLB实例一个云数据库RDS MySQL弹性公网IP和数据传输服务( RDS+DTS数据传输+EIP ) 部署多可用区高可用架构。

配置SLB实例(用于跨可用区挂载多个ECS实例)

访问弹性公网IP控制台——>选择

https://vpc.console.aliyun.com/eip/

绑定弹性公网IP至SLB实例

弹性公网IP页面,找到您的弹性公网实例,单击操作列下的绑定资源实例类型选择负载均衡SLB实例,在选择要绑定的实例区域中,选择您的负载均衡SLB实例,单击确定。

等待IP状态变为已分配,表示您已成功将弹性公网IP至您的SLB实例。

配置SLB实例

访问负载均衡管理控制台

https://slbnew.console.aliyun.com/slb/overview

选择传统型负载均衡CLB(原SLB)>实例管理。找到您的负载均衡SLB实例,单击点我开始配置

协议&监听页签,负载均衡协议选择HTTP,监听端口输入80,在高级配置右侧单击修改调度算法选择轮询(RR),其他配置使用默认值,单击下一步后端服务器页签,选择默认服务器组,单击继续添加。在我的服务器面板的选择服务器中,选择您的所有ECS实例,单击下一步。在我的服务器面板的配置端口和权重中,保持默认配置,单击添加。在后端服务器页签中,配置所有服务器的端口为80,单击下一步健康检查页签、配置审核页签保持默认配置。负载均衡业务配置向导对话框中, 等待配置成功。

当健康检查状态为正常时,表示后端ECS实例已经可以正常处理负载均衡转发的请求。在FireFox浏览器打开新页签,访问http://<弹性公网的IP地址>。多次刷新页面,由于调度算法为轮询,可看到请求会轮流发往每台ECS实例,表示SLB已经配置成功。随意选中ECS实例停止,刷新http://<弹性公网的IP地址> 可看到请求会轮流发往实例状态正常的ECS实例。可以反应出当服务器ECS 宕机时,整体业务场景不会受到影响。

迁移自建数据库至RDS实例

使用数据传输服务将ECS实例上的自建MySQL数据库迁移至RDS实例。

ECS上自建的MySQL数据库

使用root用户登录数据库,例子为MySQL 5.7.36

mysql -uroot -p12345678

修改密码安全策略为低,只校验密码长度,至少8位

set global validate_password_policy=0; 

为名为 bakery数据库创建用户 dts。示例创建的用户为dts,密码为12345678。

grant all on *.*  to 'dts'@'%'  IDENTIFIED BY '12345678';
FLUSH PRIVILEGES;
mysql -udts -p12345678

测试例子数据库bakery中有customer表和product表和相应的数据。

为RDS实例创建账号和数据

访问RDS管理控制台

https://rdsnext.console.aliyun.com/

单击实例列表,找到RDS实例,单击实例ID,左侧,单击账号管理创建账号。例如数据库账号输入lab_user,账号类型选择普通账号,密码输入Passw0rd。数据库管理,创建数据库,例如数据库(DB)名称输入lab_db,授权账号选择lab_user(普通账号),单击创建。回到账号管理页面进行数据库的授权,修改权限进行授权。

使用数据传输服务DTS将ECS实例上自建数据库迁移至RDS实例

访问数据传输控制台

https://dts.console.aliyun.com/

左侧控制台,单击数据迁移,数据迁移页面,迁移任务列表选择地区,然后单击配置迁移任务

源库及目标库页签的源库信息区域中,配置如下参数信息,单击测试连接

源库参数说明:

  • 任务名称:自定义设置数据传输DTS任务名称
  • 实例类型:选择ECS上的自建数据库
  • 实例地区:选择云服务器ECS实例所在地域
  • ECS实例ID:选择云服务器ECS-1实例ID
  • 数据库类型:选择MySQL
  • 端口:输入3306
  • 数据库账号:输入dts
  • 数据库密码:输入12345678

目标库参数说明:

  • 实例类型:选择RDS实例
  • 实例地区:选择您的RDS实例所在地域
  • RDS实例ID:选择您的RDS实例ID
  • 数据库账号:输入lab_user
  • 数据库密码:输入Passw0rd

DTS服务器访问授权对话框中,单击下一步迁移类型及列表页签,在迁移对象中单击例如bakery数据库,单击向右 图标,当选择对象中出现bakery数据库后,然后单击预检查并启动。在预检查对话框中,单击下一步

回到数据迁移页面,迁移任务列表选择地域,单击刷新。等待3-4分钟,迁移任务状态变为已成功,表示数据迁移完成。

验证RDS实例

切换至RDS管理控制台页签,单击登录数据库。数据库账号输入lab_user,数据库密码输入Passw0rd,单击测试连接,可以看到例如customer和product两张表,表示ECS实例上的自建数据库的数据已成功迁移至RDS实例。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
为在阿里云上搭建 Docker Redis 集群,您可以按照以下步骤进行操作: 1. 创建阿里云 ECS 实例:首先,登录阿里云控制台,创建至少3个 ECS 实例作为 Redis 集群的节点。确保这些实例之间可以通过内网IP相互通信。 2. 安装 Docker:在每个 ECS 实例上安装 Docker。您可以参考阿里云官方文档提供的方法来完成安装。 3. 创建 Docker 网络:使用以下命令在每个 ECS 实例上创建一个 Docker 网络: ```shell docker network create redisnet ``` 4. 下载 Redis 镜像:在每个 ECS 实例上执行以下命令,下载 Redis 镜像: ```shell docker pull redis ``` 5. 运行 Redis 容器:在每个 ECS 实例上执行以下命令,启动 Redis 容器,并加入到之前创建的 Docker 网络中: ```shell docker run -d --name redis1 --net redisnet redis docker run -d --name redis2 --net redisnet redis docker run -d --name redis3 --net redisnet redis ``` 这将分别在每个 ECS 实例上启动3个 Redis 容器。 6. 配置 Redis 集群:在任一 ECS 实例上执行以下命令,配置 Redis 集群: ```shell docker exec -it redis1 redis-cli --cluster create <节点1IP:端口> <节点2IP:端口> <节点3IP:端口> --cluster-replicas 1 ``` 请将 `<节点1IP:端口>`、 `<节点2IP:端口>`、 `<节点3IP:端口>` 替换为您实际的 ECS 实例的 IP 地址和 Redis 运行端口。 7. 验证 Redis 集群:您可以执行以下命令验证 Redis 集群是否正常工作: ```shell docker exec -it redis1 redis-cli cluster info ``` 如果一切正常,您应该能够看到有关 Redis 集群的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Koma_zhe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值