Browsed by
分类:服务器

Linux安装配置MySql

Linux安装配置MySql

1、安装客户端和服务器端

[codesyntax lang=”bash”]

#确认mysql是否已安装
yum list installed mysql*
rpm -qa | grep mysql*

#查看是否有安装包
yum list mysql*

#安装mysql客户端
yum install mysql

#安装mysql 服务器端
yum install mysql-server
yum install mysql-devel

[/codesyntax]

 

2、启动、停止设置

数据库字符集设置

mysql配置文件/etc/my.cnf中加入default-character-set=utf8

[codesyntax lang=”bash”]

#启动mysql服务:
service mysqld start
#或者
/etc/init.d/mysqld start

#设置开机启动:
chkconfig --add mysqld
chkconfig mysqld on

#查看开机启动设置是否成功
chkconfig --list | grep mysql*
mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

#停止mysql服务:
service mysqld stop

[/codesyntax]

 

 

3.创建或修改密码:

a.例如你的 root用户现在没有密码,你希望的密码修改为123456,那么命令是:

mysqladmin -u root password 123456

b.如果你的root现在有密码了(123456),那么修改密码为abcdef的命令是:

mysqladmin -u root -p password abcdef

注意,命令回车后会问你旧密码,输入旧密码123456之后命令完成,密码修改成功。

4.开启远程访问权限

 

4.1、登陆mysql

mysql -u root -p

4.2.修改mysql库的user表,将host项,从localhost改为%。%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip,比如可以将localhost改为192.168.1.123,这表示只允许局域网的192.168.1.123这个ip远程访问mysql。

mysql> use mysql;

mysql> update user set host = ‘%’ where user = ‘root’;

mysql> select host, user from user;

mysql> flush privileges;

5.防火墙开放3306端口

[codesyntax lang=”bash”]

#打开防火墙配置文件
vi  /etc/sysconfig/iptables

#增加下面一行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

#重启防火墙
service  iptables restart

[/codesyntax]

 

6. 查看mysql 状态

# ps -e | grep mysqld

13085 pts/1    00:00:00 mysqld_safe

13190 pts/1    00:00:00 mysqld

或者

service mysqld status

7.修改mysql端口

为了安全,不采用默认端口3306,改为3506

7.1. 登录mysql

[root@test /]# mysql -u root -p

Enter password:

7.2. 使用命令show global variables like ‘port’;查看端口号

mysql> show global variables like ‘port’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| port | 3306 |
+—————+——-+

7.3. 修改端口,编辑/etc/my.cnf文件,早期版本有可能是my.conf文件名,增加端口参数,并且设定端口,注意该端口未被使用,保存退出。

[root@test etc]# vi my.cnf
[mysqld]
port=3506
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

7.4.重启mysql

service mysqld restart

再次查看,端口已经变为3506

mysql> show global variables like ‘port’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| port | 3506 |
+—————+——-+

8、mysql的几个重要目录

8.1数据库目录

/var/lib/mysql/

8.2配置文件

/usr/share /mysql(mysql.server命令及配置文件)

8.3相关命令

/usr/bin(mysqladmin mysqldump等命令)

8.4启动脚本

/etc/rc.d/init.d/(启动脚本文件mysql的目录)

Linux下安装ShadowSocks

Linux下安装ShadowSocks

服务器环境:CentOS6.5 ,Python3.5,服务器pip可用。

1.安装和配置:

pip install shadowsocks

创建配置文件:

    vi /etc/shadowsocks.json
{
    "server":"0.0.0.0",
    "server_port":8989,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"yourpassword",
    "timeout":600,
    "method":"aes-256-cfb",
    "fast_open": false,
    "workers": 1
}

