1. 服务器初始化配置
1.1 用户及权限
增加用户,设置密码
useradd git
passwd git
获取管理员列表的写权限
chmod u+w /etc/sudoers
修改管理员列表
vi /etc/sudoers
在root ALL=(ALL) ALL下添加:
git ALL=(ALL) ALL
退出vim后,撤销写权限
chmod u-w /etc/sudoers
1.2 zsh安装配置
su git
cd
sudo yum -y install zsh git
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
chsh -s /bin/zsh
先在root用户安装oh-my-zsh可能会导致权限问题
1.3 ssh无密码登录
在本地终端运行这两行命令。
ssh-keygen -t rsa
ssh-copy-id root@server
如果出现
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
,那么rm ~/.ssh/known_hosts
或者删除其中对应的ip项。
1.4 python3.4安装配置
安装python36请看文章末尾。
- 安装python34
sudo yum -y install python34
- 修改pip源
mkdir ~/.pip && vi ~/.pip/pip.conf
添加如下内容
[global]
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple/
- 备份python2.7,修改默认为python3
sudo mv /usr/bin/python /usr/bin/python.bak
sudo ln -s /usr/bin/python3 /usr/bin/python
- 修改yum使用python2.7(不支持python3)
sudo vi /usr/bin/yum
#!/usr/bin/python2.7 # 修改为python2.7
- 修改urlgrabber
sudo vi /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python2.7 # 使用python2.7
- 安装pip3
sudo mv /usr/bin/pip /usr/bin/pip.bak
wget bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
2. 数据库安装配置
2.1 安装并启动mariadb
mariadb是mysql在centos上的默认版本,建议去网上了解下
sudo yum install mariadb-server python34-devel readline-devel
sudo pip install pymysql3
2.2 数据库中创建git用户并授权
切换到root用户,进入数据库
su -
mysql
在mysql> 提示符下创建用户
insert into mysql.user(Host,User,Password) values("localhost","git",password("gitpasswd"));
# 这样就创建了一个名为:git 密码为:gitpasswd 的用户。
flush privileges;
# 赋予用户权限
GRANT ALL ON *.* TO 'git'@'localhost';
2.3 修改默认使用utf-8
sudo vi /etc/my.cnf
添加以下内容
[mysqld]
character_set_server = utf8
[mysqld_safe]
character_set_server = utf8
[mysql]
default-character-set = utf8
[mysql.server]
default-character-set = utf8
[client]
default-character-set = utf8
进入mysql
SET NAMES 'utf8';
详情点击查看
2.4 创建可能会使用的数据库(示例)
不能通过flask-sqlalchemy创建数据库,必须要进入mysql手动创建
create database data;
create database data_dev;
create database data_test;
3. vim、zsh和虚拟环境配置安装
3.1 virtualenvwrapper并配置
sudo pip install virtualenvwrapper
source /usr/bin/virtualenvwrapper.sh
mkvirtualenv -p /usr/bin/python3 env1
3.2 复制vim和zsh的配置(仅对作者有效)
scp /mnt/d/molokai.vim git@host:/usr/share/vim/vimfiles/colors
scp /mnt/d/.vimrc git@host:/home/git
scp /mnt/d/.zshrc git@host:/home/git
3.3 修改zshrc以适合Centos
source /usr/bin/virtualenvwrapper.sh
workon env1
export ZSH=/home/git/.oh-my-zsh #(此行仅对git用户有效)
4. nginx安装配置
需要挂载数据盘请看文章末尾。
4.1 安装
sudo yum install nginx
4.2 备份config并修改
sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
sudo vi /etc/nginx/nginx.conf
4.3 修改其中的server部分
server {
listen 80;
# 这是服务器的外部域名(不建议用IP地址)
server_name example.com www.example.com;
location / {
# 这里是指向gunicorn服务器的端口
proxy_pass http://localhost:8080;
}
location /static {
# 配置静态文件的相对地址
alias /mnt/www/app/static
}
}
4.4 解决80端口占用问题
pgrep nginx
# 杀死进程
sudo killall -9 nginx
4.5 运行修改后的conf
# 启动默认的/etc/nginx/nginx.conf
sudo nginx
# 使用其他conf
sudo nginx -c /etc/nginx/nginx_your_config.conf
# 如果已经在运行了,则可以用非中断启动
sudo nginx -s reload
5. Git源码控制
5.1 创建裸仓库和工作目录(在服务器终端)
裸仓库用来进行推送及多人合作,工作目录用来运行应用。
- 创建裸仓库
cd /mnt
sudo git init --bare www.git
- 在同一位置创建工作目录
sudo git clone www.git
- 修改两个目录的权限
sudo chown -R git:git /mnt/www
sudo chown -R git:git /mnt/www.git
5.2 拉取裸仓库,修改后推送(在本地终端)
- 拉取裸仓库
git clone git@host:/mnt/www.git
- (添加代码后)推送到远程
git add --all
git commit -m '第一次更新'
git push origin master
5.3 使用git钩子自动拉取更新(在服务器终端)
现在本地修改只能推送到裸仓库www.git,需要每次手动在服务器的工作目录下git pull origin master
,现在我们来实现自动拉取。
-在服务器上编写自动更新钩子
cd /mnt/www.git/hooks
vi post-receive
添加如下内容
#!/bin/sh
cd /mnt/www
unset GIT_DIR //清空git的工作目录,git才可以进入/mnt/www/工作目录(否则会报错:remote: fatal: Not a git repository: '.')
git config --list
git pull origin master
给钩子文件添加执行权限
sudo chmod +x post-receive
5.4 Git配置参考资料:
服务器上的 Git - 配置服务器
通过Git钩子自动部署 (Git钩子必须使用裸仓库)
github网站必须用git协议,要修改git remote,点击查看详情
6. gunicorn安装配置
6.1 安装
pip istall gunicorn gevent
6.2 运行
切换到/mnt/www目录,并运行其中的wsgi文件中的application应用
cd /mnt/www
gunicorn -w 8 -t 90 -k 'gevent' -b 127.0.0.1:8080 wsgi:application
-k 'gevent'
使用gevent异步模式,提高了响应速度。-t 90
设置了超时时间为90秒,不然有时会出现404错误。
7. 服务器绑定多域名和守候进程
7.1 服务器绑定多域名
阿里云域名的管理中,可以转移到其他账号。
在nginx.conf中,添加一个server块,修改域名和代理不同的端口。然后用gunicorn在这个端口上运行不同的应用。
7.2 守护进程
-
sudo yum install screen
安装screen -
screen
命令进入screen子界面 - 运行你的程序,按下
Ctrl + a
放开,再按d
键切回主界面。(此时可以断开ssh) -
screen -ls
查看子界面代号(重连ssh后) -
screen -r 子界面代号
运行子界面
8. 其他
8.1 安装python36
https://janikarhunen.fi/how-to-install-python-3-6-1-on-centos-7.html
如果nltk暂时不支持3.6,就先安装3.5。
8.2 挂载数据盘
https://help.aliyun.com/document_detail/25426.html?spm=5176.doc25422.2.4.a5TLTr