阿里云
购买云服务器
基础配置:
1.计费方式
按量付费
2.地域选择
华南(深圳)
3.实例
架构-> x86计算
分类-> 计算型
规格族-> 计算型c5 4vCPU 8GiB
价格: 1.260/小时
4.存储
高效云盘 40g
5.操作系统: centos 7.2 64位
网络和安全组:
不用改
系统配置:
自定义密码
root 密码(大小写字符+数字): chuanzhi_jiuye13_123456
主机名-> toutiao-web
分组设置:
不用填
确认订单:
下一步
购买成功(得先冲钱,最低100)
进入控制台
找到公网ip地址
使用Termius连接服务器
1.NEW HOST
Label-> ali-toutiao-web
Address-> 服务器的公网ip地址
SSH
Username -> root
Password -> 密码
2.保存
3.双击打开
4.创建python用户
useradd python
5.修改python用户密码(chuanzhi)
passwd python
从虚拟机中导出数据:
mysqldump -uroot -pmysql --databases toutiao >/home/python/toutiao.sql
上传文件到服务器中:
如果已经存在,走阿里内网更快。
scp toutiao.sql root@120.78.184.139:/root/
设置网络:
sudo yum install net-tools
设置主机名:
hostnamectl set-hostname toutiao-web
安装主MySQL:
1.添加MariaDB软件源
在/etc/yum.repos.d/目录中添加MariaDB.repo文件:
cd /etc/yum.repos.d
sudo vi MariaDB.repo
添加以下内容:
# MariaDB 10.3 CentOS repository list - created 2018-11-24 14:39 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
#baseurl = http://yum.mariadb.org/10.3/centos7-amd64
baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64
#gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
2.安装MariaDB
sudo yum install MariaDB-server MariaDB-client -y
sudo yum install mariadb-devel -y
sudo yum install MariaDB-shared -y
3.修改配置文件
修改 /etc/my.cnf.d/server.cnf
vim /etc/my.cnf.d/server.cnf
在 [mysqld] 标签下方添加
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
修改/etc/my.cnf.d/client.cnf
vim /etc/my.cnf.d/client.cnf
在 [client] 标签下方添加
default-character-set=utf8
修改/etc/my.cnf.d/mysql-clients.cnf
vim /etc/my.cnf.d/mysql-clients.cnf
在 [mysql] 标签下方添加
default-character-set=utf8
4.启动
设置开机自启
sudo systemctl enable mariadb
启动mariadb
sudo systemctl start mariadb
5.设置root账号
mysql_secure_installation
密码: mysql
后面的设置一路yes即可
登录测试: mysql -uroot -p
6.Python客户端依赖
需要使用mysql的python客户端库mysqlclient,安装依赖包:
sudo yum install python-devel -y
sudo yum install zlib-devel -y
sudo yum install openssl-devel -y
安装从MySQL:
1.安装Docker
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3分钟
sudo yum install docker-ce docker-ce-cli containerd.io
启动docker
sudo systemctl start docker
测试docker
sudo docker run hello-world
2.使用Docker安装MySQL
sudo docker pull mariadb:10.3.13
3.配置MySQL主从同步
编辑MySQL master的配置 /etc/my.cnf.d/server.cnf
vim /etc/my.cnf.d/server.cnf
在 [mysqld] 标签下方添加
log-bin=mysql-bin
server-id=1
重启主mysql
sudo systemctl restart mariadb
编辑MySQL slave的配置
把master的配置拷过去作为从的配置
sudo cp -r /etc/my.cnf.d/ /opt/my.cnf.d-slave
修改从的配置
vim /opt/my.cnf.d-slave/server.cnf
在 [mysqld] 标签下方修改
server-id=10
read_only=on
port=8306
启动docker容器mysql slave
sudo docker run --name mariadb -v /opt/my.cnf.d-slave:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=mysql -v /opt/mysql-slave-data:/var/lib/mysql -d --network=host mariadb:10.3.13
为mysql master添加用于同步复制的账号
mysql -uroot -p
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';
FLUSH PRIVILEGES;
查看mysql master状态
show master status;
设置mysql slave
mysql -uroot -p -h 127.0.0.1 -P 8306
change master to master_host='127.0.0.1', master_user='slave', master_password='slave',master_log_file='mysql-bin.000006', master_log_pos=590;
注意: master_log_file要改成show master status中的文件名
master_log_pos要改成show master status中的Position值
start slave;
show slave status\G
导入头条数据
mysql -uroot -p < toutiao.sql
安装redis
1.从虚拟机中上传redis压缩文件到服务器中
scp redis-4.0.13.tar.gz root@120.78.184.139:/root/
2.解压
tar -zxvf redis-4.0.13.tar.gz
3.安装
安装gcc。 编译redis,需要用到gcc编译器
sudo yum install gcc
再装redis
cd redis-4.0.13
sudo make
sudo make install
配置redis集群
1.从虚拟机中上传redis集群配置
在服务器中创建redis目录
mkdir -p /etc/redis
在虚拟机中上传文件
scp /etc/redis/* root@120.78.184.139:/etc/redis
2.安装Ruby
wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.1.tar.gz
tar -zxvf ruby-2.6.1.tar.gz
cd ruby-2.6.1
./configure
# make 比较耗时(4分钟)
sudo make
sudo make install
gem install redis
3.从服务器中上传redis启动脚本
scp /opt/redis-* root@120.78.184.139:/opt
4.创建存放redis数据库的文件夹
mkdir -p /var/lib/redis/7000
mkdir -p /var/lib/redis/7001
mkdir -p /var/lib/redis/7002
mkdir -p /var/lib/redis/7003
mkdir -p /var/lib/redis/7004
mkdir -p /var/lib/redis/7005
mkdir -p /var/lib/redis/6381
mkdir -p /var/lib/redis/6380
4.启动redis集群实例
/opt/redis-cluster-start.sh
5.启动cluster集群
sudo cp /root/redis-4.0.13/src/redis-trib.rb /usr/local/bin/
redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
6.测试redis集群
redis-cli -c -p 7000
redis主从
1.使用脚本启动redis主从
/opt/redis-replication-start.sh
2.测试
redis-cli -p 6381
安装rabbitmq
1.安装erlang
在/etc/yum.repos.d/目录中添加rabbitmq_erlang.repo文件
cd /etc/yum.repos.d
sudo vi rabbitmq_erlang.repo
在文件中添加
# In /etc/yum.repos.d/rabbitmq_erlang.repo
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
执行安装(3分钟)
sudo yum install erlang
2.安装RabbitMQ
rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
在/etc/yum.repos.d/目录中添加rabbitmq_server.repo文件
cd /etc/yum.repos.d
vim rabbitmq_server.repo
在文件中添加
# In /etc/yum.repos.d/rabbitmq_server.repo
[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1
执行安装
sudo yum install rabbitmq-server -y
3.启动
sudo chkconfig rabbitmq-server on
sudo systemctl start rabbitmq-server.service
4.头条项目账号设置
sudo rabbitmqctl add_user python rabbitmqpwd
sudo rabbitmqctl add_vhost toutiao
sudo rabbitmqctl set_user_tags python administrator
sudo rabbitmqctl set_permissions -p toutiao python ".*" ".*" ".*"
安装Elasticsearch5
1.安装wget
sudo yum install wget -y
2.下载jdk 官网密码: 13423682841_qinzhiWang
下载页:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
得先创建账号
选中xxx-linux-x64.rpm 或者 xxx-linux-x64.tar.gz
安装
rpm -ivh xxx-linux-x64.rpm
安装后查看java版本
java -version
设置环境变量
vim ~/.bash_profile
在最后添加
export JAVA_HOME=/usr/java/default
3.安装Elasticsearch
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
在/etc/yum.repos.d/ 中编辑elasticsearch5x.repo
cd /etc/yum.repos.d/
vim elasticsearch5x.repo
添加以下内容
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
执行安装(10分钟)
sudo yum install elasticsearch
4.启动
设置开机启动
sudo systemctl enable elasticsearch.service
启动elasticsearch
sudo systemctl start elasticsearch.service
5.测试
curl localhost:9200/_cluster/health?pretty
6.安装中文分词器
上传ik文件
scp elasticsearch-analysis-ik-5.6.16.zip root@120.78.184.139:/root
安装
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///root/elasticsearch-analysis-ik-5.6.16.zip
7.重新启动
sudo systemctl restart elasticsearch
8.测试
curl -X GET 127.0.0.1:9200/_analyze?pretty -d '
{
"analyzer": "standard",
"text": "我是&中国人"
}'
curl -X GET 127.0.0.1:9200/_analyze?pretty -d '
{
"analyzer": "ik_max_word",
"text": "我是&中国人"
}'
9.Logstach安装(换成脚本导入import_es_data.py)
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
在 /etc/yum.repos.d/ 中创建logstash.repo文件
vim /etc/yum.repos.d/logstash.repo
输入内容
[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
安装 (超慢,提前安装)
sudo yum install logstash
安装插件
cd /usr/share/logstash/bin/
sudo ./logstash-plugin install logstash-input-jdbc
sudo ./logstash-plugin install logstash-output-elasticsearch
10.上传mysql-connector到服务器
scp mysql-connector-java-8.0.13.tar.gz python@120.78.184.139:/home/python
解压
tar -zxvf mysql-connector-java-8.0.13.tar.gz
11.执行脚本导入数据到elasticsearch
/home/python/toutiao-backend/scripts/import_elasticsearch_data.sh
git
1.安装
yum install git -y
配置虚拟环境
1.安装虚拟环境(使用python 用户)
sudo pip install virtualenv
sudo pip install virtualenvwrapper
配置虚拟环境命令环境
创建目录用来存放虚拟环境
mkdir $HOME/.virtualenvs
打开~/.bash_profile文件,并添加如下
vim ~/.bash_profile
export WORKON_HOME=$HOME/.virtualenvs
source /usr/bin/virtualenvwrapper.sh
测试:重连
workon
2.安装python3
下载 ----ali02
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
解压
xz -d Python-3.6.4.tar.xz
tar -xf Python-3.6.4.tar
安装sqlite3(一定要先装,再装python,不然会报各种未知错误)
yum install sqlite-devel
编译
cd Python-3.6.4
./configure prefix=/usr/local/python3
make && make install
配置python3的搜索路径:
vim ~/.bash_profile
添加以下内容
export PATH=$PATH:/usr/local/python3/bin/
创建头条虚拟环境
mkvirtualenv -p python3 toutiao
安装依赖
workon toutiao
cd /home/python/toutiao-backend
pip install -r requirements.txt
配置项目代码
1.使用python用户登录
2.git配置永久保存密码
git config --global credential.helper store
3.使用git拉取代码
git clone http://git.meiduo.site/jiuye13/toutiao-backend.git
4.创建logs文件夹
mkdir -p /home/python/logs
5.运行代码测试
export FLASK_APP=toutiao.main
export FLASK_ENV=production
flask run
测试:
curl localhost:5000
6.使用脚本运行代码
sh /home/python/toutiao-backend/scripts/toutiao_app.sh
安装supervisord
1.安装
pip install supervisor
2.生成默认配置文件
echo_supervisord_conf > /etc/supervisord.conf
3.修改/etc/supervisord.conf 文件
;[include]
;files = relative/directory/*.ini
改成
[include]
files = /home/python/etc/supervisor/*.conf
创建存放supervisor配置文件夹
mkdir -p /home/python/etc/supervisor/
4.启动supervisord(使用python用户)
supervisord -c /etc/supervisord.conf
5.配置项目由supervisord管理
创建软链接
ln -s /home/python/toutiao-backend/scripts/toutiao_app_supervisor.conf /home/python/etc/supervisor/toutiao_app_supervisor.conf
ln -s /home/python/toutiao-backend/scripts/im_supervisor.conf /home/python/etc/supervisor/im_supervisor.conf
ln -s /home/python/toutiao-backend/scripts/apscheduler_supervisor.conf /home/python/etc/supervisor/apscheduler_supervisor.conf
6.给命令加上执行权限
chmod +x /home/python/toutiao-backend/scripts/im.sh
chmod +x /home/python/toutiao-backend/scripts/toutiao_app.sh
chmod +x /home/python/toutiao-backend/scripts/apscheduler.sh
6.重新加载配置
supervisorctl reload
7.测试
curl localhost:5000
nginx
1.安装nginx
yum install nginx
2.启动nginx
sudo nginx
3.配置反向代理访问项目
创建nginx日志文件夹
mkdir -p /home/python/logs/nginx
添加toutiao配置文件
vim /etc/nginx/conf.d/toutiao.conf
upstream toutiao-api-backend {
server localhost:5000;
}
server {
listen 80;
server_name toutiao_jiuye13.com;
access_log /home/python/logs/nginx/toutiao_jiuye13.com.access.log main;
location / {
client_max_body_size 5M;
proxy_pass http://toutiao-api-backend;
proxy_set_header X-Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header Connection '';
proxy_http_version 1.1;
}
}
添加im配置文件
vim /etc/nginx/conf.d/im.conf
upstream im-backend {
server localhost:7777;
}
server {
listen 80;
server_name toutiao_jiuye13_im.com;
access_log /home/python/logs/nginx/toutiao_jiuye13_im.com.access.log main;
location /socket.io/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header User-Agent $http_user_agent;
proxy_pass http://im-backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
重新加载配置
ngnix -s reload
4.配置本地hosts指向服务器
vim /etc/hosts
120.78.184.139 toutiao_jiuye13.com
120.78.184.139 toutiao_jiuye13_im.com
5.测试
toutiao_jiuye13.com