各字段的含义:

  • server:服务器 IP (IPv4/IPv6),注意这也将是服务端监听的 IP 地址
  • server_port:监听的服务器端口
  • local_address:本地监听的 IP 地址
  • local_port:本地端端口
  • password:用来加密的密码
  • timeout:超时时间(秒)
  • method:加密方法,可选择 “bf-cfb”, “aes-256-cfb”, “des-cfb”, “rc4”, 等等。默认是一种不安全的加密,推荐用 “aes-256-cfb”
  • works:works数量,默认为 1
  • fast_open:true 或 false。如果你的服务器 Linux 内核在3.7+,可以开启 fast_open 以降低延迟。开启方法:
echo 3 > /proc/sys/net/ipv4/tcp_fastopen

开启之后,将 fast_open 的配置设置为 true 即可。

 

2、 命令行参数(服务器端启动命令)

ssserver -c /etc/shadowsocks.json

如果想在后台一直运行Shadowsocks,启动命令如下:

nohup ssserver -c /etc/shadowsocks.json > /dev/null 2>&1 &

备注:关于nohup,是可以让程序在后台运行的命令。

同时可以用命令行参数覆盖 /etc/shadowsocks.json 里的设置:

sslocal -s 服务器地址 -p 服务器端口 -l 本地端端口 -k 密码 -m 加密方法

ssserver -p 服务器端口 -k 密码 -m 加密方法

备注:sslocal是客户端程序;ssserver是服务端程序。

 

5、 防火墙设置(如有)
编辑防火墙配置文件/etc/sysconfig/iptables,将服务器端口(server_port)放行。
新增一条防火墙规则:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8989 -j ACCEPT

如果找不到 文件/etc/sysconfig/iptables, 可以使用命令行:

iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 8989 -j ACCEPT

service iptables save

重启防火墙iptables:

service iptables restart

至此,服务器端的 Shadowsocks 安装和配置完毕。


等等…, 为什么能访问百度,访问不了facebook,啊? 服务器是国内的!!!吐血三升!

 

 

Linux(CentOS) 升级 Python 至 3.x

Linux(CentOS) 升级 Python 至 3.x

CentOS 6.5 中默认安装了 Python,版本比较低(2.6.6),为了使用新版 3.x,需要对旧版本进行升级。

由于很多基本的命令、软件包都依赖旧版本,比如:yum。所以,在更新 Python 时,建议不要删除旧版本(新旧版本可以共存)。

 

1.查看 Python 版本号

当 Linux 上安装 Python 后(默认安装),只需要输入简单的命令,就可以查看 Python 的版本号:

[codesyntax lang=”php”]

python -V
Python 2.6.6

[/codesyntax]

2.下载新版本

进入 Python下载页面,选择需要的版本。

这里,我选择的版本是 3.5.2 。

[codesyntax lang=”bash”]

wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz

[/codesyntax]

国外链接网速较慢,可以找下国内的资源。

3.解压安装

[codesyntax lang=”bash”]

#解压
tar -zxvf Python-3.5.2.tgz

#进入目录
cd Python-3.5.2

#配置
./configure

make

make install

[/codesyntax]

4.验证

安装成功以后,就可以查看 Python 的版本了

[codesyntax lang=”bash”]

# python -V
Python 2.6.6
# python3 -V
Python 3.5.2

[/codesyntax]

一个是旧版本 2.x,另外一个是新版本 3.x。

注意:在 /usr/local/bin/ 下有一个 python3 的链接,指向 bin 目录下的 python 3.5。

5.设置 3.x 为默认版本

查看 Python 的路径,在 /usr/bin 下面。可以看到 python 链接的是 python 2.6,所以,执行 python 就相当于执行 python 2.6。

[codesyntax lang=”bash”]

# ls -al /usr/bin | grep python
-rwxr-xr-x.   1 root root       6832 Nov 23  2013 abrt-action-analyze-python
-rwxr-xr-x.   2 root root       4864 Jan 22  2014 python
lrwxrwxrwx.   1 root root          6 Aug 14  2014 python2 -> python
-rwxr-xr-x.   2 root root       4864 Jan 22  2014 python2.6

[/codesyntax]

修改链接:

[codesyntax lang=”bash”]

#将原来 python 的软链接重命名:
mv /usr/bin/python /usr/bin/python.bak

