阿里云linux服务器ubuntu16.04配置记录

以前在阿里云买了一台centos服务器,自己拿来倒腾玩,由于工作中一直用的ubuntu,抽时间将系统镜像更换为了ubuntu16.04

一、 服务器初始化配置

1、子用户创建

  • 使用root登录服务器
    登录命令:ssh root@ip ip地址更换为自己的服务器
  • 创建子用户有两个命令
    • adduser: 会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码。

    • useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。

  • 创建一个子用户,通过子用户来操作
$~ adduser test

这里我们使用 addtest 命令,这样在创建用户名时,就创建了用户的主目录以及密码。
如果使用 useradd 命令,只会简单的创建一个用户,相关的目录和密码需要通选命令指定。

2、在根目录下创建项目文件夹

我们在根目录下创建一个data文件夹下,用于部署项目代码

# 根目录下创建一个文件夹,由于用户和用户组属于root的,需要修改所属用户和用户组
$ sudo mkdir /data   
# 修改文件夹所属用户组和用户
$ sudo chown liang:liang /data

3. 简单的快捷自动登录

为了避免每次输入账号密码麻烦,可以简单的使用expect自动登录

  1. mac下首先安装expect
$~ brew install expect
  1. 在家目录下创建登录脚本 login.sh,名字个人喜好定义
$~ mkdir login.sh
  1. 给该脚本可执行权限
$~ sudo chmod u+x login.sh
  1. 打开login.sh,添加如下配置
#!/usr/bin/expect

set timeout 30
# root 替换为登录用户名
# 127.0.0.1 替换为自己登录ip地址
spawn ssh root@127.0.0.1
expect {
        "(yes/no)?"
        {send "yes\n";exp_continue}
        "password:"
        # passwd 替换为登录密码
        {send "passwd\n"}
}
interact

因为expect使用的不是bash,所以bash login.sh 会报错,切换到脚本目录使用如下命令执行:

$~ ./login.sh

如果这样还觉得麻烦,可以再懒一点,在家目录下的.bashrc 下面添加一个软连接,指定别名来执行,这里我的文件路径是在家目录下,自己根据实际需要配置。

if [ -f $HOME/login.sh ]; then
    alias login="$HOME/login.sh"
fi

使用source重新加载一下.bashrc文件

$~ source .bashrc

在终端输入login 命令,即可自动登录到远程服务器。

$~ login

二、 python环境配置

Python最佳实践指南!(requests库大神引导完成安装和使用 Python 包) 传送门地址
系统自带的pip版本较低,需要先更新

pip install --upgrade pip

使用命令 pip -V 显示当前版本为 pip 10.0.1

首先安装了python的环境管理工具 pipenv

sudo pip install pipenv

ubuntu自带了python2.7和python3.5两个版本,目前最新的是python3.6,如何可以选择更新一下
ubuntu version >= 16.10, 可以执行下面操作更新

$ sudo apt-get update
$ sudo apt-get install python3.6

之前的版本,可以添加ppa

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt-get update
$ sudo apt-get install python3.6

进入终端,需要输入python3.6

liang@iZ250k0mjlbZ:~$ python3.6
Python 3.6.6 (default, Jun 28 2018, 04:42:43)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

在安装virtualenv的时候,sudo pip install virtualenv 老是提示西面的内容,虽然没什么影响,但是强迫症起来了,看着还是不舒服:

The directory '/home/liang/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.

解决方案如下:

sudo -H pip install virtualenv

后面sudo -H pip install virtualenvwrapper安装也正常,但是在创建虚拟环境的时候报错了
首先配置了virtaulenvwrapper的环境变量,在家目录下的.bashrc文件末尾添加如下配置:

if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
fi

完成之后执行命令激活source ~/.bashrc

理论上一切都正常了,只要你指定的source /usr/local/bin/virtualenvwrapper.sh路径是你的安装路径

接下来可以尝试创建一个虚拟目录:

mkvirtualenv venv-myproject

提示如下错误

ERROR: virtualenvwrapper could not find virtualenv in your path

这里真是自己给自己挖坑了,查了一遍配置路径都是没问题的,最后发现安装virtualenv貌似是用root账号安装了一次,然后使用当前用户重新安装了一次,问题解决了,大坑啊,root账号还是要慎重,操作尽量还是需要创建使用子账户。使用下面命令就可以在当前用户下安装包了:

pip install --user virtualenv

PS: ipython目前不支持python3,如果有需要使用ipython,创建虚拟环境的时候指定为python2版本。

截止到这里,python的基础环境应该满足需要了。尽量使用virtualenv环境,避免相互干扰.


三、 WEB环境配置

1. 安装Nginx

1.1 首先安装nginx服务器

 sudo apt-get install nginx

