lnmp 설치 설정
Lnmp 구조 (Linux + nginx + my sql + phop) 는 현재 사이트 의 주류 구조 로 이 구 조 는 한 사이트 의 가장 기본 적 인 요 구 를 포함한다. 운영 환경 + 웹 용기 + 동적 페이지 처리 + 저장.물론 같은 주류 구조 에 lamp 도 있 지만 개인 적 으로 nginx 의 성능 이 현재 추세 에서 한 수 위 라 고 생각 합 니 다.
2. Nginx 우세
Nginx 는 고성능 웹 서버, 역방향 프 록 시 서버, 부하 균형 서버 로 고성능 은 주로 이벤트 구동 을 바탕 으로 하 는 I / O 모델 을 도입 하여 높 은 병행 을 지원 하고 메모리 자원 을 적 게 차지 하 는 데 나타난다.웹 서버 로 서 nginx 는 apache 보다 더 적은 자원 을 사용 하고 더 많은 병렬 연결 을 지원 합 니 다. nginx 는 정적 파일, 색인 파일 을 처리 하고 자동 색인 의 효율 이 매우 높 습 니 다.역방향 프 록 시 서버 로 서 nginx 는 캐 시 없 는 역방향 프 록 시 를 실현 하여 사이트 운행 속 도 를 높 일 수 있 습 니 다.nginx 는 부하 균형 서버 로 서 내부 적 으로 Rails 와 PHP 를 지원 할 수도 있 고 HTTP 프 록 시 서버 를 지원 해 대외 적 으로 서 비 스 를 할 수도 있다.간단 한 용 착 과 알고리즘 을 이용 하여 부하 균형 을 이 루 는 것 도 지원 합 니 다.
3. 설치 설정
1. 설치 설정 nginx
홈 페이지 에서 nginx 의 원본 패키지 다운로드:http://nginx.org/en/download.html
여기 서 제 가 선택 한 건 nginx - 1.12.0. tar. gz 입 니 다.
1) 압축 해제 소스 패키지
[root@server1 ~]# tar zxf nginx-1.12.0.tar.gz
2) 소스 패키지 설치
[root@server1 nginx-1.12.0]# cd auto/cc
[root@server1 cc]# vim gcc
# debug
#CFLAGS="$CFLAGS -g" ### , debug ,nginx
[root@server1 nginx-1.12.0]# cd src/core
#define NGINX_VER "nginx" ### nginx
[root@server1 nginx-1.12.0]# yum install pcre-devel -y ###
[root@server1 nginx-1.12.0]# ./configure --prefix=/usr/local/lnmp/nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module
### , : 、 、l io、 ngx_http_stub_status_module ( nginx , , )、 ngx_http_ssl_module
[root@server1 nginx-1.12.0]# make&&make install
[root@server1 nginx-1.12.0]# cd /usr/local/lnmp/nginx/
[root@server1 nginx]# ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
### ,
3) 설정 nginx
nginx 의 설정 디 렉 터 리 는 / usr / local / lnmp / nginx / conf / nginx. conf 입 니 다.
[root@server1 nginx]# cd conf
[root@server1 conf]# useradd -u 800 nginx ### nginx
[root@server1 conf]# vim nginx.conf
user nginx nginx; ### nginx
worker_processes 2;### , cpu
worker_cpu_affinity 01 10;### cpu, cpu 01 10 cpu 0001 0010 0100 1000
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 4096; ### , sysctl -a | grep file
}
[root@server1 conf]# vim /etc/security/limits.conf ### nginx , 4096, ulimit -a
nginx - nproc 4096
nginx - nofile 4096
[root@server1 conf]# su nginx
[nginx@server1 conf]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14868
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 4096
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@server1 conf]# nginx -t
[root@server1 conf]# nginx
### server
[root@server1 conf]# vim nginx.conf
server {
listen 80;
server_name www.westos.com;
location / {
root /web1; ###
index index.html;
}
}
server {
listen 80;
server_name www.linux.com;
location / {
root /web2;
index index.html;
}
}
[root@server1 conf]# mkdir /web1
[root@server1 conf]# mkdir /web2
[root@server1 conf]# echo 'westos' > /web1/index.html
[root@server1 conf]# echo 'linux' > /web2/index.html
[root@server1 conf]# nginx -t
[root@server1 conf]# nginx -s reload
###
[root@server1 conf]# curl -I www.westos.com ### url
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 14 May 2017 06:00:25 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Sun, 14 May 2017 05:40:05 GMT
Connection: keep-alive
ETag: "5917edb5-7"
Accept-Ranges: bytes
### https
[root@server1 conf]# vim nginx.conf
# HTTPS server
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem;
ssl_certificate_key cert.pem; ### key
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
[root@server1 conf]# cd /etc/pki/tls/certs/
[root@server1 certs]# ls
ca-bundle.crt make-dummy-cert renew-dummy-cert
ca-bundle.trust.crt Makefile
[root@server1 certs]# make cert.pem ###
umask 77 ; \
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
/usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \
cat $PEM1 > cert.pem ; \
echo "" >> cert.pem ; \
cat $PEM2 >> cert.pem ; \
rm -f $PEM1 $PEM2
Generating a 2048 bit RSA private key
...............................................................................................................+++
............................+++
writing new private key to '/tmp/openssl.f7Dpjt'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shaanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:westos
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:server1
Email Address []:root@localhost
[root@server1 certs]# mv cert.pem /usr/local/lnmp/nginx/conf/ ### nginx
[root@server1 certs]# nginx -t ###
[root@server1 certs]# nginx -s reload ### nginx
###
[root@server1 conf]# vim nginx.conf
server {
listen 80;
server_name www.princekin.com; ### www.princekin.com https://www.prince.com
rewrite ^(.*) https://www.prince.com;
}
[root@server1 conf]# nginx -t
[root@server1 conf]# nginx -s reload
###
[root@server1 conf]# vim nginx.conf
### upstream
http {
upstream westos {
server 172.25.45.2:80;
server 172.25.45.3:80;
server 172.25.45.1:8080 backup; ### 2 3 1,1
}
### proxy_pass
server {
listen 80;
server_name www.westos.com;
rewrite ^(.*) http://www.linux.com;
}
server {
listen 80;
server_name www.linux.com;
location / {
proxy_pass http://westos;
}
}
### http8080 http nginx
[root@server1 conf]# yum install httpd -y
[root@server1 conf]# vim /etc/httpd/conf/httpd.conf
ServerName 172.25.45.1
Listen 8080
[root@server1 conf]# vim /var/www/html/index.html
[root@server1 conf]# /etc/init.d/httpd start
server2 server3 nginx httpd
###
[root@server1 conf]# for i in {1..10}; do curl www.linux.com;done
server3
server2
server3
server2
server3
server2
server3
server2
server3
server2
2. 설치 설정 mysql
홈 페이지 에서 다운로드:https://www.mysql.com/downloads/
my sql - boost - 5.7.17. tar. gz (boost 가 없 는 것 도 내 려 갈 수 있 습 니 다. 가방 은 작 지만 컴 파일 할 때 boost 가방 을 따로 다운로드 해 야 합 니 다)
원본 패 키 지 를 컴 파일 할 때 의존 적 으로 설치 해 야 합 니 다:
gcc gcc-c++ ncurses-devel bison openssl-devel zlib-devel cmake (시스템 자체 버 전이 너무 낮 으 면 홈 페이지 에서 최신 버 전에 있어 야 합 니 다)
[root@server1 mysql-5.7.17]# yum install -y gcc gcc-c++ make ncurses-devel bison openssl-devel zlib-devel cmake
[root@server1 mysql-5.7.17]# tar zxvf mysql-boost-5.7.12.tar.gz
[root@server1 mysql-5.7.17]# cd mysql-5.7.17
[[email protected]]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#
-DMYSQL_DATADIR=/usr/local/mysql/data \
#
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \ #Unix socket
-DWITH_MYISAM_STORAGE_ENGINE=1 \
# myisam
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
# innodb
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
# archive
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
# blackhole
-DWITH_PARTITION_STORAGE_ENGINE=1 \
#
-DENABLED_LOCAL_INFILE=1 \
#
-DWITH_READLINE=1 \
#
-DWITH_SSL=yes \
# SSL
-DDEFAULT_CHARSET=utf8 \
# utf8
-DDEFAULT_COLLATION=utf8_general_ci \
#
-DEXTRA_CHARSETS=all \
#
-DMYSQL_TCP_PORT=3306 \
#MySQL
-DWITH-BOOST=boost/boost_1_59_0/
[root@server1 mysql-5.7.17]# make && make install
### ,
make clean
rm -f CmakeCache.txt
[root@server1 mysql-5.7.17]# cd /usr/local/lnmp/mysql
[root@server1 mysql]# cd support-files
[root@server1 support-files]# cp my-default.cnf /etc/my.cnf
[root@server1 support-files]# cp mysql.server /etc/init.d/mysqld
[root@server1 mysql]# useradd -u 27 -s /sbin/nologin mysql
[root@server1 mysql]# groupmod -g 27 mysql
[root@server1 mysql]# chown mysql.mysql -R .
[root@server1 bin]# vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin ###
[root@server1 bin]# source ~/.bash_profile
[root@server1 mysql]# mysqld --initialize --user=mysql ###
2017-05-14T05:22:13.918714Z 1 [Note] A temporary password is generated for root@localhost: XUpjk0SNh4+C ### root
[root@server1 mysql]# /etc/init.d/mysqld start ###
[root@server1 mysql]# mysql -p
Enter password: ### , mysql
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. ###
mysql> alter user root@localhost identified by 'Lee+88888';
Query OK, 0 rows affected (0.00 sec)
### , , 8
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
###
[root@server1 mysql]# mysql_secure_installation -p
Enter password:
Securing the MySQL server deployment.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) :
... skipping.
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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
3. 설정 php 설치
php 홈 페이지 다운로드:http://php.net/downloads.php
[root@server1 ~]# tar jxf php-5.6.20.tar.bz2
다운로드 할 의존 패키지:
libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm re2c-0.13.5-1.el6.x86_64.rpm gd-devel-2.0.35-11.el6.x86_64.rpm
[root@server1 ~]# yum install libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm re2c-0.13.5-1.el6.x86_64.rpm gd-devel-2.0.35-11.el6.x86_64.rpm
[root@server1 php-5.6.20]# yum install net-snmp-devel gmp-devel curl-devel libxml2-devel -y
[root@server1 php-5.6.20]# ./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-mysql --with-mysqli --with-pdo-mysql --enable-mysqlnd --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-pear --with-gettext --with-gmp --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash
[root@server1 php-5.6.20]# make && make install
[root@server1 php-5.6.20]# cd /usr/local/lnmp/php
[root@server1 php]# cd etc/
[root@server1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@server1 php-5.6.20]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini
[root@server1 php-5.6.20]# cd /usr/local/lnmp/php/etc/
[root@server1 etc]# vim php.ini
date.timezone = Asia/Shanghai ###
pdo_mysql.default_socket=/usr/local/lnmp/mysql/data/mysql.sock
mysqli.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
mysql.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
### mysql.sock
[root@server1 etc]# vim php-fpm.conf
[global]
; Pid file
; Note: the default prefix is /usr/local/lnmp/php/var
; Default Value: none
pid = run/php-fpm.pid ###
[root@server1 etc]# cd ~/php-5.6.20/sapi/fpm/
[root@server1 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm ### php-fpm /etc/init.d
[root@server1 fpm]# chmod +x /etc/init.d/php-fpm ###
[root@server1 fpm]# /etc/init.d/php-fpm start
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
집 서버 설계 (하드웨어 편)자신의 Redmine이나 ownCloud를 운용하기 위해 사쿠라 VPS, DigitalOcean, OpenShift 등을 놀랐습니다만, 침착 해 왔으므로 현상을 정리하고 싶습니다. 먼저 하드웨어 구성을 정리합니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.