#将 python 链接至 python3:
ln -s /usr/local/bin/python3 /usr/bin/python

#再查看 Python 的版本
python -V
Python 3.5.2

[/codesyntax]

输出的是 3.x,说明已经使用的是 python3了

 

6.配置yum

升级 Python 之后,由于将默认的 python 指向了 python3,yum 不能正常使用,需要编辑 yum 的配置文件:

[codesyntax lang=”bash”]

vim /usr/bin/yum

[/codesyntax]

将 #!/usr/bin/python 改为 #!/usr/bin/python2.7,保存退出即可

 

至此,终于大功告成了!!!

centos+nginx+uwsgi+python+django 部署应用

centos+nginx+uwsgi+python+django 部署应用

写在前面的话

折腾了近两天,终于把python小应用部署到阿里云服务器上了。作为一个运维小白,特记录一下部署过程,以备后续查验。
服务器选的阿里云,这里也有个和本文无关但是心酸的过程。因为以前用过阿里云,后来手机换号了,为了更换手机号简直心塞,整个流程简直死循环。大概是这样的:

 

1.登陆阿里云账号,购买服务器
2.因为购买时候选择的是创建后设置服务器密码,所以购买完第一件事是重置服务器root密码
3.重置密码需要手机验证,但是老手机已经不用了
4.提交工单,申诉说明,客服让提交身份证件,手持身份证照等
5.身份证过期了,审核不通过
6.新身份证还没办下来,估计下个月才能拿到,但是服务器只买了一个月,到时候审核通过服务器也过期了

简直是心塞啊,幸好和客服沟通,可以用驾照代替,就这折腾两天,总算是把手机号给换了,泪奔!

好了,言归正传,开始说部署!

一、系统选的CentOS

看阿里云官方推荐的CentOS,就直接选它了,本来选的是CentOS 6.5 ,结果安装后发现,自带的Python版本是2.6.6,貌似有点旧了,后来又重置了一次系统,换成了CentOS 7.0,自带的Python版本是2.7.5。

在刚发现CentOS6.5自带的Python为2.6.6时,也看了几篇文章,尝试把Python从升级到2.7,但是因为不知道哪里配错的原因,2.7虽然装好了,但是pip一直装不上,算了,只是为了部署个小python项目测试用,就不搞那么麻烦了,直接换成CentOS 7.0吧。

另外除了CentOS,Ubuntu应该也是不错的选择,以后有机会尝试一下。

二、安装nginx和python等相关包

2.1.安装nginx和python

