Dubbo微服务影院系列(12):系统部署


运行环境

  • CentOS 6
  • 云服务器

创建用户

创建一个 cinema 用户:

[root@huawei ~]# useradd cinema
[root@huawei ~]# passwd cinema
Changing password for user cinema.
New password: 
BAD PASSWORD: it does not contain enough DIFFERENT characters
Retype new password: 
passwd: all authentication tokens updated successfully.

给予其权限,首先需要赋予当前用户对 /etc/sudoers 的写权限,然后在 sudoers 文件中的 root ALL = (ALL) ALL 下增加一行,赋予其在任何地方执行任何命令的权限:

chmod u+w /etc/sudoers
vim sudoers
## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL
cinema  ALL=(ALL)       ALL

最后,取消当前用户的写权限:

chmod u-w /etc/sudoers

关闭 iptables 防火墙

我们只需要使用云服务器提供的防火墙就够了

service iptables stop

并且关闭开机启动

chkconfig iptables off

安装数据库

下载并安装 MySQL Yum Repository(MySQL 镜像源):

wget https://dev.mysql.com/get/mysql80-community-release-el6-3.noarch.rpm
sudo yum install mysql80-community-release-el6-3.noarch.rpm

验证安装是否成功:

ls /etc/yum.repos.d/

若存在 mysql-community.repo 和 mysql-community-source.repo,则表示 MySQL Yum Repository 安装成功。

查看所有 MySQL 版本:

yum repolist all | grep mysql

禁用最新版,使用 5.7 版本:

sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community

安装 MySQL:

sudo yum install mysql-community-server

开启 MySQL 服务:

sudo service mysqld start

查看 MySQL 初始密码:

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

利用初始密码登录数据库:

mysql -uroot -p

修改初始密码:

set password for 'root'@'localhost' = password('Zjxjwxk19981018_');

查看当前有哪些用户:

mysql> select host, user from mysql.user;
+---------+---------------+
| host          | user                      |
+-------- +---------------+
| localhost | mysql.session    |
| localhost | mysql.sys            |
| localhost | root                       |
+-----------+-------------+

修改 root 用户访问权限,使得其可以被远程访问:

UPDATE mysql.user SET host = '%' WHERE user = 'root' and host = 'localhost';

修改后重启 MySQL:

sudo service mysqld restart

安装 vsftpd

阿里云文档:https://help.aliyun.com/knowledge_detail/60152.html

安装 JDK 和 Zookeeper

安装 JDK

在本地上,从 Oracle 官网下载 jdk 的 tar.gz 包 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html ,并上传到服务器上:

sudo scp jdk-8u251-linux-x64.tar.gz cinema@34.80.107.207:~/install/

如果 scp 出现 Permission denied (publickey,gssapi-keyex,gssapi-with-mic). ,则可能需要在服务器上设置密码登录为 yes

sudo vim /etc/ssh/sshd_config

将 PasswordAuthentication no 中的 “no” 改为 “yes”。

在服务器解压:

tar -zxvf jdk-8u251-linux-x64.tar.gz

添加 JAVA_HOME 环境变量:

vim /etc/profile

添加以下几行:

## JAVA_HOME
export JAVA_HOME=/developer/jdk1.8.0_251

export PATH=$PATH:$JAVA_HOME/bin

生效环境变量:

source /etc/profile

安装 Zookeeper

从 Apache Zookeeper 官网获取 tar.gz 包:

wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

同样,解压之:

tar -zxvf zookeeper-3.4.14.tar.gz

重命名 zoo_sample.cfg 为 zoo.cfg:

mv zookeeper-3.4.14/conf/zoo_sample.cfg zoo.cfg

启动 Zookeeper:

sh zookeeper-3.4.14/bin/zkServer.sh start

查看服务进程:

ps -ef | grep zookeeper

数据初始化、工程打包和部署

