游戏架构服务部署
<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 && 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> ping
PONG
#连接成功
#### 关闭服务
[root@serverc ~]# redis-cli shutdown
#也可以进入终端后再关闭
127.0.0.1:6379> 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 && 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> </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&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&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>