10 October, 2018

Một số câu lệnh cài đặt nhiều website trên VPS nginx Centos

Nội dung tổng hợp một số lệnh cần thiết trong việc cài đặt website trên VPS nginx Centos 6/7, do mình hay quên nên ghi lại lần sau chỉ việc copy - paste.



Lưu ý: những chỗ bôi đỏ là chỗ bạn chỉnh lại tương ứng theo tên miền của mình

Tạo thư mục chứa website: thay example.com bằng tên miền của bạn hoặc tên nào đó dễ nhớ
mkdir -p /home/example.com/public_html
Gán quyền để đảm bảo cho website hoạt động 
chown -R nginx:nginx /home/example.com/public_html
Cấu hình file .conf cho tên miền mới:
nano /etc/nginx/conf.d/example.com.conf

giao diện chỉnh sửa nội dung file .conf hiện ra => dán nội dung sau vào:
#
# example.com configuration
#
server {
    listen       80;
    server_name example.com www.example.com;

    location / {
        root   /home/example.com/public_html;
        index index.php  index.html index.htm;
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /home/example.com/public_html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /home/example.com/public_html;
    }

    # pass the PHP scripts to FastCGI server
    #
    location ~ \.php$ {
        root           /home/example.com/public_html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
Tổ hợp phím Ctrl + O sau đó Enter để ghi lại nội dung, sau đó Ctrl + X để thoát khỏi giao diện sửa file .conf

Khởi động lại Nginx: công việc quan trọng sau khi sửa file cấu hình trên VPS
service nginx reload
Tạo Database, User và gán quyền:

- Đăng nhập mySQL trên VPS: khi được hỏi mật khẩu, nhập pass đã được tạo khi cài đặt hocvps script (đối với những ai sử dụng hocvps script)
mysql -u admin -p
- Tạo database mới: dbname là tên database ta tự đặt
create database dbname;
- Tạo user và pass:
create user username@localhost identified by 'password';
- Gán quyền user:
grant all on dbname.* to username@localhost;
Xác thực tất cả thao tác trên bằng lệnh:
FLUSH PRIVILEGES;
Bây giờ chỉ việc up code lên và chạy thôi

Một số lệnh hay dùng khi thao tác trên VPS Nginx Centos

- Truy cập tới các thư mục: [another directory] - là đường dẫn tới thư mục, ví dụ: /etc/nginx/conf.d
cd [another directory]
Nếu muốn di chuyển về thư mục home thì có thể sử dụng: cd ~

- Tắt kết nối SSH
exit
- Copy: nhân bản thêm 1 file mới với tên mới, file cũ vẫn được giữ nguyên
cp [filename] [new filename]
- Move: di chuyển theo cách tạo ra 1 file mới với tên tùy chỉnh và đồng thời xóa đi file cũ
mv [old filename] [new filename]
- Xóa file
rm [file name]
- Copy cả Folder kèm toàn bộ file chứa bên trong:
cp -r [directory] [new directory]
- Tạo 1 thư mục mới:
mkdir [folder name]
- CHMOD
chmod [permission type] [file/folder name]
ví dụ: chmod 777 wp-config.php
Khi tạo file chúng ta thường sẽ thực hiện luôn thao tác này để phân quyền cho người dùng.
Cách cài đặt permission type thì như bên dưới:
Số đầu tiên cho file owner, số thứ 2 cho group của owner, và số thứ 3 cho toàn bộ user và group khác.
7 = Read + Write + Execute
6 = Read + Write
5 = Read + Execute
4 = Read
3 = Write + Execute
2 = Write
1 = Execute
0 = All access denied

Cài đặt chứng chỉ Let's Encrypt

- Clone mã nguồn Let's Encrypt về
# Install Git
yum -y install git

# Clone Let's Encrypt repository
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
- Phát hành chứng chỉ cho domain/subdomain:
# Stop Nginx
service nginx stop

# Issue SSL Let's Encrypt
/opt/letsencrypt/certbot-auto certonly --standalone
Nhập các thông tin theo yêu cầu từ vps và cấu hình lại file .conf sẽ tương tự như sau:
#
# hoidap.mecua.net configuration
#

server {
 listen 80;
 server_name hoidap.mecua.net;
 rewrite ^(.*) https://hoidap.mecua.net$1 permanent;
}

server {
 listen 443 ssl;
  
     root /home/hoidap.mecua.net/public_html;
 index index.php index.html index.htm;
     server_name hoidap.mecua.net;
 
 # SSL
 ssl_certificate /etc/letsencrypt/live/hoidap.mecua.net/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/hoidap.mecua.net/privkey.pem;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
 ssl_prefer_server_ciphers on; 
 ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

        # Improve HTTPS performance with session resumption
        ssl_session_cache shared:SSL:50m;
        ssl_session_timeout 1d;

        # DH parameters
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;
        # Enable HSTS
        add_header Strict-Transport-Security "max-age=31536000" always;
 
     location / {
  try_files $uri $uri/ /index.php?$args;
 }
 
 # Custom configuration
 include /home/hoidap.mecua.net/public_html/*.conf;
 
     location ~ \.php$ {
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
         include /etc/nginx/fastcgi_params;
         fastcgi_pass 127.0.0.1:9000;
         fastcgi_index index.php;
  fastcgi_connect_timeout 1000;
  fastcgi_send_timeout 1000;
  fastcgi_read_timeout 1000;
  fastcgi_buffer_size 256k;
  fastcgi_buffers 4 256k;
  fastcgi_busy_buffers_size 256k;
  fastcgi_temp_file_write_size 256k;
  fastcgi_intercept_errors on;
         fastcgi_param SCRIPT_FILENAME /home/hoidap.mecua.net/public_html$fastcgi_script_name;
     }
 location /nginx_status {
    stub_status on;
    access_log   off;
                allow 127.0.0.1;
                deny all;
 }
 location /php_status {
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME  /home/hoidap.mecua.net/public_html$fastcgi_script_name;
  include /etc/nginx/fastcgi_params;
                allow 127.0.0.1;
                deny all;
     }
 # Disable .htaccess and other hidden files
 location ~ /\.(?!well-known).* {
  deny all;
  access_log off;
  log_not_found off;
 }
        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }
        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }
 location ~* \.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso|eot|svg|ttf|woff)$ {
         gzip_static off;
  add_header Pragma public;
  add_header Cache-Control "public, must-revalidate, proxy-revalidate";
  access_log off;
  expires 30d;
  break;
        }

        location ~* \.(txt|js|css)$ {
         add_header Pragma public;
  add_header Cache-Control "public, must-revalidate, proxy-revalidate";
  access_log off;
  expires 30d;
  break;
        }
}
Kiểm tra lại cấu hình nginx xem đã ok chưa:
nginx -t
Phản hồi như sau là ok:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Khởi động lại Nginx
service nginx restart
Vậy là xong!

I. Tar

Tar giúp đóng gói các files/thư mục vào trong 1 file, giúp ích rất nhiều cho việc sao lưu dữ liệu. Thông thường, Tar file có đuôi .tar. Để giảm tối đa kích thước tập tin, chúng ta cần thêm các tùy chọn nén gzip hoặc bunzip2. Tổng hợp các tùy chọn bao gồm
  • c: Tạo file lưu trữ.
  • x: Giải nén file lưu trữ.
  • z: Nén với gzip – Luôn có khi làm việc với tập tin gzip (.gz).
  • j: Nén với bunzip2 – Luôn có khi làm việc với tập tin bunzip2 (.bz2).
  • lzma: Nén với lzma – Luôn có khi làm việc với tập tin LZMA (.lzma).
  • f: Chỉ đến file lưu trữ sẽ tạo – Luôn có khi làm việc với file lưu trữ.
  • v: Hiển thị những tập tin đang làm việc lên màn hình.
  • r: Thêm tập tin vào file đã lưu trữ.
  • u: Cập nhật file đã có trong file lưu trữ.
  • t: Liệt kê những file đang có trong file lưu trữ.
  • delete: Xóa file đã có trong file lưu trữ.
  • totals: Hiện thỉ thông số file tar
  • exclude: loại bỏ file theo yêu cầu trong quá trình nén

1. Tạo fie nén .tar

# tar -cvf filename.tar file1 file2 folder1 folder2
Filename.tar là tên file tar bạn sẽ tạo ra. File1, folder1… là các file, thư mục bạn muốn đóng gói trong file tar (đóng gói theo đúng thứ tự liệt kê).
Ví dụ, bạn đang làm việc tại /usr, cần đóng gói folder /usr/bin, folder /boot/grub và file /boot/abc.img
# tar -cvf filename.tar bin /boot/grub /boot/abc.img
File được lưu trữ có thể ở dạng filename (abc.img) hoặc ở dạng file kèm đường dẫn (boot/abc.img). Khi đó, trong quá trình bung dữ liệu, file sẽ được đặt ở đúng đường dẫn đã lưu.
Đóng gói và nén dữ liệu
Tar thông thường chỉ giúp đóng gói dữ liệu. Để nén dữ liệu giảm thiểu dung lượng, bạn dùng cần các tùy chọn nén z cho gzip (định dạng .gz) hoặc j cho bunzip (định dạng .bz2)
# tar -czvf filename.tar.gz file1 file2 folder1 folder2
hoặc
# tar -cjvf filename.tar.bz2 file1 file2 folder1 folder2
Lưu trữ bỏ qua các tập tin theo yêu cầu
Trong quá trình đóng gói và lưu trữ dữ liệu, có thể loại bỏ các tập tin theo yêu cầu bằng cách sử dụng tùy chọn exclude.
Ví dụ, loại bỏ các file .pyc khỏi việc đóng gói dữ liệu thư mục /usr/lib/python2.6/site-packages
# tar -cvf filename.tar /usr/lib/python2.6/site-packages --exclude='*.pyc'
Hiển thị tổng dung lượng đã được lưu trữ
Sử dụng tùy chọn totals giúp hiển thị tổng dung lượng đã được lưu trữ
# tar -cvf filename.tar file1 folder1 --totals
Total bytes written: 20561920 (20MiB, 354MiB/s)

2. Làm việc với file .tar

Liệt kê nội dung bên trong file lưu trữ
Để xem nội dung bên trong 1 file tar, sử dụng tùy chọn v để cho ra các thông tin chi tiết trên màn hình bao gồm permission, owner, date/time…
# tar -tvf filename.tar
Thêm mới, cập nhập nội dung vào file lưu trữ
Sử dụng tùy chọn r để thêm nội dung vào file lưu trữ
# tar -rvf filename.tar add_file1 add_file2
Để cập nhập dữ liệu vào file lưu trữ đã có, sử dụng tùy chọn u (đặc biệt cần trong việc update các file backup)
# tar -uf filename.tar
Câu lệnh trên sẽ so sánh thời gian sửa đổi của nội dung bên ngoài và bên trong của file lưu trữ. File bên trong sẽ được cập nhật nếu tập tin bên ngoài mới hơn.
Xóa dữ liệu trong file lưu trữ
Sử dụng tùy chọn delete để xóa nội dung theo yêu cầu trong file lưu trữ
# tar -f filename.tar --delete file1 file2

3. Giải nén file .tar

# tar -xvf filename.tar
Câu lệnh trên sẽ không xóa file .tar mà sẽ chỉ giải nén dữ liệu bên trong file tar vào thư mục hiện tại. Trong trường hợp file được lưu có kèm đường dẫn, nếu đường dẫn đó không tồn tại, hệ thống sẽ tự tạo thư mục tương ứng để đặt file. Tùy theo cách bạn đóng gói dữ liệu mà khi bung ra vị trí file có thể thay đổi
Ví dụ, bạn đang làm việc tại /boot/grub và muốn đóng gói file 1.map tại thư mục đó.
  • Nếu bạn đóng gói 1.map, khi giải nén đường dẫn file sẽ là /boot/grub/1.map
  • Nếu bạn đóng gói /boot/grub/1.map, khi giải nén đường dẫn file sẽ là /boot/grub/boot/grub/1.map
Bung file nén
Đối với các file nén gzip .tar.gz bạn cần sử dụng thêm tùy chọn z (với file nén gzip) hay tùy chọn j(với file nén bunzip)
# tar -xzvf filename.tar.gz
# tar -xjvf filename.tar.bz2
Bung một vài file/thư mục cụ thể
# tar -xvf filename.tar file1 file2
Bung vào 1 thư mục khác
Để bung dữ liệu vào nơi khác thư mục hiện tại, bạn cần chỉ rõ đường dẫn của thư mục đích với tùy chọn -C
# tar -xvf filename.tar -C /directory
Ví dụ, # tar -xvf test.tar -C /boot/efi thì toàn bộ file của test.tar sẽ được bung ra trong thư mục /boot/efi

II. Gzip

GZIP được dùng khá phổ biến trong nền tảng Unix/Linux. GZIP chỉ có thể làm việc trên 1 tập tin hoặc 1 dòng dữ liệu, do đó không thể lưu trữ được nhiều tập tin. Vì vậy, nếu muốn sử dụng cho nhiều tập tin thì chúng ta phải sử dụng TAR đóng gói chúng lại trước.

1. Tạo file nén Gzip

# gzip filename
Khi đó, file gốc tự đổng chuyển đổi thành file nén. Ví dụ # gzip test.php sẽ chuyển đổi test.php thành test.php.gz
Thiết lập mức độ nén
Mức độ nén được tùy chỉnh trong khoảng từ 1 đến 9. Trong đó, 1 ~ fast nén nhanh nhất nhưng mức độ nén thấp nhất còn 9 ~ best mức độ nén cao nhất nhưng nén chậm nhất
# gzip --fast filename hoặc # gzip -1 filename
# gzip --best filename hoặc # gzip -9 filename
Kiểm tra thuộc tính file nén
# gzip -l filename.gz
Ví dụ,
# gzip -l hocvps.tar.gz
         compressed        uncompressed  ratio uncompressed_name
           23724096            64901120  63.4% hocvps.tar

2. Giải nén file Gzip

# gzip -d filename
Khi đó, file nén tự động chuyển đổi thành file gốc. Ví dụ, # gzip -d test.php.gz sẽ chuyển đổi test.php.gz thành test.php

III. Zip

Đầu tiên, bạn cần kiểm tra cài đặt zip trong systems.
# rpm -q zip
package zip is not installed
hoặc
Package zip-3.0-1.el6_7.1.x86_64 already installed and latest version
Tiến hành cài đặt Zip nếu chưa có
# yum install zip -y
Installed:
zip.x86_64 0:3.0-1.el6_7.1

1. Tạo file nén .zip

# zip filename.zip filename1 filename2
Trong đó, filename.zip là file zip sẽ được tạo từ việc nén filename1 và filename2
Nén folder thành 1 file zip
Sử dụng tùy chọn -r để zip nén toàn bộ folder và các file bên trong.
# zip -r test.zip folder1
Tạo file nén ở chế độ yên lặng
Sử dụng tùy chọn -q để tạo file nén ở chế độ yên lặng – quiet, không hiển thị thông tin gì trong quá trình nén.
# zip -rq test.zip folder

2. Giải nén file .zip

# unzip filename.zip
Khi đó, file trong filename.zip sẽ được giải nén vào thư mục hiện tại, file nén vẫn giữ nguyên
Nếu file đó còn tồn tại ở thư mục giải nén, chương trình sẽ hỏi bạn về các tùy chọn thay thế
[y]es, [n]o, [A]ll, [N]one, [r]ename
Giải nén ở chế độ yên lặng
Sử dụng tùy chọn -q để giải nén ở chế độ yên lặng – quiet, không hiển thị thông tin gì trong quá trình giải nén.
# unzip -q test.zip

0 nhận xét:

Post a Comment