将各个模块的 application.yml 配置为线上环境,包括数据库和 FTP 服务器的地址、用户名和密码等。然后直接对父模块使用 maven clean 和 package 打包各个模块为 jar 包,发送到服务器上部署运行即可(jar 包后台运行和日志输出重定向见 CentOS jar包后台运行)。当然,这里是一种比较 low 的部署方式,可以通过 Jenkins,k8s 等进行持续集成。

mvn clean and package

可以通过以下命令查看是否启动成功:

ps -ef | grep xxx
或者
jobs

安装 OpenResty

安装前的准备

您必须将这些库 perl 5.6.1+, libpcre, libssl安装在您的电脑之中。 对于 Linux来说, 您需要确认使用 ldconfig 命令,让其在您的系统环境路径中能找到它们。

Fedora 和 RedHat 用户

推荐您使用yum安装以下的开发库:

yum install pcre-devel openssl-devel gcc curl

构建 OpenResty

下载

从下载页 Download下载最新的 OpenResty® 源码包,并且像下面的示例一样将其解压:

tar -xzvf openresty-VERSION.tar.gz

VERSION 的地方替换成您下载的源码包的版本号,比如说 0.8.54.6

./configure

然后在进入 openresty-VERSION/ 目录, 然后输入以下命令配置:

./configure

默认, --prefix=/usr/local/openresty 程序会被安装到/usr/local/openresty目录。

您可以指定各种选项,比如

./configure --prefix=/developer/openresty \
            --with-luajit \
            --without-http_redis2_module \
            --with-http_iconv_module

试着使用 ./configure --help 查看更多的选项。

配置文件(./configure script)运行出错可以到 build/nginx-VERSION/objs/autoconf.err 找到。 VERSION 的地方必须与OpenResty版本号相对应, 比如 0.8.54.6

需要额外安装 postersql-devel

sudo yum install -y postgresql-devel

make

您可以使用下面的命令来编译:

make

如果您的电脑支持多核 make 工作的特性, 您可以这样编译:

make -j2

假设您是的机器是双核。

make install

如果前面的步骤都没有问题的话,您可以使用下面的命令安装 OpenResty 到您的系统中:

make install

在 Linux 上,通常需要使用 sudo 来获取 root 权限来完成安装。

如果在 prefix 目录有了 openresty 目录,这代表安装完成。

配置 Nginx

编辑 Nginx 的 nginx.conf

vim openresty/nginx/conf/nginx.conf

在其中启用(去掉注释) error_log, pid, http 中的 log_format 和 access_log。

在 http 的 server 中,去掉 access_log 的注释(全局也有一个 access_log,局部优先),并给 server_name 添加域名,将 location / 中修改为 proxy_pass http://127.0.0.1:8081 (此处为我的 gateway 网关模块运行端口),即代理访问 gateway 服务。FTP 服务器代理则为 root /ftpfile/ 。


#user  nobody;
worker_processes  1;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost www.cinema.zjxjwxk.com cinema.zjxjwxk.com

        #charset koi8-r;

        access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://127.0.0.1:8081
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    # vsftpd FTP server
    #server {
    #    listen       80;   
    #    server_name  localhost img-cinema.zjxjwxk.com;

    #    location / {
    #        root   /ftpfile/;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

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

}

在 sbin 中执行以下命令查看配置是否合法

sudo ./nginx -t

运行 nginx

./nginx

验证是否运行成功

netstat -nlp | grep "nginx"

文章作者: 吴鑫康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 吴鑫康 !
评论
 上一篇
Interview Prepare Interview Prepare
英文部分自我介绍(1~2分钟) Good morning everyone, Thank you for giving me this opportunity. It’s my pleasure to introduce myself. M
2020-05-05
下一篇 
Terminal 终端代理加速 Terminal 终端代理加速
方法1(暂时):在终端中直接运行命令 export http_proxy=http://proxyAddres.s:port 这个办法的好处是简单直接,并且影响面很小(只对当前终端有效,退出就不行了)。 如果你用的是 s.s 代理,在当前
2020-04-27
  目录