首頁>技術>

1.安裝Centos

本案例適合內部網路,也就是不能接入網際網路的情況下或者網速非常慢的情況下,離線配置wed伺服器。這次主要記錄我在一次軍網環境下,無yum源,無pip源,配置和開發wed伺服器的過程。

1.1 本次配置所有模組的版本如下:
Centos      7.8uwsgi       2.0.19.1Django      3.1.2  Python      3.6.5mysql       5.7nginx       1.18.0
1.2 建立檔案目錄,設計專案結構
.├── app                                   # 各個APP專案│   └── sduty├── mysql                                 # 資料庫相關配置檔案├── nginx                                 # nginx 配置相關檔案├── resource                              # 靜態資源目錄,用於存放圖片,影片,和網站的css,js檔案│   ├── image│   ├── static_app                        # 各APP的靜態檔案│   │   └── study│   └── video│   ├── software                          # 軟體包│   │   └── whl│   │   └── rpm└── uwsgi                                 # uwsgi配置相關檔案    └── study
1.3 安裝rpm包與whl包

把整個www資料夾(下載地址)上傳至伺服器

1.3.1 安裝rpm包
# 切換到rpm包所在的目錄cd /www/resource/software/rmp# 批次安裝(安裝當前目錄下所有rpm軟體包)rpm -Uvh --force --nodeps *rpm
1.3.2 安裝pip包
# 切換到pip包所在的目錄cd /www/resource/software/whl# 批次安裝(安裝requirements.txt裡面記錄的所有pip包)pip3 install --no-index --ignore-installed --find-links=/www/resource/software/whl -r requirements.txt
2.配置防火牆

Centos防火牆預設所有埠都沒有開發,如果不把http常用的埠開啟,到時候外網無法訪問。這裡直接開啟3306(資料庫),80(http),8001(測試)

2.1 檢視防火牆是否開啟
systemctl status firewalld
2.2 防火牆開啟埠訪問
firewall-cmd --zone=public --add-port=80/tcp --permanent

命令含義: --zone #作用域 --add-port=80/tcp #新增埠,格式為:埠/通訊協議 --permanent #永久生效,沒有此引數重啟後失效

2.3 檢視所有開啟的埠
firewall-cmd --list-ports
2.4 重啟防火牆

注:開啟後需要重啟防火牆才生效

firewall-cmd --reload
2.5 防火牆關閉埠
firewall-cmd --remove-port=80/tcp --permanent
3.Mysql基本配置3.1 更換密碼

啟動msyql:

systemctl start  mysqld.service

檢視MySQL執行狀態:

systemctl status mysqld.service

此時MySQL已經開始正常執行,不過要想進入MySQL還得先找出此時root使用者的臨時密碼,透過如下命令可以在日誌檔案中找出密碼:

grep "password" /var/log/mysqld.log

進入資料庫:

mysql -uroot -p

輸入初始密碼(也就是剛才查詢到的臨時密碼),此時不能做任何事情,因為MySQL預設必須修改密碼之後才能操作資料庫:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'ranDeng@20200728';如密碼:ranDeng@20200728

其中‘new password’替換成你要設定的密碼,注意:密碼設定必須要大小寫字母數字和特殊符號,不然不能配置成功

此時可以順便建立資料庫,下面可以直接連線

# 建立資料庫CREATE DATABASE `study` CHARACTER SET 'utf8' COLLATE 'utf8_bin';
3.2 開啟mysql的遠端訪問
# 主要把password修改成剛才設定的新密碼grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;

然後再輸入下面兩行命令

# 第一行口令flush privileges;# 第二行口令exit;
3.3 修改mysql的字元編碼

不修改會產生中文亂碼問題,修改/etc/my.cnf

vim /etc/my.cnf

內容如下

[mysqld]character_set_server=utf8init_connect='SET NAMES utf8'

重啟資料庫生效

systemctl restart mysqld
4.配置django

django是主後端框架,所以要配置的地方比較多,一步一步地來

4.1 生成專案目錄和app目錄
django-admin startproject study

生成的study專案的預設結構為:

# 進入study目錄cd study/# 顯示結構樹tree|-- study|   |-- __init__.py|   |-- asgi.py|   |-- settings.py|   |-- urls.py|   `-- wsgi.py`-- manage.py
4.2 配置settings檔案
# 匯入import os# 對所有ip段可見ALLOWED_HOSTS = ["*"]

##4.3 配置連線資料庫

在專案的配置模組的__init__.py檔案中匯入pymysql

# 匯入資料庫連線import pymysqlpymysql.version_info = (1, 4, 13, "final", 0)pymysql.install_as_MySQLdb()

在settings配置檔案中設定資料庫連線

DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql',  # 資料庫連線引擎        'NAME': 'study',  # 資料庫名稱        'USER': 'root',  # 連線使用者名稱        'PASSWORD': 'ranDeng@20200728',        'HOST': 'localhost',  # 資料庫連線地址        'PORT': '3306',  # 埠,預設3306        'CONN_MAX_AGE': 60,  # 持久連線時間    }}
4.4 配置靜態檔案