方法很简单,yum搞定(感觉nginx已经自带了python,貌似不用安装python-devel  ???

sudo yum install epel-release

sudo yum install python-devel nginx

先关闭 CentOS的防火墙,防止访问不了,后续再通过开放端口的方式进行细节处理

临时关闭防火墙
sudo systemctl stop firewalld

将 SELinux 设置为宽容模式,方便调试:
sudo setenforce 0

CentOS 7 iptables如何使用http://stackoverflow.com/questions/24756240/

2.2.安装pip

1.通过wget下载py文件

wget https://bootstrap.pypa.io/get-pip.py

2.用python安装

python get-pip.py

wget 下载https文件,如果报错,可以加上–no-check-certificate

2.3.安装django,上传项目文件

目前django的版本是1.9.3

pip install django

pip install Django==1.5 即可安装其他(1.5)版本

上传文件(项目暂时放在root)

scp local_folder remote_username@remote_ip:remote_folder

 

三、 使用  uwsgi 来部署(也可以用gunicorn)

3.1安装uwsgi

pip install uwsgi

3.2启动uwsgi

执行uwsgi命令,启动

uwsgi –http :8001 –chdir /path/to/project –home=/path/to/env –module project.wsgi

–home 指定virtualenv 路径,如果没有可以去掉。project.wsgi 指 project/wsgi.py 文件

理论上这样就可以跑了,这时候访问你的服务器ip如(123.23.23.233:8001),应该可以看到页面的

这时候查看端口占用(netstat -lpnt),会看到0.0.0.0:8001,已经有项目在监听。

3.3简化启动命令

但是这样的命令太长了,我们换一种,写ini文件来配置(或者xml/json/yaml)

在项目目录(/path/to/project)下,新建uwsgi.ini,内容如下:

ss[codesyntax lang=”python”]

[uwsgi]
socket = 127.0.0.1:8001
chdir = /root/python_project/djtest/
wsgi-file = djtest/wsgi.py
touch-reload=/root/python_project/djtest/reload

processes = 2
threads = 4

chmod-socket = 664
chown-socket = root:www-data

[/codesyntax]

 

我们执行以下命令,即可把项目部署到8001端口

uwsgi –ini /root/python_project/djtest/uwsgi.ini

#如果uwsgi无效,试试/path/to/uwsgi 即uwsgi的目录

注意,这里写的是“socket = 127.0.0.1:8001”,这里后面会和nginx关联到。

指定了touch-reload,执行如下命令,即可重新编译,重启应用

touch /root/python_project/djtest/reload

3.4端口占用,杀掉进程

如果端口被占用了,可以杀掉进程:

probably another instance of uWSGI is running on the same address (:8001).
bind(): Address already in use [core/socket.c line 764]

根据端口查找

lsof -i :8001

可以查出

COMMAND PID USER FD TYPE DEVICE             SIZE/OFF NODE NAME
uwsgi  2208
root 4u IPv4 0x53492abadb5c9659 0t0    TCP *:teradataordbms (LISTEN)
uwsgi  2209 root 4u IPv4 0x53492abadb5c9659 0t0    TCP *:teradataordbms (LISTEN)

这时根据 PID 可以用下面的命令 kill 掉相关程序:

sudo kill -9 2208 2209

 

4. 使用supervisor来管理进程

安装 supervisor 软件包

sudo pip install supervisor

生成 supervisor 默认配置文件,比如放在 /etc/supervisord.conf 路径中:

sudo echo_supervisord_conf > /etc/supervisord.conf

打开sup,在底部添加如下配置

[program:djtest]
command=/usr/bin/uwsgi --ini /root/python_project/djtest/uwsgi.ini
directory=/root/python_project/djtest
user=root
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true

 

command 中写上对应的命令,这样,就可以用 supervisor 来管理了。

 

启动 supervisor
sudo supervisord -c /etc/supervisord.conf

重启 djtest 程序(项目):
sudo supervisorctl -c /etc/supervisord.conf restart
djtest

启动,停止,或重启 supervisor 管理的某个程序 或 所有程序:
sudo supervisorctl -c /etc/supervisord.conf [start|stop|restart] [program-name|all]

 

通过重启程序,也可以实现项目的重新编译,重启生效。

 

5.配置nginx

在/etc/nginx/nginx.conf配置里http下家如下server:

[codesyntax lang="php"]
    server {
        listen      80;
        server_name 123.23.23.233;
        charset     utf-8;

        client_max_body_size 75M;

        location / {
            uwsgi_pass  127.0.0.1:8001;
            include     /etc/nginx/uwsgi_params;
        }
    }
[/codesyntax]

重启nginx即可!

重点:之前以uwsgi的方式启动,外网可以访问(123.23.23.233:8001),但是nginx报错502,通过查看端口(netstat -lpnt)发现,以uwsgi –http :8001…的方式启动,监听的是0.0.0.0:8001,nginx无法转发过去,后直接把uwsgi启动至127.0.0.1:8001,然后nginx里的server配置也是uwsgi_pass 127.0.0.1:8001;可以正常访问了,此时通过ip:8001是不能访问的。

另外,uwsgi_pass可以用 unix:///tmp/zqxt.sock; 项目中uwsgi.ini的socket配置对应,也可以正常工作,但未实验成功。

作为一个运维小白,参考教程,一步一步出错排查,排查出错,总算跑起来了,虽然还有很多漏洞,但是足以欣慰。

参考资料:http://www.ziqiangxuetang.com/django/django-nginx-deploy.html

 

 

aliyun