系统运维


游戏架构服务部署

<p>[TOC]</p> <h1>编译部署</h1> <h2>1.Nginx</h2> <p>官网:<a href="http://nginx.org"><a href="http://nginx.org">http://nginx.org</a></a></p> <p><strong>第一步:安装依赖包:pcre、 openssl、zlib</strong></p> <p>pcre网址:<a href="https://sourceforge.net/projects/pcre/"><a href="https://sourceforge.net/projects/pcre/">https://sourceforge.net/projects/pcre/</a></a></p> <p><strong>第二步:安装nginx</strong></p> <pre><code> \[root@localhost nginx\]\# wget https://nginx.org/download/nginx-1.6.0.tar.gz  \[root@localhost nginx\]\# tar -xf nginx-1.6.0.tar.gz  \[root@localhost nginx\]\# cd nginx-1.6.0/  \[root@localhost nginx-1.6.0\]\# ./configure  \[root@localhost nginx-1.6.0\]\# make &amp;&amp; make install</code></pre> <p><strong>第三步:启动nginx</strong></p> <pre><code> \[root@localhost nginx-1.6.0\]\# cd /usr/local/nginx/sbin/  \[root@localhost sbin\]\# ll  total 4892  \-rwxr-xr-x. 1 root root 5005472 Oct 19 21:46 nginx  \[root@localhost sbin\]\# ./nginx   #启动nginx  \[root@localhost sbin\]\# ps -ef | grep nginx </code></pre> <h2>2.Redis</h2> <p><strong>准备安装环境</strong>  ``` yum install gcc make tcl gcc-c++ -y</p> <pre><code>**上传安装包,解压编译安装**</code></pre> <p>[root@serverc ~]# ll -rw-rw-r--. 1 redhat redhat 2994242 Sep 14 19:07 redis-7.0.4.tar.gz [root@serverc ~]# tar -zxvf reis-7.0.4.tar.gz [root@serverc ~]# cd redis-7.0.4 [root@serverc redis-7.0.4]# make<br /> [root@serverc redis-7.0.4]# make install</p> <p>注意:如果在编译过程中出现 Jemalloc/jemalloc.h:没有那个文件 没有的错误,在确保 gcc 安装成功后,可执行 make distclean 进行清除后再次安装。</p> <pre><code>**前台启动**</code></pre> <p>[root@serverc ~]# redis-server</p> <pre><code>**警告处理方法**</code></pre> <h1>警告1:最大文件数</h1> <p>5068:M 13 Sep 2022 22:00:28.245 * Increased maximum number of open files to 10032 (it was originally set to 1024).</p> <h1>解决办法</h1> <p>[root@serverc ~]# vim /etc/security/limits.conf root soft nofile 10032 root hard nofile 10032</p> <h1>警告2:TCP监听队列</h1> <p>5068:M 13 Sep 2022 22:00:28.246 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.</p> <h1>解决办法</h1> <p>[root@serverc ~]# vim /etc/sysctl.conf net.core.somaxconn=1024</p> <h1>警告3:内存过载</h1> <p>5068:M 13 Sep 2022 22:00:28.246 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. 5068:M 13 Sep 2022 22:00:28.247 * Ready to accept connections</p> <h1>解决办法</h1> <p>[root@serverc ~]# vim /etc/sysctl.conf vm.overcommit_memory=1</p> <pre><code>**后台启动** ```bash #在 redis 的安装目录中,有一个 redis.conf 文件,我们把这个文件复制到 /etc/目录下: [root@serverc ~]# cp /usr/local/redis/redis.conf /etc/ #然后修改 /etc/redis.conf 文件,把 daemonize 值设置为 yes 即可。 [root@serverc ~]# vim /etc/redis.conf daemonize yes #保存退出后,执行如下命令来启动服务。 [root@serverc ~]# redis-server /etc/redis.conf </code></pre> <p><strong>验证服务</strong></p> <pre><code>##### 使用 redis-cli 脚本来连接 redis 服务  [root@serverc ~]# redis-cli -p 6379  ​  #执行如下命令  127.0.0.1:6379&gt; ping  PONG  #连接成功 #### 关闭服务  [root@serverc ~]# redis-cli shutdown  #也可以进入终端后再关闭  127.0.0.1:6379&gt; shutdown  ​  ps -ef | grep redis</code></pre> <p><strong>开机启动</strong> redis 没有开机启动功能,我们需要编写脚本来实现这个功能。我们在 /etc/systemd/system 目录下新建 redis.service 文件。</p> <pre><code>cd /etc/systemd/system vim redis.service 然后添加以下内容 [Unit] #服务描述 Description=Redis Server Manager #服务类别 After=network.target [Service] #后台运行的形式 Type=forking #服务命令 ExecStart=/usr/local/redis-7.0.4/bin/redis-server /etc/redis.conf #给服务分配独立的临时空间 PrivateTmp=true [Install] #运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3 WantedBy=multi-user.target systemctl start redis.service #启动redis服务 systemctl enable redis.service #设置开机自启动</code></pre> <h2>3.MySQL</h2> <p><strong>下载tar包</strong></p> <pre><code>wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.30-1.el8.x86_64.rpm-bundle.tar</code></pre> <p><strong>解压</strong></p> <pre><code>tar xvf mysql-8.0.30-1.el8.x86_64.rpm-bundle.tar</code></pre> <p><strong>安装</strong></p> <pre><code>dnf localinstall mysql-community-server-8.0.30-1.el8.x86_64.rpm \ mysql-community-client-8.0.30-1.el8.x86_64.rpm \ mysql-community-common-8.0.30-1.el8.x86_64.rpm \ mysql-community-icu-data-files-8.0.30-1.el8.x86_64.rpm \ mysql-community-client-plugins-8.0.30-1.el8.x86_64.rpm \ mysql-community-libs-8.0.30-1.el8.x86_64.rpm</code></pre> <p><strong>启动</strong></p> <pre><code>[root@localhost ~]# systemctl start mysqld</code></pre> <p><strong>登录</strong></p> <pre><code>[root@localhost ~]# grep password /var/log/mysqld.log [root@localhost ~]# mysql -uroot -p</code></pre> <h2>4.Erlang</h2> <p>安装包下载地址:<a href="http://erlang.org/download/otp_src_20.0.tar.gz">http://erlang.org/download/otp_src_20.0.tar.gz</a> <strong>解压</strong></p> <pre><code class="language-bash">[root@Prometheus opt]$ tar -xf otp_src_20.0.tar.gz [root@Prometheus opt]$ chmod -R 777 otp_src_20.0</code></pre> <p><strong>配置</strong></p> <pre><code class="language-bash">mkdir /usr/local/erlang cd /opt/otp_src_20.0/ ./configure --prefix=/usr/local/erlang -with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll -enable-hipe -without-javac</code></pre> <p><strong>编译安装</strong></p> <pre><code class="language-bash">[root@Prometheus otp_src_20.0]$ make &amp;&amp; make install</code></pre> <p><strong>配置环境变量</strong></p> <pre><code class="language-bash">[root@Prometheus otp_src_20.0]$ vim ~/.bash_profile PATH=$PATH:/opt/otp_src_20.0/bin [root@Prometheus otp_src_20.0]$ source ~/.bash_profile</code></pre> <p><strong>验证erlang是否安装成功</strong></p> <pre><code class="language-bash">[root@Prometheus otp_src_20.0]$ erl Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] Eshell V9.0 (abort with ^G) 1&gt; </code></pre> <h2>5.RabbitMQ</h2> <p>下载地址:<a href="https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.8/rabbitmq-server-generic-unix-3.7.8.tar.xz">https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.8/rabbitmq-server-generic-unix-3.7.8.tar.xz</a>   </p> <p><strong>解压</strong></p> <pre><code class="language-bash">[root@Prometheus local]$ tar -xf /opt/rabbitmq-server-generic-unix-3.7.8.tar.xz -C /usr/local/rabbitmq</code></pre> <p><strong>配置环境变量</strong></p> <pre><code class="language-bash">vim /etc/profile export PATH=$PATH:/usr/local/rabbitmq/rabbitmq_server-3.7.8/sbin # 重启生效 source /etc/profile</code></pre> <p><strong>后台启动rabbitmq</strong></p> <pre><code class="language-bash">[root@Prometheus ~]$ cd /usr/local/rabbitmq/rabbitmq_server-3.7.8 # 加上-detached代表后台启动 [root@Prometheus rabbitmq_server-3.7.8]$ ./sbin/rabbitmq-server -detached</code></pre> <p><strong>开启web管理</strong></p> <pre><code class="language-bash">[root@Prometheus rabbitmq_server-3.7.8]$ ./sbin/rabbitmq-plugins enable rabbitmq_management</code></pre> <p><strong>放行rabbitmq的web端口</strong></p> <pre><code class="language-bash">iptables -A RH-Firewall-1-INPUT -s 180.184.138.201/32 -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT iptables -A RH-Firewall-1-INPUT -s 113.108.148.74/32 -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT</code></pre> <p><strong>测试</strong> <strong>180.184.138.201:15672</strong> <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e055e4709f8757d686c25521169534f6&amp;file=file.png" alt="" /> <strong>rabbitmq 默认账号和密码为guest,管理员账号要自己创建</strong></p> <p><strong>创建rabbitmq登录账号、密码</strong></p> <pre><code class="language-bash">[root@Prometheus rabbitmq_server-3.7.8]$ ./sbin/rabbitmqctl add_user admin sy1212 Adding user "admin" ... # 把用户admin授权为administrator(必须做,不然会提示没有管理员权限) [root@Prometheus rabbitmq_server-3.7.8]$ ./sbin/rabbitmqctl set_user_tags admin administrator Setting tags for user "admin" to [administrator] ...</code></pre> <p><strong>登录成功界面</strong> <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=96a595403d1752aeebbcbb0febe5fa13&amp;file=file.png" alt="" /> <strong>设置开机自启</strong></p> <pre><code class="language-bash">[root@Prometheus rabbitmq_server-3.7.8]$ vim /usr/lib/systemd/system/rabbitmq-server.service [Unit] Description=RabbitMQ broker After=syslog.target network.target [Service] #Type=notify User=root Group=root WorkingDirectory=/usr/local/rabbitmq/rabbitmq_server-3.7.8 ExecStart=/usr/local/rabbitmq/rabbitmq_server-3.7.8/sbin/rabbitmq-server ExecStop=/usr/local/rabbitmq/rabbitmq_server-3.7.8/sbin/rabbitmqctl stop [Install] WantedBy=multi-user.target [root@Prometheus rabbitmq_server-3.7.8]$ systemctl start rabbitmq-server.service [root@Prometheus rabbitmq_server-3.7.8]$ systemctl enable rabbitmq-server.service</code></pre> <h2>6.kafka</h2> <p>下载地址:<a href="http://kafka.apache.org/downloads">http://kafka.apache.org/downloads</a> <strong>解压</strong></p> <pre><code>tar -xzf kafka_2.11-2.4.0.tgz</code></pre> <p><strong>启动</strong></p> <pre><code>启动命令:bin/kafka-server-start.sh -daemon config/server.properties 关闭命令:./bin/kafka-server-stop.sh server.properties配置中需要关注以下几个参数: broker.id=0 表示broker的编号,如果集群中有多个broker,则每个broker的编号需要设置 的不同 listeners=PLAINTEXT://:9092 brokder对外提供的服务入口地址 log.dirs=/tmp/kafka/log 设置存放消息日志文件的地址 zookeeper.connect=localhost:2181 Kafka所需Zookeeper集群地址 </code></pre> <h2>7.PHP</h2> <p>下载地址:<a href="https://www.php.net/downloads">https://www.php.net/downloads</a></p> <h1>Ansible部署</h1> <p><strong>1.MySQL</strong></p> <pre><code class="language-playbook"></code></pre>

页面列表

ITEM_HTML