安装完成后,文件结构基本如下:

  • 配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下
  • 程序文件在/usr/sbin/nginx
  • 日志放在了/var/log/nginx中
  • 启动脚本nginx在/etc/init.d/下
  • 默认的虚拟主机的目录设置在了/var/www
    1.2 启动nginx,验证是否安装成功
$sudo /etc/init.d/nginx start

在浏览器输入当前IP地址,验证是否正常


欢迎地址

1.3 启动、停止以及重启命令

$sudo /etc/init.d/nginx start //启动
$sudo /etc/init.d/nginx stop //停止
$sudo /etc/init.d/nginx restart //重启

2. 安装mysql

2.1 执行安装命令

  $ sudo apt-get update
  $ sudo apt-get install mysql-server

2.2 查看当前状态
安装成功后,mysql应该已经自动运行,查看状态

liang@iZ250k0mjlbZ:~$ systemctl status mysql.service
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-07-23 00:28:42 CST; 51s ago
 Main PID: 26075 (mysqld)
   CGroup: /system.slice/mysql.service
           └─26075 /usr/sbin/mysqld

如果没有正常运行,执行启动命令

$ sudo systemctl start mysql  //启动
$ sudo systemctl stop mysql  //停止
$ sudo systemctl restart mysql  //重启

2.3 使用mysqladmin管理工具可以查看mysql的一些信息

liang@iZ250k0mjlbZ:~$ mysqladmin -p -u root version
Enter password:
mysqladmin  Ver 8.42 Distrib 5.7.22, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version      5.7.22-0ubuntu0.16.04.1
Protocol version    10
Connection      Localhost via UNIX socket
UNIX socket     /var/run/mysqld/mysqld.sock
Uptime:         7 min 58 sec

Threads: 1  Questions: 39  Slow queries: 0  Opens: 107  Flush tables: 1  Open tables: 26  Queries per second avg: 0.081

2.4 远程连接stackoverflow传送门

  • 打开配置文件,注释掉本地绑定连接
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

修改此行

bind-address = 127.0.0.1

#bind-address = 127.0.0.1
  • 进入mysql终端,执行如下命令
# password 定义跟更换为远程登录密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  • 重启mysql服务,让配置生效 sudo systemctl restart mysql

3、安装supervisor

supervisor是基于python开发的,一款好用的dameon管理工具,可以在后台很方便的监听、启动、停止、重启一个或多个进程。若被管理的当前进程异常终止,supervisor可以自动重新启动该进程。
详细介绍参考之前关于supervisor介绍,传送门

四、Django 工程环境配置

  • 激活python虚拟环境
    在上面的时候,我们安装了python虚拟环境,在使用pip安装之前,首先将我们安装的python3虚拟环境保持激活状态。
$ workon venv-myproject
  • 安装使Django项目可以运行的库
$ pip install Django=1.10.8
$ pip install uwsgi
$ pip install pymysql

注意,上面的uwsgi在虚拟环境下安装的,在uwsgi.ini的配置中,要写对该路径。

PS:最开始在本地环境python2直接安装的uwsgi,然后由于项目是基于python3,因此在运行时报错,找不到python环境,经过分析,怀疑是uwsgi的安装环境问题。在本地python3环境和虚拟环境python3安装uwsgi都失败,最后卸载了本地python2安装的uwsgi,在本地python3安装了uwsgi,使用uwsgi单独启动django成功了,然后在通过supervisor.ini配置启动的时候,又报错找不到python环境,懵逼了,python2和python3有点混乱了,最后在python3虚拟环境安装了uwsgi,在配置中统一使用虚拟环境的uwsgi路径,终于运行起来了,泪奔,也是第一次使用python3来部署django,虽然走了许多弯路,但是最后还是跑起来了。

配置记录

下面是配置记录,网上找的相关配置,经过试验最终在服务器成功运行,记录下,留个备注。

uwsgi.ini文件配置,具体参数配置待补充

[uwsgi]
socket = 0.0.0.0:8001
chdir = /data/www/myproject/
wsgi-file = myproject/wsgi.py
master = true
processes = 4
harakiri = 120
limit-as = 256
max-requests = 500
single-interpreter = true
enable-threads = true
env = DJANGO_SETTINGS_MODULE=myproject.settings.development
virtualenv = /home/liang/.venv/venv-myproject

supervisor.ini文件配置,具体配置含义待完善,这是在网上找到一个配置

[program:myproject]
directory=/data/www/myproject/configs
command=/home/liang/.venv/venv-myproject/bin/uwsgi --ini uwsgi.ini
umask=022
user=liang
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
stdout_logfile=/data/logs/myproject/myproject.stdout.log
stderr_logfile=/data/logs/myproject/myproject.stderr.log
stopsignal=QUIT
killasgroup=true
[supervisord]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容