linux學習-DAY2-經典網際網路架構
阿新 • • 發佈:2019-01-08
一、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
[[email protected] 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連結使用者
[[email protected] redis-py-master]# mysql
mysql> grant all on *.* to [email protected]'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