linux学习-DAY2-经典互联网架构

一、Linux软件包安装

1.安装程序的方式

  • 软件包管理器:如RPM。
  • 软件包管理器的前端工具:如YUM。
  • 源码包应用。
  • 通用二进制格式:直接解压压缩文件,就可以使用。但一定要注意安装平台。

2.RPM

RPM早期被称为RedHat Package Manager,但由于目前RPM非常流行,且已经成为Linux工业标准。所以RPM现在又被称为RPM is Package Manager。

RPM管理支持事务机制。增强了程序安装卸载的管理。

RPM的功能:打包、安装、查询、升级、卸载、校验、数据库管理。

但是RPM无法解决软件包的依赖关系。因为Linux中的程序大多是小程序,而程序与程序之间存在非常复杂的依赖关系。

光盘挂载

# 只要挂载好光盘,安装软件会显的特别方便 
# 1.把/dev/cdrom挂载到/mnt
mount /dev/cdrom /mnt

# 进入/mnt查看,你会发现有一个Packages的目录,里面有所有下载安装的包
cd  /mnt
ls

使用

# 安装rpm包
rpm -ivh 包名
# 更新rpm包
rpm -Uvh 包名
# 卸载rpm
rpm -e 包名

# rpm包的查询
rpm -q 包名
# 查询过滤
rpm -qa |grep vsf
# 查询文件所在路径
which vim
# 查询某文件是由哪个rpm包安装生成的
rpm -qf /usr/bin/vim

3.yum

YUM是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。

YUM使用Python语言写成。YUM客户端基于RPM包进行管理,可以通过HTTP服务器下载、FTP服务器下载、本地软件池的等方式获得软件包,可以从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系。

YUM在安装RPM时,会从服务器下载相应包,且缓存在本地。

使用YUM进行RPM包的管理,非常简单方便。

更改yum站点源

# 使用aliyun yum站点源
# BASE源:一些基本的软件包
# 1.进入yum的源
cd /etc/yum.repos.d/

# 2.该文件夹里有安装系统是自动从官方下载的源,可以不要,我们把它挪走
mv *.repo /tmp

# 3.获取阿里的源
wget http://mirrors.aliyun.com/repo/Centos-7.repo

# EPEL源:扩展的软件包
yum install -y epel-release

操作

# yum安装软件
# -y:下载软件后会遇到选项:是否安装,有了-y会默认安装
# openssl openssl-devel :这两个一定要先安装
yum install -y openssl openssl-devel 

# 软件包查询
yum list |grep vsftpd

# 软件包组查询
yum grouplist

# 软件包组安装
yum groupinstall "Development Tools"

# 卸载软件包
yum remove 

优化yum源

# 本地镜像yum源(光盘挂载到/mnt下)
# 挂在以后,下载yum源会从本地光盘找
# 1.进入yum的源,必须把/etc/yum.repos.d/里的.repo结尾的文件挪走,linux先看到哪个配置,就用哪个配置文件
cd /etc/yum.repos.d/

# 2.创建一个yum的配置文件必须是.repo结尾
vim local.repo

# 3.在编辑模式中
[local]
name=localios
baseurl=file:///mnt # 挂载到本地文件/mnt
gpgcheck=0

# 4.清空yum的缓存
yum clean all


# 局域网yum源(ftp)
# 本地镜像yum源必须随身携带关盘,比较麻烦,所以搭建局域网yum源,可以通过局域网下载软件
# 1.安装ftp软件
yum install -y vsftpd
# 2.启动ftp服务,并设置开机自启动
systemctl start vsftpd
systemctl enable  vsftpd

