前言
新购买的腾讯云服务器需要在上面进行环境的一些处理以及软件安装,这里我介绍一下我的服务器初始化过程。
系统
CentOS Linux release 7.5.1804 (Core)
Linux查看系统版本:1
cat /etc/*release*
初始化
用户
添加用户与组
1 | # 新建用户 |
配置用户root权限
root用户vim /etc/sudoers1
2root ALL=(ALL) ALL
mingliang.gao ALL=(ALL) ALL
其他
1 | 删除用户:userdel 用户名 |
VIM
新的云服务器初始化环境只有VI,但是编辑的时候VIM很好用,需要安装。
安装
1 | yum -y install vim |
配置
vi /etc/vimrc,打开vimrc配置问题添加一下2行简单配置,如果详细配置请百度。1
2set nu " 设置显示行号
set showmode " 设置在命令行界面最下面显示当前模式等
SSH
用于免密码连接登录。1
2ssh-copy-id 用户@服务器IP
输入用户登录密码
详情:SSH之免密码登录
SWAP
有些人可能对swap可能陌生,简单说下SWAP可以理解成虚拟内存,当服务器物理内存不足时,拿出部分硬盘指定空间当swap分区(虚拟成内存)使用,从而解决内存容量不足的情况。
可以先free一下看下是否又swap,如果想配置请用root用户操作。
生成
1 | dd if=/dev/zero of=/var/swap bs=1024 count=3072000 |
解释一下dd,可以理解成dd获取了磁盘的一块空间,有兴趣的可以深入学习一下dd。
Swap开机初始化
vi /etc/fstab,最后一行添加1
swap /var/swap swap defaults 0 0
清理swap
1 | swapoff /var/swap |
Swap活跃使用度
vim /proc/sys/vm/swappiness,范围是0~100,指数越大使用的活跃度越大,建议30-50即可。
git
查看
1 | which git |
安装
1 | yum -y install git |
配置
下面是全局配置,也可以在单独的git项目中单独配置属于项目的git配置。1
2
3
4
5
6
7# 用户名
git config --global user.name "mingliang.gao"
# 邮箱
git config --global user.email "gaoming971366@163.com"
# 查看配置
git config --list
MariaDB
gunicorn
python项目需要用到,提前建好,用来存放日志。1
mkdir -p /var/log/gunicorn
Supervisor
安装
1 | yum install -y supervisor |
查看下进程
1 | ps -ef | grep supervisord |
系统默认的启用命令是:/usr/bin/supervisord -c /etc/supervisord.conf
自定义配置
切换root执行。1
2
3
4echo_supervisord_conf > /etc/supervisord.d/supervisord.conf
cd /etc/supervisord.d
mkdir include
mkdir -p /var/log/supervisord
echo_supervisord_conf是配置文件写入,把项目配置文件与是sp的配置文件放在一起便于管理,建立include存放项目的对应配置文件,以下是本人的配置文件:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29[unix_http_server]
file=/var/run/supervisor.sock ;;UNIX socket 文件,supervisorctl会使用其与supervisord通信
chmod=0777 ;;socket文件的mode,默认是0700,改成0777: chmod 777 /var/run/supervisor.sock
;chown=nobody:nogroup ;;socket文件的owner,格式:uid:gid
;[inet_http_server] ;;web管理界面
;port=0.0.0.0:10001 ;;Web管理后台运行的IP和端口
;username=mingliang.gao ;;登录管理后台的用户名
;password=971366 ;;登录管理后台的密码
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ;;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致
;serverurl=http://0.0.0.0:10001 ;;通过HTTP的方式连接supervisord
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisord]
logfile=/var/log/supervisord/supervisord.log ;;日志文件
logfile_maxbytes=50MB ;;日志文件大小,超出会rotate,默认 50MB。如果设成0,表示不限制大小
logfile_backups=10 ;;日志文件保留备份数量默认10,设为0表示不备份
loglevel=info ;;日志级别,默认info,其它: debug,warn,trace
pidfile=/var/run/supervisord.pid ;;pid 文件
nodaemon=false ;;是否在前台启动,默认是false,即以 daemon 的方式启动
minfds=1024 ;;可以打开的文件描述符的最小值,默认 1024
minprocs=200 ;;可以打开的进程数的最小值,默认 200
[include]
files = /etc/supervisord.d/include/*.conf
启动命令:/usr/bin/supervisord -c /etc/supervisord.d/supervisord.conf
-c为指定配置文件。
这样启动的supervisor如果重启需要杀死进程:1
2ps -ef | grep supervisord
kill 进程ID
为了方便我把2个命令合并到一起:1
ps -ef | grep supervisord | grep -v grep | awk -F " " '{print $2}' | xargs kill
直接执行上面这句话就可以直接杀死进行,这是个通用杀死指定进程的命令,只需要更换grep supervisord需要查询过滤的进程关键字。
其他
贴一下自己的supervisord项目配置文件。1
2
3
4
5
6
7
8
9
10
11
12[program:htinfo_mngs]
directory=/home/ht/projects/htinfo_mngs
command=.venv/bin/gunicorn -c etc/prod/gunicorn.conf wsgi:app ;; 如果ERROR (no such file),把gunicorn启动命令写全
autostart=False ;; 是否开机自动启动
autorestart=False ;; 是否挂了自动重启
redirect_stderr=True ;; 是否把stderr定向到stdout
stopasgroup=True
;;user=mingliang.gao ;;用哪个用户启动进程,默认是root
priority=999 ;;进程启动优先级,默认999,值小的优先启动
stdout_logfile_maxbytes=20MB ;;stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20 ;;stdout 日志文件备份数,默认是10
stdout_logfile=/var/log/supervisord/supervisor_htinfo_mngs.log
Nginx
检查gcc环境
gcc编译器。1
2
3
4
5# 检查gcc环境
gcc -v
# 安装
yum -y install gcc
安装Nginx
root用户或者sudo命令。1
2
3
4
5# 查看版本
yum list | grep nginx
# 安装
yum -y install nginx
安装后执行whereis Nginx
- 执行目录:/usr/sbin/nginx
- 模块所在目录:/usr/lib64/nginx
- 配置所在目录:/etc/nginx/
- 默认站点目录:/usr/share/nginx/html
启动
1 | # 启动/停止/重启 |
查看进程
1 | ps -ef | grep nginx |
开放端口
1 | # 添加端口 |
这里根据自己的项目需求,对外开放端口。
配置
下面是我的nginx配置,仅供参考:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user root;
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
# use epoll
worker_connections 1024;
}
# sendfile on;
# tcp_nopush on;
# keepalive_timeout 65;
# gzip压缩功能设置
# gzip on;
# gzip_min_length 1k;
# gzip_buffers 4 16k;
# gzip_http_version 1.0;
# gzip_comp_level 6;
# gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
# gzip_vary on;
# http_proxy 设置
# client_max_body_size 10m;
# client_body_buffer_size 128k;
# proxy_connect_timeout 75;
# proxy_send_timeout 75;
# proxy_read_timeout 75;
# proxy_buffer_size 4k;
# proxy_buffers 4 32k;
# proxy_busy_buffers_size 64k;
# proxy_temp_file_write_size 64k;
# proxy_temp_path /usr/local/nginx/proxy_temp 1 2;
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2 default_server;
# listen [::]:443 ssl http2 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
}
- 因为有些参数在腾讯云服务器不能识别,所以有些被注释。
- user root本人使用root用户启动,使用哪个用户就配置哪个
server配置,单独文件,存放/etc/nginx/conf.d1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29server {
listen 80;
server_name _;
access_log /var/log/nginx/default_server.access.log main;
root /home/mingliang.gao/projects/blog;
location = / {
# index index.html index.htm;
index root.html;
}
location / {
index index.jsp index.html index.htm;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /error.html;
location = /40x.html {
}
error_page 500 502 503 504 /error.html;
location = /50x.html {
}
}
- server_name:域名
- listen:端口
常用命令
1 | # 指定配置文件 |
访问
配置完把nginx重启之后,访问IP:PORT。
源码安装
详细连接
MariaDB安装与配置
Git服务器仓库并上传
Supervisor学习:https://www.cnblogs.com/xuezhigu/p/7660203.html