部署是基於:centos7+nginx+uwsgi+python3+django 之上做的
一、更新系統軟件包
yum update -y
二、安裝軟件管理包和可能使用的依賴
yum -y groupinstall "Development tools" yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc
yum install gcc mariadb-devel # 這個也要 不然mysqlclient裝不上得
三、下載Pyhton3到/usr/local 目錄
cd /usr/local
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
解壓
tar -zxvf Python-3.6.6.tgz
進入 Python-3.6.6路徑
cd Python-3.6.6
編譯安裝到指定路徑
./configure --prefix=/usr/local/python3
注意:/usr/local/python3 路徑可以自己指定,自己記着就行,下邊要用到。
安裝python3
make make install
安裝完成之後 建立軟鏈接 添加變量 方便在終端中直接使用python3
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
Python3安裝完成之後pip3也一塊安裝完成,不需要再單獨安裝
同樣給pip3建立軟鏈接
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
四、查看Python3和pip3安裝情況
五、安裝virtualenv ,建議大家都安裝一個virtualenv,方便不同版本項目管理。
pip3 install virtualenv
建立軟鏈接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
安裝成功在根目錄下建立兩個文件夾,主要用於存放env和網站文件的。(個人習慣,其它人可根據自己的實際情況處理)
mkdir -p /data/env mkdir -p /data/wwwroot
六、切換到/data/env/下,創建指定版本的虛擬環境。
virtualenv --python=/usr/bin/python3 pyweb
然後進入/data/env/pyweb/bin
啓動虛擬環境:
source activate
留意我標記的位置,出現(pyweb),說明是成功進入虛擬環境。
七、虛擬環境裏用pip3安django和uwsgi
pip3 install django (如果用於生產的話,則需要指定安裝和你項目相同的版本) pip3 install uwsgi
留意:uwsgi要安裝兩次,先在系統裏安裝一次,然後進入對應的虛擬環境安裝一次。
給uwsgi建立軟鏈接,方便使用
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
注意:如果是項目在本地,想部署到線上的,之後這幾步可以不用看,建議跳轉到:本地項目搬遷到服務器
八、切換到網站目錄/data/wwwroot,創建Django項目
django-admin.py startproject mysite
創建成功之後,/data/wwwroot下面就會多出一個mysite文件夾,我們的項目就在這個文件夾裏。
然後新建立一個名叫blog的APP
python3 manage.py startapp blog
進入項目文件夾/data/wwwroot/mysite,添加static和templates,分別用於存放靜態文件和模板文件。
編輯項目裏mysite/settings.py文件
vim /data/wwwroot/mysite/mysite/settings.py
在INSTALLED_APPS 列表裏添加'blog',注意,後面要加上一個逗號','.
修改ALLOWED_HOSTS,['*'],可以讓任何IP訪問
TEMPLATES的DIRS裏添加模板路徑
os.path.join(BASE_DIR, 'templates')
尾部添加
STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), )
然後 :wq 保存
九、在templates下添加index.html文件,輸入下面內容。
vim /data/wwwroot/mystie/templates/index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>我的網站</title> </head> <body> <h1>歡迎光臨我的網站!</h1> </body> </html>
十、配置URL
vim /data/wwwroot/mysite/mysite/urls.py from blog import views #導入views urlpatterns = [ ... path('', views.index), #添加這行 .... ]
十一、編輯blog APP下的views.py
vim /data/wwwroot/mysite/blog/views.py def index(request): return render(request, 'index.html')
十二、啓動項目
python3 manage.py runserver
正常運行!
十三、Django正常運行之後我們就開始配置一下uwsgi。
我們網站項目路徑是 /data/wwwroot/mysite/,在項目根目錄下創建
mysite.xml文件,輸入如下內容:
<uwsgi> <socket>127.0.0.1:8997</socket> <!-- 內部端口,自定義 --> <chdir>/data/wwwroot/mysite/</chdir> <!-- 項目路徑 --> <module>mysite.wsgi</module> <!-- mysite爲wsgi.py所在目錄名--> <processes>4</processes> <!-- 進程數 --> <daemonize>uwsgi.log</daemonize> <!-- 日誌文件 --> </uwsgi>
保存
注意<module>裏的mysite,爲wsgi.py所在的目錄名。
十四、安裝nginx和配置nginx.conf文件
進入home目錄,執行下面命令
cd /home/
wget http://nginx.org/download/nginx-1.13.7.tar.gz
下載完成後,執行解壓命令:
tar -zxvf nginx-1.13.7.tar.gz
進入解壓後的nginx-1.13.7文件夾,依次執行以下命令:
./configure make make install
nginx一般默認安裝好的路徑爲/usr/local/nginx
在/usr/local/nginx/conf/中先備份一下nginx.conf文件,以防意外。
cp nginx.conf nginx.conf.bak
然後打開nginx.conf,把原來的內容刪除,直接加入以下內容:
events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 80; server_name www.django.cn; #改爲自己的域名,沒域名修改爲127.0.0.1:80 charset utf-8; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8997; #端口要和uwsgi裏配置的一樣 uwsgi_param UWSGI_SCRIPT mysite.wsgi; #wsgi.py所在的目錄名+.wsgi uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite/; #項目路徑 } location /static/ { alias /data/wwwroot/mysite/static/; #靜態資源路徑 } } }
要留意備註的地方,要和UWSGI配置文件mysite.xml,還有項目路徑對應上。
進入/usr/local/nginx/sbin/目錄
執行./nginx -t命令先檢查配置文件是否有錯,沒有錯就執行以下命令:
./nginx
終端沒有任何提示就證明nginx啓動成功。可以使用你的服務器地址查看,成功之後就會看到一個nginx歡迎頁面。
之後,在settings.py裏設置:
1、關閉DEBUG模式。
DEBUG = False
2、ALLOWED_HOSTS設置爲* 表示任何IP都可以訪問網站。
ALLOWED_HOSTS = ['*']
十五、訪問項目的頁面。
進入網站項目目錄
cd /data/wwwroot/mysite/
執行下面命令:
uwsgi -x mysite.xml
以上步驟都沒有出錯的話。
進入/usr/local/nginx/sbin/目錄
執行:
./nginx -s reload
重啓nginx 。
然後在瀏覽器裏訪問你的項目地址!
成功訪問!
裏面最值得留意的就是項目的路徑不要弄錯,還有,項目的所有操作都要在虛擬環境下進行。
環境部署部份,懶的話,直接複製我的代碼直接部署就行。
本地項目搬遷到服務器
本地項目想要部署上線,可以參考下面的步驟:
1、備份本地數據庫。使用sqlite數據庫的話,直接打包數據庫文件上傳到服務器即可。使用Mysql數據庫,要先在本地Mysql裏備份導出數據,然後在服務器上安裝Mysql數據庫軟件,Mysql安裝具體操作請看:
2、在項目目錄下用下面的命令把當前的環境依賴包導出到requirements.txt文件
pip freeze > requirements.txt
3、把項目源碼壓縮打包。
4、把項目上傳到服務器對應的目錄裏,解壓。
5、創建新的虛擬環境(參照上面第六步)
6、進入虛擬環境然後進入項目路徑安裝requirements.txt裏的依賴包。
pip3 install -r requirements.txt
7、導入數據庫到服務器。(如果用的是Mysql的話)
默認使用的是SQLite數據庫,就不用做此操作。數據庫原來是SQLite的,想換成Mysql,請查看文章:如何把SQLite數據庫轉換爲Mysql數據庫
如果是Mysql數據庫的,則在命令行裏輸入:
#導出Mysql,django爲你的數據庫 mysqldump -uroot -ppassword django>django.sql #把django.sql上傳到服務器,在服務器裏用下面命令導入 mysql -uroot -ppassword use dajngo; source your Path\django.sql
8、通過python3 manage.py runserver 運行一下項目,如果能正常啓動則進行下一步,不能正常運行往上檢查。
9、在項目根目錄裏添加uwsgi配置文件(參照上面第十三步)
10、配置Nginx配置文件。(參考上面第十四步)
留意:一定要注意Uwsgi和Nginx配置文件裏的項目路徑和靜態資源路徑,填寫正確了才能成功訪問。不然會出現502錯誤。還有就是,修改Django文件和其它配置文件之後,一定要重啓Uwsgi和Nginx,不然不生效。
Uwsgi和Nginx重啓方法:
#查看Uwsgi進程 ps -ef|grep uwsgi #用kill方法把uwsgi進程殺死,然後啓動uwsgi killall -9 uwsgi #啓動方法 uwsgi -x mysite.xml #Nginx平滑重啓方法 /usr/local/nginx/sbin/nginx -s reload
然後在瀏覽器裏訪問服務器地址(域名),就能查看到項目。
如果想使用域名訪問項目,先在域名管理後臺把域名解析到服務器IP上來,之後在Nginx配置文件裏綁定域名。然後在瀏覽器裏通過綁定的域名訪問項目。
關於線上部署admin後臺樣式沒有生效的問題:
方法一:
1、在settings.py尾部:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')#指定樣式收集目錄 #或 STATIC_ROOT = '/www/mysite/mysite/static' #指定樣式收集目錄
2、收集CSS樣式,在終端輸入:
python manage.py collectstatic
運行這個命令之後,就會自動把後臺CSS樣式收集到/static/目錄下。刷新頁面就能恢復樣式!
方法二:
在Python安裝目錄下(如果使用虛擬環境,則在虛擬環境目錄下)找到\Lib\site-packages\django\contrib\admin\templates目錄,把裏面的admin目錄複製到指定目錄即可。
注意:收集或複製前一定先在settings裏配置並指定STATIC_ROOT路徑,static/ 個目錄可以自己定。指定的時候一定要在settings.py和nginx裏指定新的路徑。不然無法生效。
Django啓用SSL證書(https域名)
羣裏好多朋友都需要使用SSL證書,在使用我這個部署教程的基礎上部署SSL證書,總是遇到不少坑。在這,我在這補充一下安裝SSL證書的方法,供大家參考。
1、進入之前我們下載nginx的源碼目錄
cd /home/nginx-1.13.7/
2、安裝PCRE庫
yum -y install pcre
3、安裝SSL
yum -y install openssl openssl-devel
4、依次執行下面兩行代碼重新編譯一下
./configure ./configure --with-http_ssl_module
5、執行make
make
注意:是make而不是make install
6、備份原來的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
7、將新的 nginx 覆蓋舊安裝目錄
cp objs/nginx /usr/local/nginx/sbin/nginx
如果報錯,剛用執行下面的命令覆蓋
cp -rfp objs/nginx /usr/local/nginx/sbin/nginx
8、免費證書下載後有兩個文件。(以阿里雲免費證書爲例)一個是擴展名爲.pem的文件,一個是擴展名爲.key的文件。.pem文件中已經包含服務器證書和CA中間證書,第一段爲服務器證書,第二段爲CA中間證書,您可以使用文本編輯器自行提取。.key文件是證書私鑰。這裏我們直接把域名證書複製到網站根目錄裏去就行。
9、配置nginx.conf文件。
events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 443 ssl http2; server_name www.django.cn django.cn; root /data/wwwroot/mysite;#項目路徑 charset utf-8; ssl_certificate /data/wwwroot/mysite/1_www.django.cn.pem;#.pem證書路徑 ssl_certificate_key /data/wwwroot/mysite/2_www.django.cn.key;#.key證書路徑 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; error_page 497 https://$host$request_uri; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8997; uwsgi_param UWSGI_SCRIPT wechatProject.wsgi; uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite/;#項目路徑 } location /static/ { alias /data/wwwroot/mysite/static/; #靜態資源路徑 } access_log /data/wwwroot/mysite/www.django.cn.log; error_log /data/wwwroot/mysite/www.django.cn.error.log; } }
留意證書的路徑,我們主要是把原來的80端口,修改成443,然後再加一些SSL證書配置,大家可以和前面的nginx的配置進行對比一下。
10、測試配置文件是否正確
/usr/local/nginx/sbin/nginx -t
如果沒有報錯則重啓nginx即可。
/usr/local/nginx/sbin/nginx -s reload
留意:使用https時,要開啓服務器的443端口,如果開啓了服務器還不能訪問,可能需要到服務器提供商後臺安全組給端口放行。
Django多站點部署
有的時候我們一臺服務器需要部署多個項目,那麼我們應該怎麼部署呢?
1、進入Nginx的配置文件目錄/usr/local/nginx/conf/,然後新建一個目錄:
mkdir vhost
之後在vhost目錄裏建立兩個以.conf結尾的文件(有幾個項目就放幾個),裏面的內容如下:
server { listen 80; server_name www.django.cn; charset utf-8; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8997; #端口要和uwsgi裏配置的一樣 uwsgi_param UWSGI_SCRIPT mysite.wsgi; #wsgi.py所在的目錄名+.wsgi uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite/; #項目路徑 } location /static/ { alias /data/wwwroot/mysite/static/; #靜態資源路徑 } }
項目路徑、端口、靜態資源與所屬項目對應好。注意:項目裏的uwsgi端口不能與另一個項目重複。
2、/usr/local/nginx/conf/目錄下的原來默認的nginx.conf文件,先備份一下,然後把裏面的代碼刪除,修改成如下代碼:
events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; include /usr/local/nginx/conf/vhost/*.conf;#主要是這個地方,把新建的兩配置文件包含進來 server { listen 80 default_server; server_name _; return 404; } }
3、新建立一個虛擬環境,把新項目上傳到到服務器。進入虛擬環境,在新的虛擬環境再裝一次uwsgi,和安裝項目所需依賴包,然後在項目根目錄新建立一個uwsgi配置文件,裏面的端口和配置文件名不要和其它項目相同,路徑換成自己的項目路徑。
4、在虛擬環境啓動uwsgi,重啓Nginx,就能成功訪問。哪個項目不能訪問,就把原來的uwsgi進行殺死,然後再進入對應虛擬環境,啓動uwsgi即可。
關於CentOS防火牆端口打開的方法:
有些服務器外網默認是無法訪問的,因爲防火牆不允許,所以要開啓防火牆,讓其可以訪問需要訪問的端口號。
1、運行命令:
firewall-cmd --get-active-zones
運行完成之後,可以看到zone名稱。
2、執行下面命令打開需要打開的端口,以80端口爲例
firewall-cmd --zone=public --add-port=80/tcp --permanent
3、重啓防火牆
firewall-cmd --reload
4、查看端口號是否開啓
firewall-cmd --query-port=80/tcp
有些服務器在防火牆裏開啓端口之後還不能訪問,那就需要到對應的服務器提供商的管理後臺安全組裏開啓對應的端口才能正常訪問。
#-------------------------------------------
https://www.cnblogs.com/freely/p/8087885.html
1、安裝YUM Repo
由於CentOS 的yum源中沒有mysql,需要到mysql的官網下載yum repo配置文件。
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
然後進行repo的安裝:
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
執行完成後會在/etc/yum.repos.d/目錄下生成兩個repo文件mysql-community.repo mysql-community-source.repo
2、安裝MySQL
使用yum命令即可完成安裝
yum install mysql-server
啓動msyql:
systemctl start mysqld #啓動MySQL
配置MySQL
獲取安裝時的臨時密碼:
grep 'temporary password' /var/log/mysqld.log
倘若沒有:
1.刪除原來安裝過的mysql殘留的數據
rm -rf /var/lib/mysql
2.再啓動mysql
systemctl start mysqld #啓動MySQL
登錄:
mysql -u root -p
登錄成功後修改密碼:
set password=password("yourpassword");
設置安全選項:
mysql_secure_installation
其他設置:
systemctl stop mysqld #關閉MySQL systemctl restart mysqld #重啓MySQL systemctl status mysqld #查看MySQL運行狀態 systemctl enable mysqld #設置開機啓動 systemctl disable mysqld #關閉開機啓動
3、其他配置
開啓遠程控制
MySQL默認是沒有開啓遠程控制的,必須添加遠程訪問的用戶
grant all privileges on 數據庫名.表名 to 創建的用戶名(root)@"%" identified by "密碼"; # 數據庫名.表名 如果寫成*.*代表授權所有的數據庫 flush privileges; #刷新剛纔的內容
#如:
grant all privileges on *.* to root@"113.64.243.1" identified by "123456789";
@ 後面是訪問mysql的客戶端IP地址(或是 主機名) % 代表任意的客戶端,如果填寫 localhost 爲本地訪問(那此用戶就不能遠程訪問該mysql數據庫了)。
同時也可以爲現有的用戶設置是否具有遠程訪問權限。
配置默認編碼爲utf8:
vi /etc/my.cnf #添加 [mysqld] character_set_server=utf8 init_connect='SET NAMES utf8'
其他默認配置文件路徑:
配置文件:/etc/my.cnf 日誌文件:/var/log//var/log/mysqld.log 服務啓動腳本:/usr/lib/systemd/system/mysqld.service socket文件:/var/run/mysqld/mysqld.pid
#------------------------------------
https://blog.csdn.net/xiaoyi23000/article/details/72860017
mysql5.7修改密碼ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
2017年06月04日 17:19:11 靈魂自由的忙人 閱讀數:1203
爲了加強安全性,MySQL5.7爲root用戶隨機生成了一個密碼,在error log中,關於error log的位置,如果安裝的是RPM包,則默認是/var/log/mysqld.log。
查看密碼 cat /var/log/mysqld.log |grep "temporary password"
一般可通過log_error設置
mysql> select @@log_error; +---------------------+ | @@log_error | +---------------------+ | /var/log/mysqld.log | +---------------------+ 1 row in set (0.00 sec)
可通過# grep "password" /var/log/mysqld.log 命令獲取MySQL的臨時密碼
用該密碼登錄到服務端後,必須馬上修改密碼,不然做任何操作均會報如下錯誤:
mysql> select user(); ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
如果只是修改爲一個簡單的密碼,會報以下錯誤:
mysql>set password=password('123456'); ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
這個其實與validate_password_policy的值有關。
validate_password_policy有以下取值:
Policy |
Tests Performed |
0 or LOW |
Length |
1 or MEDIUM |
Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG |
Length; numeric, lowercase/uppercase, and special characters; dictionary file |
默認是1,即MEDIUM,所以剛開始設置的密碼必須符合長度,且必須含有數字,小寫或大寫字母,特殊字符。
有時候,只是爲了自己測試,不想密碼設置得那麼複雜,譬如說,我只想設置root的密碼爲123456。
必須修改兩個全局參數:
首先,修改validate_password_policy參數的值
mysql> set global validate_password_policy=0; Query OK, 0 rows affected (0.00 sec)
這樣,判斷密碼的標準就基於密碼的長度了。這個由validate_password_length參數來決定。
mysql> select @@validate_password_length; +----------------------------+ | @@validate_password_length | +----------------------------+ | 8 | +----------------------------+ 1 row in set (0.00 sec)
validate_password_length參數默認爲8,它有最小值的限制,最小值爲:
validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
其中,validate_password_number_count指定了密碼中數據的長度,validate_password_special_char_count指定了密碼中特殊字符的長度,validate_password_mixed_case_count指定了密碼中大小字母的長度。
這些參數,默認值均爲1,所以validate_password_length最小值爲4,如果你顯性指定validate_password_length的值小於4,儘管不會報錯,但validate_password_length的值將設爲4。如下所示:
mysql> select @@validate_password_length; +----------------------------+ | @@validate_password_length | +----------------------------+ | 8 | +----------------------------+ 1 row in set (0.00 sec) mysql> set global validate_password_length=1; Query OK, 0 rows affected (0.00 sec) mysql> select @@validate_password_length; +----------------------------+ | @@validate_password_length | +----------------------------+ | 4 | +----------------------------+ 1 row in set (0.00 sec)
如果修改了validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一個值,則validate_password_length將進行動態修改。
mysql> select @@validate_password_length; +----------------------------+ | @@validate_password_length | +----------------------------+ | 4 | +----------------------------+ 1 row in set (0.00 sec) mysql> select @@validate_password_mixed_case_count; +--------------------------------------+ | @@validate_password_mixed_case_count | +--------------------------------------+ | 1 | +--------------------------------------+ 1 row in set (0.00 sec) mysql> set global validate_password_mixed_case_count=2; Query OK, 0 rows affected (0.00 sec) mysql> select @@validate_password_mixed_case_count; +--------------------------------------+ | @@validate_password_mixed_case_count | +--------------------------------------+ | 2 | +--------------------------------------+ 1 row in set (0.00 sec) mysql> select @@validate_password_length; +----------------------------+ | @@validate_password_length | +----------------------------+ | 6 | +----------------------------+ 1 row in set (0.00 sec)
當然,前提是validate_password插件必須已經安裝,MySQL5.7是默認安裝的。
那麼如何驗證validate_password插件是否安裝呢?可通過查看以下參數,如果沒有安裝,則輸出將爲空。
mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | validate_password_dictionary_file | | | validate_password_length | 6 | | validate_password_mixed_case_count | 2 | | validate_password_number_count | 1 | | validate_password_policy | LOW | | validate_password_special_char_count | 1 | +--------------------------------------+-------+ 6 rows in set (0.00 sec)
#-----------------------
創建數據庫時,設置數據庫的編碼方式
2018年07月17日 15:53:59 衝鴨程序媛 閱讀數:2399
-- 創建數據庫時,設置數據庫的編碼方式 -- CHARACTER SET:指定數據庫採用的字符集,utf8不能寫成utf-8 -- COLLATE:指定數據庫字符集的排序規則,utf8的默認排序規則爲utf8_general_ci(通過show character set查看) drop database if EXISTS dbtest; create database dbtest CHARACTER SET utf8 COLLATE utf8_general_ci; |
1 2 3 |
-- 修改數據庫編碼 alter database dbtest CHARACTER SET GBK COLLATE gbk_chinese_ci; alter database dbtest CHARACTER SET utf8 COLLATE utf8_general_ci; |
1 2 3 4 5 6 7 8 9 |
-- 創建表時,設置表、字段編碼 use dbtest; drop table if exists tbtest; create table tbtest( id int(10) auto_increment, user_name varchar(60) CHARACTER SET GBK COLLATE gbk_chinese_ci, email varchar(60), PRIMARY key(id) )CHARACTER SET utf8 COLLATE utf8_general_ci; |
1 2 3 4 |
-- 修改表編碼 alter table tbtest character set utf8 COLLATE utf8_general_ci; -- 修改字段編碼 ALTER TABLE tbtest MODIFY email VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_general_ci; |
1 2 3 4 |
-- 查看所有的字符編碼 SHOW CHARACTER SET; -- 查看創建數據庫的指令並查看數據庫使用的編碼 show create database dbtest; |
1 2 |
-- 查看數據庫編碼: show variables like '%char%'; |
#--------------------------------------------------------------------------------------------
安裝所需環境
Nginx 是 C語言 開發,建議在 Linux 上運行,當然,也可以安裝 Windows 版本,本篇則使用 CentOS 7 作爲安裝環境。
一. gcc 安裝
安裝 nginx 需要先將官網下載的源碼進行編譯,編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝:
yum install gcc-c++
二. PCRE pcre-devel 安裝
PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也需要此庫。命令:
yum install -y pcre pcre-devel
三. zlib 安裝
zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,所以需要在 Centos 上安裝 zlib 庫。
yum install -y zlib zlib-devel
四. OpenSSL 安裝
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程序供測試或其它目的使用。
nginx 不僅支持 http 協議,還支持 https(即在ssl協議上傳輸http),所以需要在 Centos 安裝 OpenSSL 庫。
yum install -y openssl openssl-devel
官網下載
1.直接下載.tar.gz安裝包,地址:https://nginx.org/en/download.html
2.使用wget命令下載(推薦)。
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
我下載的是1.10.1版本,這個是目前的穩定版。
解壓
依然是直接命令:
tar -zxvf nginx-1.10.1.tar.gz cd nginx-1.10.1
配置
其實在 nginx-1.10.1 版本中你就不需要去配置相關東西,默認就可以了。當然,如果你要自己配置目錄也是可以的。
1.使用默認配置
./configure
2.自定義配置(不推薦)
./configure \ --prefix=/usr/local/nginx \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --pid-path=/usr/local/nginx/conf/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi
注:將臨時文件目錄指定爲/var/temp/nginx,需要在/var下創建temp及nginx目錄
編譯安裝
make make install
查找安裝路徑:
whereis nginx
啓動、停止nginx
cd /usr/local/nginx/sbin/ ./nginx ./nginx -s stop ./nginx -s quit ./nginx -s reload
./nginx -s quit:此方式停止步驟是待nginx進程處理任務完畢進行停止。
./nginx -s stop:此方式相當於先查出nginx進程id再使用kill命令強制殺掉進程。
查詢nginx進程:
ps aux|grep nginx
重啓 nginx
1.先停止再啓動(推薦):
對 nginx 進行重啓相當於先停止再啓動,即先執行停止命令再執行啓動命令。如下:
./nginx -s quit ./nginx
2.重新加載配置文件:
當 ngin x的配置文件 nginx.conf 修改後,要想讓配置生效需要重啓 nginx,使用-s reload不用先停止 ngin x再啓動 nginx 即可將配置信息在 nginx 中生效,如下:
./nginx -s reload
啓動成功後,在瀏覽器可以看到這樣的頁面:
開機自啓動
即在rc.local增加啓動代碼就可以了。
vi /etc/rc.local
增加一行 /usr/local/nginx/sbin/nginx
設置執行權限:
chmod 755 rc.local
到這裏,nginx就安裝完畢了,啓動、停止、重啓操作也都完成了,當然,你也可以添加爲系統服務,我這裏就不在演示了。
轉載:http://www.linuxidc.com/Linux/2016-09/134907.htm