# 3.创建站点目录,并将光盘软件拷贝其中
# 现在就可以通过ftp://IP地址/pub/centos7/访问
cp -a /mnt/*  /var/ftp/pub/centos7

# 4.如果你的电脑想要通过局域网下载软件,就需要配置repo文件
# 具体步骤和本地镜像yum源差不多
# 唯一不同的是配置
[ftp]
name=centos7
baseurl=ftp://10.0.0.100/pub/centos7
gpgcheck=0

4.源码包应用(python3.6、redis)

解压

# .zip
unzip  xxx.zip
# .tar .tar.gz .tgz.tar.bz2 .tar.xz
tar xf  xxx.tar
# .iso 挂载
mount -o loop xxx.iso  /test
# .cpio
cpio -idcmv < xxx.cpio

安装

# 把压缩文件放到/opt里
cd /opt

# mysql 源码包
# 1
cmake
# 2.编译
make
make install
# 或 make && make install


# python3.6源码包安装
# 解压后进入文件
# 1.定制功能
./configure  
# 2.编译
make
make install
# 或 make && make install
     
    
# redis 源码包安装 
# 解压后进入文件
# 1.编译
make

# 2.修改环境变量
vim /etc/profile

# 添加以下一行:
export PATH=/opt/redis-3.2.10/src:$PATH

# 3.生效配置
source /etc/profile

python链接redis

# 解压后进入文件
cd redis-py-master
# 用python3运行
python3 setup.py install


# 测试
#运行python3
[root@xcq redis-py-master]# python3
>>> import redis
>>> r = redis.StrictRedis(host='localhost', port=6379)
>>> r.set('name', 'oldguo')
True
>>> r.get('name')
b'oldguo'

5.二进制包(mysql5.7.20)

安装及配置mysql

# 1.解压及制作软连接
tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql

# 2.编辑环境变量
vim  /etc/profile
# 添加以下一行:
export PATH=/opt/mysql/bin:$PATH

# 3.生效配置:
source /etc/profile

# 4.卸载自带mariadb
yum remove mariadb-libs

# 5.生成配置文件(/etc/my.cnf)
vim /etc/my.cnf
# 内容
[mysqld]
basedir=/opt/mysql
datadir=/opt/mysql/data
socket=/tmp/mysql.sock
user=mysql
log_error=/var/log/mysql.log
log_bin=/opt/mysql/data/mysql-bin
server_id=100
[mysql]
socket=/tmp/mysql.sock


# 6.创建用户和数据目录,并授权
# 对mysql操作时,默认要有一个mysql用户
useradd mysql 
mkdir  /opt/mysql/data 
chown -R mysql.mysql /opt/mysql

# 7.初始化数据
touch /var/log/mysql.log 

chown -R mysql.mysql /var/log/mysql.log

mysqld --initialize-insecure --basedir=/opt/mysql --datadir=/opt/mysql/data --user=mysql

启动mysql

# 1.进入目录
cd /opt/mysql/support-files
# 2.执行脚本
./mysql.server start


# 为了启动方便,把mysql.serve,移动到/etc/init.d/mysqld
# 这样就不用每次要进入目录在启动
cp mysql.server /etc/init.d/mysqld

# 以后用这条命令启动mysql
/etc/init.d/mysqld start



# 扩展:使用systemctl 管理mysql
vim /etc/systemd/system/mysqld.service

# 配置
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

# 配置好之后,以后就用systemctl来启动mysql
systemctl start mysqld

python3链接mysql

# 创建mysql链接用户
[root@xcq redis-py-master]# mysql

mysql> grant all on *.* to root@'10.0.0.%' identified by '123';
Query OK, 0 rows affected, 1 warning (0.13 sec)
mysql> create database bbs charset utf8;


# python代码测试

pip3 install pymysql

vim testmysql.py

import pymysql
db = pymysql.connect("10.0.0.100","root","123","bbs" )
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print ("Database version : %s " % data)
db.close()

python3  testmysql.py 

二、经典互联网架构项目(LNMP)

LNMP = Linux Nginx MySQL PHP

1.Nginx 安装

# 1.新建官方Nginx yum源的repo配置文件
vim /etc/yum.repos.d/nginx.repo 

# 配置官方Nginx yum源
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

# 2.下载安装
yum install nginx -y

# 3.启动Nginx,并将Nginx加入开机自启

systemctl start nginx
systemctl enable nginx

# 之后就可以通过http://10.0.0.100(IP地址)访问页面了

2.Django安装

# 1.安装依赖包
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++  openssl-devel zlib zlib-devel -y

# 2.安装Django和uwsgi,以及一堆模块
vim  re.txt
asn1crypto==0.24.0
beautifulsoup4==4.6.3
bs4==0.0.1
certifi==2018.4.16
cffi==1.11.5
chardet==3.0.4
Click==7.0
cryptography==2.3.1
Django==1.11.9
Flask==1.0.2
Flask-Cors==3.0.6
gevent==1.3.6
greenlet==0.4.15
idna==2.7
ItsDangerous==1.1.0
Jinja2==2.10
lxml==4.2.6
MarkupSafe==1.0
numpy==1.15.3
Pillow==5.3.0
pycparser==2.18
PyMySQL==0.9.2
pytz==2018.7
requests==2.19.1
selenium==3.141.0
six==1.11.0
urllib3==1.23
virtualenv==16.1.0
Werkzeug==0.14.1
wordcloud==1.5.0

pip3 install -i https://pypi.doubanio.com/simple/ -r re.txt

3.uwsgi安装

# uwsgi可以通过端口访问Django项目了
# 1.安装
pip3 install -i https://pypi.doubanio.com/simple/ uwsgi
    
    
# 2.测试uwsgi是否正常
# 新建test.py文件
vim test.py

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello Django"]

# 运行
# & :在后台运行
# 我们就可以在浏览器通过10.0.0.100(IP地址):8001访问
uwsgi --http :8001 --wsgi-file test.py &

# 3.测试django是否正常,运行:
# 新建django项目demosite
django-admin.py startproject demosite
# 进入项目demosite根目录
cd demosite
# 运行项目demosite
python3 manage.py runserver 0.0.0.0:8002
# 在浏览器内输入:http://10.0.0.100:8002,检查django是否运行正常。

# 注:测试Django项目时,要在settings.py中配置ALLOWED_HOST=['*'],放开所有地址都可以访问

4.nginx+uwsgi配置django空项目

# 为什么要nginx+uwsgi一起来配置,因为
# 单独只用uwsgi的话会显示出端口号,如果加上nginx就不会显示出端口
# 能隐藏自己的真实端口,对于用户来说只是访问了域名而已


# 1.配置uwsgi
# 在Django项目根目录创建uwsgi.ini
vim /root/demosite/uwsgi.ini
# 配置uwsgi.ini
[uwsgi]
socket = 127.0.0.1:9999
master = true
workers = 2
max-requests = 1000
buffer-size = 30000
pidfile = /run/uwsgi.pid
daemonize = /var/log/uwsgi.log

# 以Django项目里的uwsgi.ini的配置来启动uwsgi
uwsgi --ini /root/demosite/uwsgi.ini &


# 2.配置Nginx
vim /etc/nginx/conf.d/py.conf
# 配置
server {
    # 监听来自80端口的请求
    listen 80;
    # IP地址
    server_name 10.0.0.100;
    client_max_body_size 100M;

    location / {
        index index.html;
        include uwsgi_params;
        # 同uwsgi内容,通过这个去访问uwsgi
        uwsgi_pass 127.0.0.1:9999;
        # Django项目demosite的wsgi
        uwsgi_param UWSGI_SCRIPT demosite.wsgi;
        # 要配置Django项目目录
        uwsgi_param UWSGI_CHDIR /root/demosite;
    }
}

# 重启nginx
systemctl restart nginx

# 配置好后就可以通过http://10.0.0.100访问Django

猜你喜欢

转载自www.cnblogs.com/xvchengqi/p/10241175.html
今日推荐