Giới thiệu nginx
Nginx là một web server nguồn mở hoạt động nhanh và sử dụng ít tài nguyên hệ thống hơn Apache. Khi ở trạng thái tải nhẹ thì sự khác nhau giữa Apache và Nginx là không đáng kể. Tuy vậy, ở trạng thái tải nặng, Nginx có thể mở rộng sao cho phù hợp và hoạt động nhanh mà không cần chiếm quá nhiều tài nguyên bộ nhớ như Apache.
Các blog của mình trước đây chạy trên nền tảng LAMP (Linux, Apache, MySQL, PHP) nhưng từ khi chuyển sang LEMP thì thấy tài nguyên sử dụng giảm hơn trước khá nhiều.
Các bước cài đặt LEMP trên Ubuntu
Đầu tiên bạn cần chuẩn bị một server Ubuntu mới tinh chưa cài gì cả, ở đây mình dùng Ubuntu 12.04 64 bit. Kiểm tra lại xem hostname và file host đã chính xác chưa.
Các thao tác thực hiện bằng dòng lệnh, sử dụng tool ZOC Terminal và nano
1. Update Apt-Get
sudo apt-get update
2. Cài đặt MySQL
sudo apt-get install mysql-server php5-mysql
Trong quá trình cài đặt bạn sẽ phải cài đặt root mysql password
Sau khi cài đặt MySQL, kích hoạt bằng lệnh:
sudo mysql_install_db
Hoàn tất cài đặt
sudo /usr/bin/mysql_secure_installation
Điền vào root password
Enter current password for root (enter for none): OK, successfully used password, moving on...
Sau đó là các thao tác như cài đặt lại password, xóa anonymous user… Cái này tùy bạn setup
By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y ... Success! By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y ... Success! Cleaning up...
Đường dẫn file cài đặt MySQL: /etc/my.cnf
3. Cài đặt nginx
sudo apt-get install nginx
Chạy nginx
sudo service nginx start
Lúc này bạn có thể truy cập thẳng vào IP/domain để xem nginx đã hoạt động hay chưa
4. Cài đặt PHP
sudo apt-get install php5-fpm
5. Tùy chỉnh PHP
Tùy chỉnh lại php.ini
sudo nano /etc/php5/fpm/php.ini
Tìm dòng cgi.fix_pathinfo=1 (nhấn Ctrl+W trong nano), bỏ dấu ; ở đầu và thay 1 = 0
cgi.fix_pathinfo=0
Lưu lại (Ctrl+O, Enter) và thoát (Ctrl+X)
Tùy chỉnh php5-fpm
sudo nano /etc/php5/fpm/pool.d/www.conf
Tìm dòng listen = 127.0.0.1:9000 và thay 127.0.0.1:9000 thành /var/run/php5-fpm.sock
listen = /var/run/php5-fpm.sock
Lưu và thoát.
Khởi động lại php-fpm
sudo service php5-fpm restart
6. Tùy chỉnh nginx
Mở file virtual host mặc định
sudo nano /etc/nginx/sites-available/default
Tìm và thay đổi cài đặt như bên dưới. Chú ý các phiên bản Ubuntu mới hơn sử dụng ‘htm’ thay vì ‘www’ nên bạn cần chỉnh lại cài đặt tương ứng.
[...] server { listen 80; root /usr/share/nginx/www; index index.php index.html index.htm; server_name example.com; location / { try_files $uri $uri/ /index.php?$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } [...]
Một số thay đổi:
- Thêm index.php
- Thay đổi server_name thành tên miền
- Chỉnh sửa đường dẫn cho phù hợp với permalink của WP
- Chỉnh lại nội dung trong phần cài đặt “location ~ \.php$ {“
Lưu và thoát.
7. Tạo php info file
Tạo file php.info
sudo nano /usr/share/nginx/www/info.php
Thêm nội dung
<?php phpinfo(); ?>
Lưu và thoát
Khời động lại nginx
sudo service nginx restart
Đã xong, giờ bạn có thể xem các cài đặt của nginx và php-fpm bằng cách truy cập: http://youripaddress/info.php
8. Cài đặt phpMyAdmin
sudo apt-get install phpmyadmin
Khi phpMyAdmin hỏi bạn chọn server (apache or lighttpd) thì chọn cái nào cũng được.
Tạo symbolic link
sudo ln -s /usr/share/phpmyadmin/ /usr/share/nginx/www
Sửa lỗi The mcrypt extension is missing khi chạy phpMyAdmin
Mở file php.ini
sudo nano /etc/php5/fpm/php.ini
Tìm đoạn Dynamic Extensions và thêm dòng sau vào phía cuối
extension=mcrypt.so
Restart php5-fpm
sudo service php5-fpm restart
Khởi động lại nginx
sudo service nginx restart
Giờ bạn đã có thể truy cập vào phpMyAdmin thông qua đường dẫn http://youripaddress/phpmyadmin
Làm thế nào để thêm 1 website mới khi cài hệ điều hành ubuntu
1. Thêm thư mục website, chỉnh sửa cho thuộc owner của webserver. Cách đơn giản nhất là bạn kiểm tra
/usr/share/nginx/www
thuộc user:group nào thì chỉnh thư mục mới y như thế2. Thêm Nginx Conf cho domain như phần 6, nhớ chỉnh sửa phần
root /usr/share/nginx/www;
cho phù hợp thư mục mớilỗi : E: Package ‘php5-mysql’ has no installation candidate
Lúc bạn cài php5-mysql hiện thông báo gì?
apt-get install mysql-server php5-mysql
Luân hướng dẫn LEMP (dùng MariaDB, PHP 7.1 – PHP-FPM) chạy trên Ubuntu 16.04 đi
Hiện chưa có hướng dẫn cụ thể. Bạn theo hướng dẫn này nhé: How To Install Linux, Nginx, MySQL, PHP (LEMP stack) in Ubuntu 16.04
Help me!!!!!!!!! đang mắc kẹt chỗ này. Mình làm theo hướng dẫn cài Hocvps script, bảo mật, swap, tối ưu cache…
Mình cài đặt hết rồi giờ đang backup website qua. Truy cập phpmyadmin, nó hiện cho cái khung đăng nhập, nhưng sau khi điền thông tin thì:
+ Chrome báo không phải kết nối riêng tư sau đó nó chuyển về error 500.
+ Firefox báo: The site says: “Restricted”
Vậy là lỗi do đâu? có thể chỉ mình cụ thể được ko vì mình ko biết gì về mấy cái code này hết. Cảm ơn.
Nó có hiện ra cái khung cho mình đăng nhập vào sau đó nó báo không phải kết nối riêng tư nên không cho đăng nhập.
Luân ơi, mình cài đặt hết rồi giờ đang backup website qua. Truy cập phpmyadmin, nó báo không phải kết nối riêng tư, có trình duyệt báo error 500.
Bạn cài SSL hoặc site trước bạn cài SSL và chuyển sang site không cài SSL?
Cái này mình chạy bằng IP chưa liên quan gì đến domain hết
Anh luôn ơi em hỏi chút, em tự cai đặt Lemp, ko dùng script, sau khi tao xong, em tao subdomain và trỏ đến folder cho domain do, thì nó ko hiện ra các file trong folder, nó báo “File not Found”. Em chưa tìm ra cách giải quyết, anh gặp trường hợp này chưa ạ? Giúp em với.
Khả năng file cấu hình .conf của tên miền bạn có vấn đề rồi. Check lại cái đó coi sao nhé.
Chào Luân,
Sao mình dùng lệnh : # sudo apt-get update
Thì nó báo một loạt file Failed to fetch…
Mình phải xử lý thào nào nhỉ?
Err http://archive.ubuntu.com utopic/main Sources
404 Not Found [IP: 91.189.88.152 80]
Err http://archive.ubuntu.com utopic/restricted Sources
404 Not Found [IP: 91.189.88.152 80]
Err http://archive.ubuntu.com utopic/universe Sources
404 Not Found [IP: 91.189.88.152 80]
Xong thì xóa dùm mình comment này nhé.
Nó chiếm diện tích quá!
Bạn xem bài này coi sao: https://smyl.es/how-to-fix-ubuntudebian-apt-get-404-not-found-package-repository-errors-saucy-raring-quantal-oneiric-natty/
Bạn ơi, mình có chạy script upload. nó báo lỗi The uploaded file exceeds the post_max_size directive in php.ini
Mình đã vào
Nginx sửa client_max_body_size
php.in sửa:
post_max_size
upload_max_filesize
vậy mà vẫn bị là do đâu bạn nhỉ?
Thanks
Bạn sửa rồi nhưng đã restart lại service chưa thế?
Cậu ơi ở phần “5. Tùy chỉnh PHP” sao cài LEMP trên Centos lại không có, cậu có thể giải thích cho mình phần này được không?
Có thể đường dẫn file khác, bạn tìm bằng lệnh
find / -name php.ini
http://i.imgur.com/kxRfW32.png
Sao mình đến bước tạo phpinfo thì ko lưu đc cậu nhỉ?error writing /usr/share/nginx/www/info.php: No such file or directory
Không rõ nữa, bạn tạo file trên máy tính rồi upload qua sftp thử coi?
Bác ơi cho em hỏi, em đã cài lemp cho ubuntu và chạy site thành công. Bây giờ em muốn add thêm domain khác vào vps nữa, thì em phải chỉnh những file nào vậy ? Hình như trên mạng rất ít hướng dẫn lemp cho ubuntu thì phải :'(
Chuẩn bài hướng dẫn này nhé:
– https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-14-04-lts
– https://www.digitalocean.com/community/tutorials/how-to-set-up-wordpress-multisite-with-nginx-on-ubuntu-14-04
trang của mình cài nginx, hôm nay khởi động lại vps bây giờ truy cập vào nó lại hiện ra welcome to nginx, mình đợi 5h rồi mà vẫn thế. ko biết bạn có biết lỗi này ko?
Cấu hình nginx lỗi rồi, không biết bạn thay đổi gì dẫn dến việc này.
chao luân trần , mình đã làm như hướng dẫn của bạn nhưng khi truy cập vào http://ip/phpmyadmin mình nhận được lỗi này :403 Forbidden , nginx/1.1.19
bạn vui lòng giúp mình cám ơn nhiều
hi bạn, mình nhấn lệnh này:
XXXXXXXX:~# sudo nano /etc/php5/fpm/php.ini
sudo: nano: command not found
Nhưng nó báo vậy thì sửa như nào bạn nhỉ 😀
Thanks bạn
Bạn chưa cài đặt nano rồi, chạy lệnh
apt-get install nano
trước nhéBác Luân cho e hỏi, sao e cài MySql trên ubuntu từ apt-get install mysql-server nó toàn lỗi khi cài mysql-communicate-server. E thử trên các bản 12.04, 11.04 32 và 64 bit đều bị y như thế, từ mysql 5.5 đến 5.6. E đang dùng ethernet server vps. Bác có kinh nghiệm với vụ này chỉ e với 🙂
Bạn add DNS server:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
rồi chạy lại lệnh cài đặt MySQL là được. Xem thêm thông tin ở đây: http://askubuntu.com/questions/91543/apt-get-update-fails-to-fetch-files-temporary-failure-resolving-errorE thử rồi nhưng vẫn ko đc 🙁
Của e nó vẫn báo về lỗi như này.
dpkg: error processing package mysql-community-server (–configure):
subprocess installed post-installation script returned error exit status 141
E: Sub-process /usr/bin/dpkg returned an error code (1)
Mình làm thử được luôn rồi mà nhỉ?
Hờ, mình tìm ra lỗi rồi.
Xem trong syslog nó báo như này:
rsyslogd-2039: Could no open output pipe ‘/dev/xconsole’: No such file or directory [try http://www.rsyslog.com/e/2039 ]
Sau khi ngâm cứu trên mạng, thử fix tay bằng lệnh:
touch /dev/xconsole
sudo chown syslog:adm /dev/xconsole
sudo service rsyslog restart
thì mọi thứ chạy ok rồi 😀
Mình cài đến bước 3
Chạy nginx
sudo service nginx start
Lúc này bạn có thể truy cập thẳng vào IP/domain để xem nginx đã hoạt động hay chưa
Khi vào ip nó chỉ ra trang mặc định của ubutun thôi
giup mình với
Trang mặc định của Ubuntu bạn thấy là Apache, do nó được cài mặc định theo Ubuntu. Chỉ cần chạy lệnh
sudo apt-get remove -y apache2*
là đượcP/s: hiện giờ hướng dẫn này đã cũ, mình đang tiến hành update bài viết để sử dụng với Ubuntu 14.04, bạn đợi nhé.
Mình đang dùng Ubuntu 14.04, và làm theo hướng dẫn nhưng khi khởi động lại nginx (sudo service nginx restart) toàn báo [fail].
Và trong /etc/php5/fpm/pool.d/www.conf không có listen = 127.0.0.1:9000 như hướng dẫn
Đang cần hỗ trợ, cảm ơn.
Bạn có thể hướng dẫn mình làm subdomain không ??
chạy nginx cùng lúc vs apache trên cùng 1 server có bị lỗi port ko vậy cả nhà??
Nếu bạn dùng nginx làm reverse proxy thì cần cấu hình thêm, tất nhiên không lỗi port.
cảm ơn bạn vì đã reply, nhân tiện vào đây giúp mình phát 🙂
https://hocvps.com/question/tu-dong-chmod-cho-file-folder-khi-no-vua-dc-tao-ra/
mình đã cài đặt LAPM, nếu m muốn sử dụng nginx làm reverse proxy thì có cần setup thêm gói php-fpm ko?
Mình sẽ có bài hướng dẫn sau nhé.
Ah t fix được rồi thank cậu, cậu có thể xóa cmt phía trên của t k, à cho t hỏi t muốn up code qua FileZilla thì port của vps là bao nhiêu vậy cậu ( t dùng vps của ramnote)
Là 22 nhé, SFTP
Bác cho e ? là e cai phpmyadmin toàn bị lỗi 500 thế nhỉ.
ip: http://81.4.107.42/phpmyadmin
Mình đang ko truy cập được bạn ạ
Tại sao mình cứ hiện khung down load info.php thế?
Bạn chạy restart server đi là được