在專案根目錄建立資料夾

mkdir static

在static目錄中再新建目錄 global 用來存放全域性靜態檔案,和與子app同名的檔案,用來存放當前子app靜態檔案

在settings配置檔案中加入

# 靜態檔案路由的字首STATIC_URL = '/static/'# 存放查詢靜態檔案的目錄(注意study代表專案名稱,不同專案不同)STATIC_ROOT = os.path.join('/www/resource/static_app/study/', 'static_files')

到這裡基本的配置就完了,執行runserver就可以看到Django預設介面了

# 啟動測試模組python3 manage.py runserver 0.0.0.0:8001# 收集靜態檔案python3 manage.py collectstatic --noinput
5.配置uwsgi5.1 利用uwsgi配置檔案啟動django

新建檔案 uwsgi.ini

vim uwsgi.ini

配置檔案內容為:

# uwsig使用配置檔案啟動[uwsgi]# 直接做web伺服器使用http=0.0.0.0:8000# 專案目錄,相對於centos根目錄chdir=/www/app/study# 專案中wsgi.py檔案的目錄,相對於centos根目錄wsgi-file=/www/app/study/study/wsgi.py# 開啟的程序數量processes=4# 執行執行緒。由於GIL的存在,我覺得這個真心沒啥用。threads=2# 啟用主程序master=true# 程序個數workers=4# 指定pid檔案的位置,記錄主程序的pid號。pidfile=/www/uwsgi/study/uwsgi.pid# 設定日誌目錄daemonize=/www/uwsgi/study/uwsgi.log

uwsgi常用口令為:

# 啟動uwsgi --ini uwsgi.ini
5.2 設定uwsgi開機啟動

修改檔案

vim /etc/rc.local

開機啟動的指令碼

/usr/local/bin/uwsgi --ini /www/uwsgi/study/uwsgi.ini

修改/etc/rc.d/rc.local的可執行許可權。

chmod +x /etc/rc.d/rc.local
6.安裝nginx並且配置nginx

nginx 1.1.3之後已經預設支援mp4,flv模組,無須第三方模組支援。

6.1 編譯安裝
# 切換到安裝包目錄cd /www/nginx/rpm# 解壓tar -zxvf nginx-1.18.0.tar.gz# 進入nginx-1.14.2安裝包目錄cd nginx-1.18.0# 配置./configure# 編譯(make)並且安裝(make install)make && make install

檢視nginx的安裝路徑

whereis nginx

預設安裝到:

cd /usr/local/nginx/sbin/

配置檔案預設在:

cd /usr/local/nginx/conf
6.2 nging 基本配置檔案

編輯檔案:

vim /usr/local/nginx/conf/nginx.conf

內容如下:

# 工作程序數worker_processes  auto;# 錯誤日誌error_log  /www/nginx/error.log;# 主程序號pid        /www/nginx/nginx.pid;# 單個工作程序可以允許同時建立外部連線的數量events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;		#配置日誌格式	log_format  main  '$remote_addr - $remote_user [$time_local] "$request" $http_host '					  '$status $request_length $body_bytes_sent "$http_referer" '					  '"$http_user_agent"  $request_time $upstream_response_time';    server {        listen       80;        server_name  localhost;        location / {			root   html;            index  index.html index.htm;            proxy_pass http://127.0.0.1:8000;			    		# 配置日誌資訊    		access_log /www/nginx/study/access.log main;    		error_log /www/nginx/study/error.log error;        }        # 配置app靜態檔案資訊        location /static/ {            alias /www/resource/static_app/study/static_files/;        }                # 配置全域性圖片檔案        location /image/ {            alias /www/resource/image/;        }                # 配置全域性影片檔案        location /video/ {            alias /www/resource/video/;        }                error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }}

檢查配置檔案是否正確

/usr/local/nginx/sbin/nginx -t
5.4 設定nginx開機啟動

centos 7以上是用Systemd進行系統初始化的,Systemd 是 Linux 系統中最新的初始化系統(init),它主要的設計目標是克服 sysvinit 固有的缺點,提高系統的啟動速度。開機沒有登陸情況下就能執行的程式,存在系統服務(system)裡。

在系統服務目錄裡建立nginx.service檔案

vim /lib/systemd/system/nginx.service

nginx.service內容如下:

[Unit]Description=nginxAfter=network.target [Service]Type=forkingExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=true [Install]WantedBy=multi-user.target

設定開機啟動

systemctl enable nginx.service

nginx其他命令:

systemctl start nginx.service (啟動nginx服務)systemctl stop nginx.service (停止nginx服務)systemctl enable nginx.service (設定開機自啟動)systemctl disable nginx.service (停止開機自啟動)systemctl status nginx.service (檢視服務當前狀態)systemctl restart nginx.service (重新啟動服務)systemctl list-units --type=service (檢視所有已啟動的服務)

21
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 資料庫學習筆記之MySQL(14)