## 购买硬件
- 原 stg 为 500G + 20G
 - 新的可直接500G

- 包年包月，可用区A，自动续费
- 通用型g3i: 8 vCPU，32GB 内存，500GB SSD
- 公共镜像，CentOS 7.9，安全加固
- 公网 5mb
- 内网，使用 emr-vpc 下的子网 ad_a

## 配置

### bashrc
vi ~/.bashrc 
增加内容：
```
alias ll='ls -lh'
alias gp='git pull'
alias gf='git fetch'
alias gs='git status'
alias gl='git log'
alias xps='ps o pid,lstart,rss,user,cmd -C'

alias prdadxredis='redis-cli -h redis-cnlflyo8lhn3noc6a.redis.ivolces.com --raw'
alias envcat='cat nginx_adsurvey_module/core/publish/env.h'
alias envim='vim nginx_adsurvey_module/core/publish/env.h'
```

### ssh
```
cd ~/.ssh
ssh-keygen -t rsa  然后一直回车
```

### 创建目录
```
root下
mkdir /data && cd /data && mkdir appstore log frank
cd appstore && mkdir appstorelog nginx product 
mkdir -p /data/log/appstore-thrift
cd /data/appstore/appstorelog && mkdir action impre match
chown nobody action impre match && chgrp nobody action impre match
mkdir -p /data/appstore/product/appstore-nginx/ && mkdir -p /data/appstore/product/backup && mkdir /data/deploy
```

### yum 安装
```
yum -y update
yum -y install gcc-c++
yum -y install git redis tree
yum -y install pcre-devel cppunit-devel 
yum -y install libcurl-devel libzip-devel bzip2-devel
yum -y install openssl openssl-devel
yum -y install glibc-static libstdc++-static
yum -y install autoconf automake libtool
yum -y install jsoncpp jsoncpp-devel
yum -y install snappy-devel
yum -y install libxml2-devel xz-devel
yum -y install bison byacc flex
```

### pip
- 获取pip安装源码，放到 /data/soft/get-pip.py
- 执行 python /data/soft/get-pip.py

### Fabric
- 使用源码安装

### hosts
```
180.76.51.115  git.dt-dtg5.com 注意这个IP是原来百度云的
```


### 手动安装开发库
- 某些库可通过 yum 安装

- boost
```
yum 安装的boost版本过低，为1.53，thrift要求至少1.54，原百度云上，安装的是1.55，所以手动安装。
./bootstrap.sh --with-libraries=all --with-toolset=gcc
./b2 -j7 toolset=gcc
./b2 install
```

- avro
 - 百度云的 nginx-stg 下，/data/soft 里有源码。
 - 可能有 liblzma 的报错，不用管。
 - 将 /usr/local/lib 加入到 /etc/ld.so.conf 末尾，并执行 ldconfig

- protobuf
```
注意，现在gcc版本是4.8.5，版本过低，不支持太高的protobuf版本，暂时使用protobuf3.1.0
 - 准备好源码，stg下，在/data/soft
 - 注意把 gmock 文件夹拷贝进来，否则 autogen.sh 会卡住。
 - ./autogen.sh  # 生成 configure 文件
 - ./configure
 - make -j7
 - make install
 - ldconfig
```

- golang
```
下载：https://golang.google.cn/dl/go1.22.4.linux-amd64.tar.gz
解压，将解出来的go文件夹，移到 /use/local/ 路径下。

编辑 /etc/profile，增加内容:
PATH=/usr/local/go/bin:$PATH
export GOPROXY=https://goproxy.cn,direct

编辑 ~/.bash_profile，增加内容：
GOPATH=~/go
export GOPATH
PATH=$PATH:$HOME/bin:$GOPATH/bin
export PATH

安装 golint
git clone https://github.com/golang/lint.git
cd lint/golint/ && go install
```

- thrift
```
注意，依赖 boost
./bootstrap.sh
./configure --with-cpp --with-boost=/usr/include/boost --without-csharp --without-erlang --without-perl --without-php --without-php_extension --without-ruby --without-haskell --with-go --without-lua
make -j7 && make install
```

- librdkafka
```
拷贝源码，注意 lds-gen.py 和 configure 两个文件，需要 chmod u+x
./configure && make -j7 && make install
```

- hiredis
```
拷贝源码
make -j7 && make install
```

- libevent
```
thrift 需要用到
找到源码
./configure -prefix=/usr
make -j7 && make install
```

- glog
```
在原服务器上的头文件里，找不到glog版本，通过 /usr/local/lib64/cmake/glog/ 里的 cmake 文件，找到版本号。
版本 0.3.5
获取源码
./configure
可能需要运行 autoreconf -ivf 
make -j7 && make install &&ldconfig
```

- cmake
```
下载最新的cmake源码
./bootstrap --prefix=/usr
make -j7
make install
```

- spdlog
```
huitoutiao的 Thriftc 需要
要求较新的cmake
cmake -DSPDLOG_BUILD_EXAMPLE=OFF ..  编译例子时出错，加参数不编译例子。

```

- php
```
这里没指定安装路径，导致配置文件路径怪异。
最好加上安装路径
./configure --enable-fpm --with-openssl --with-zlib --with-curl --enable-zip --prefix=/usr
make -j7 && make install
装完之后，需要配置 php-fpm 相关配置
/usr/local/etc/php-fpm.d/ 路径下，将 www.conf.default 复制，命名为 www.conf，并参考旧配置做适当修改
同理
/usr/local/etc/php-fpm.conf.default 也做类似操作。
```

- php 的库 laravel
```
下载 composer的安装脚本：https://getcomposer.org/installer
使用 php 执行：`php installer` 可能有点慢
mv composer.phar /usr/local/bin/composer
在 php 源码（/var/www/appstore-adsurvey）下执行：
composer install
composer update
composer install
php artisan key:generate
可能需要重启 php-fpm
```

### 编译 ssp
```
git clone http://frank.chen:Qwer%401234@git.dt-dtg5.com/t1/appstore-nginx.git
ssh configure.sh
make -j7
make install
cd /data/appstore/nginx
./sbin/nginx
chmod nobody logs
```

- 代码调整
```
ssp-notify 地址：NOTIFY_FORWARD_URL 的定义
redis 地址
代理服务器IP
kafka 地址
ZZY 的预测 IP
搜索一遍 getContext 查看都有哪些http请求。
```

- 允许 coredump
```
修改limits.conf文件
/etc/security/limits.conf
*     soft  core unlimited
*     hard  core unlimited
```

### 编译 Thriftc
```
git clone http://frank.chen:Qwer%401234@git.dt-dtg5.com/t1/appstore-thrift.git
以cmake方式编译，需要 make install
以nohup方式执行:
nohup Thriftc &

注意，先手动改代码里的 redis 地址。
```


### 定时任务
- 在 /var/spool/cron/ 下 的 root
```
/data/appstore/shell/nginxLogRotate.sh                 # 这里找不到 py 脚本，所以不用了
0 0 * * * sh /data/appstore/shell/cleanNginxHistory.py # 这里找不到 py 脚本，所以不用了
*/1 * * * * cd /data/appstore/IntimeStat/ && python main.py > /data/log/IntimeStat.log 2>&1

0 0 1,15 * * sh /data/appstore/nginx/restart.sh # 这里由于修复了内存泄漏，不需要定时重启了。
```

## 安全设置
- 访问redis 需要白名单
- 将新购服务器的内网ip地址，加入 白名单里的 广告投放组。
