摘要:本文是本人在搭建阿里云的服務器環境的時候,結合阿里云提供的文檔和自己編譯安裝過程中的各種得來。適用對象適用于熟悉操作系統,剛開始使用阿里云進行建站的個人用戶。
本文是本人在搭建阿里云的ECS服務器環境的時候,結合阿里云提供的文檔和自己編譯安裝過程中的各種ERROR得來。
適用對象
適用于熟悉Linux操作系統,剛開始使用阿里云進行建站的個人用戶。
基本流程
使用云服務器 ECS 搭建LNMP平臺的操作步驟如下:
1.準備編譯環境
2.安裝nginx
3.安裝mysql
4.安裝php-fpm
5.測試訪問
步驟一:準備編譯環境
本文主要說明手動安裝LNMP平臺的操作步驟,您也可以在云市場購買LNMP鏡像直接啟動ECS,以便快速建站。
1、系統版本說明
1.# cat /etc/redhat-release 2.CentOS release 6.5 (Final)
注:這是本文檔實施時參考的系統版本。您的實際使用版本可能與此不同,下文中的nginx,mysql,及php版本,您也可以根據實際情況選擇相應版本。
2、關閉SELINUX
修改配置文件,重啟服務后永久生效。
# sed -i "s/SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
命令行設置立即生效。
# setenforce 0
3、安全組設置
在ECS安全組放行需訪問的端口和訪問白名單,下面的示例表示允許所有IP訪問服務器的80端口。您可以根據實際情況放行允許訪問的客戶端IP。
步驟二:安裝nginx
Nginx是一個小巧而高效的Linux下的Web服務器軟件,是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,已經在一些俄羅斯的大型網站上運行多年,目前很多國內外的門戶網站、行業網站也都在是使用Nginx,相當穩定。
1、添加運行nginx服務進程的用戶
1.# groupadd -r nginx 2.# useradd -r -g nginx nginx
2、下載源碼包解壓編譯。
# wget http://nginx.org/download/nginx-1.10.2.tar.gz # tar xvf nginx-1.10.2.tar.gz -C /usr/local/src # yum groupinstall "Development tools" # yum -y install gcc wget gcc-c++ automake autoconf libtool libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed pcre-devel openssl-devel # cd /usr/local/src/nginx-1.10.2 # ./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fcgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --user=nginx --group=nginx --with-pcre --with-http_v2_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-threads --with-stream --with-stream_ssl_module # make && make install # mkdir -pv /var/tmp/nginx/client
3、添加SysV啟動腳本。
# vim /etc/init.d/nginx #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse # proxy and IMAP/POP3 proxy server # processname: nginx # config: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/etc/nginx/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval killall -9 nginx } restart() { configtest || return $? stop sleep 1 start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac
4、賦予腳本執行權限。
# chmod +x /etc/init.d/nginx
5、添加至服務管理列表,設置開機自啟。
# chkconfig --add nginx # chkconfig nginx on
6、啟動服務。
# service nginx start
7、瀏覽器訪問可看到默認歡迎頁面。
步驟三:安裝mysql
1、準備編譯環境。
# yum groupinstall "Server Platform Development" "Development tools" -y # yum install cmake -y
2、準備mysql數據存放目錄。
# mkdir /mnt/data # groupadd -r mysql # useradd -r -g mysql -s /sbin/nologin mysql # id mysql uid=497(mysql) gid=498(mysql) groups=498(mysql)
3、更改數據目錄屬主屬組。
# chown -R mysql:mysql /mnt/data
4、解壓編譯在MySQL官網下載的穩定版源碼包,這里使用的是5.6.24版本
# tar xvf mysql-5.6.24.tar.gz -C /usr/local/src # cd /usr/local/src/mysql-5.6.24 # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mnt/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
若出現如下錯誤:
CMake Error at cmake/ssl.cmake:247 (MESSAGE): Cannot find appropriate system libraries for SSL. Make sure you"ve specified a supported SSL version. Consult the documentation for WITH_SSL alternatives Call Stack (most recent call first): CMakeLists.txt:446 (MYSQL_CHECK_SSL) -- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) CMake Error at cmake/readline.cmake:85 (MESSAGE): Curses library not found. Please install appropriate package, remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. Call Stack (most recent call first): cmake/readline.cmake:128 (FIND_CURSES) cmake/readline.cmake:218 (MYSQL_USE_BUNDLED_EDITLINE) CMakeLists.txt:448 (MYSQL_CHECK_EDITLINE) -- Configuring incomplete, errors occurred! See also "/usr/local/src/mysql-5.6.38/CMakeFiles/CMakeOutput.log". See also "/usr/local/src/mysql-5.6.38/CMakeFiles/CMakeError.log".
執行此操作:
rm CMakeCache.txt yum install ncurses-devel
接著:
# make && make install
5、修改安裝目錄的屬組為mysql。
# chown -R mysql:mysql /usr/local/mysql/
6、初始化數據庫。
# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mnt/data/
注:在CentOS 6.5版操作系統的最小安裝完成后,在/etc目錄下會存在一個my.cnf,需要將此文件更名為其他的名字,如:/etc/my.cnf.bak,否則,該文件會干擾源碼安裝的MySQL的正確配置,造成無法啟動。
7、拷貝配置文件和啟動腳本。
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld # chmod +x /etc/init.d/mysqld # cp support-files/my-default.cnf /etc/my.cnf
8、設置開機自動啟動。
# chkconfig mysqld on # chkconfig --add mysqld
9、修改配置文件中的安裝路徑及數據目錄存放路徑。
# echo -e "basedir = /usr/local/mysql datadir = /mnt/data " >> /etc/my.cnf
10、設置PATH環境變量。
# echo "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh # source /etc/profile.d/mysql.sh
11、啟動服務。
# service mysqld start
若出現如下錯誤:
Starting MySQL.Logging to "/mnt/data/localhost.localdomain.err". The server quit without updating PID file (/mnt/data/localh[FAILED]ldomain.pid). [root@localhost mysql]# service mysqld start Starting MySQL.The server quit without updating PID file (/mnt/data/localhost.localdomain.pid). [FAILED]
若重新初始化會遇到這種問題:
[root@localhost scripts]# ./mysql_install_db --user=mysql --datadir=/mnt/data/ FATAL ERROR: Could not find ./bin/my_print_defaults If you compiled from source, you need to run "make install" to copy the software into the correct location ready for operation. If you are using a binary release, you must either be at the top level of the extracted archive, or pass the --basedir option pointing to that location.
然后我們接著往下走:
[root@localhost scripts]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mnt/data & [1] 16068 [root@localhost scripts]# Installing MySQL system tables...2017-12-01 01:23:46 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2017-12-01 01:23:46 0 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap. 2017-12-01 01:23:46 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.6.38) starting as process 16077 ... 2017-12-01 01:23:46 16077 [Note] InnoDB: Using atomics to ref count buffer pool pages 2017-12-01 01:23:46 16077 [Note] InnoDB: The InnoDB memory heap is disabled 2017-12-01 01:23:46 16077 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2017-12-01 01:23:46 16077 [Note] InnoDB: Memory barrier is not used 2017-12-01 01:23:46 16077 [Note] InnoDB: Compressed tables use zlib 1.2.7 2017-12-01 01:23:46 16077 [Note] InnoDB: Using CPU crc32 instructions 2017-12-01 01:23:46 16077 [Note] InnoDB: Initializing buffer pool, size = 128.0M 2017-12-01 01:23:46 16077 [Note] InnoDB: Completed initialization of buffer pool 2017-12-01 01:23:46 16077 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created! 2017-12-01 01:23:46 16077 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB 2017-12-01 01:23:46 16077 [Note] InnoDB: Database physically writes the file full: wait... 2017-12-01 01:23:46 16077 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB 2017-12-01 01:23:46 16077 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB 2017-12-01 01:23:46 16077 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0 2017-12-01 01:23:46 16077 [Warning] InnoDB: New log files created, LSN=45781 2017-12-01 01:23:46 16077 [Note] InnoDB: Doublewrite buffer not found: creating new 2017-12-01 01:23:46 16077 [Note] InnoDB: Doublewrite buffer created 2017-12-01 01:23:46 16077 [Note] InnoDB: 128 rollback segment(s) are active. 2017-12-01 01:23:46 16077 [Warning] InnoDB: Creating foreign key constraint system tables. 2017-12-01 01:23:46 16077 [Note] InnoDB: Foreign key constraint system tables created 2017-12-01 01:23:46 16077 [Note] InnoDB: Creating tablespace and datafile system tables. 2017-12-01 01:23:46 16077 [Note] InnoDB: Tablespace and datafile system tables created. 2017-12-01 01:23:46 16077 [Note] InnoDB: Waiting for purge to start 2017-12-01 01:23:46 16077 [Note] InnoDB: 5.6.38 started; log sequence number 0 2017-12-01 01:23:46 16077 [Note] RSA private key file not found: /mnt/data//private_key.pem. Some authentication plugins will not work. 2017-12-01 01:23:46 16077 [Note] RSA public key file not found: /mnt/data//public_key.pem. Some authentication plugins will not work. 2017-12-01 01:23:47 16077 [Note] Binlog end 2017-12-01 01:23:47 16077 [Note] InnoDB: FTS optimize thread exiting. 2017-12-01 01:23:47 16077 [Note] InnoDB: Starting shutdown... 2017-12-01 01:23:48 16077 [Note] InnoDB: Shutdown completed; log sequence number 1625977 OK Filling help tables...2017-12-01 01:23:48 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2017-12-01 01:23:48 0 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap. 2017-12-01 01:23:48 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.6.38) starting as process 16099 ... 2017-12-01 01:23:48 16099 [Note] InnoDB: Using atomics to ref count buffer pool pages 2017-12-01 01:23:48 16099 [Note] InnoDB: The InnoDB memory heap is disabled 2017-12-01 01:23:48 16099 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2017-12-01 01:23:48 16099 [Note] InnoDB: Memory barrier is not used 2017-12-01 01:23:48 16099 [Note] InnoDB: Compressed tables use zlib 1.2.7 2017-12-01 01:23:48 16099 [Note] InnoDB: Using CPU crc32 instructions 2017-12-01 01:23:48 16099 [Note] InnoDB: Initializing buffer pool, size = 128.0M 2017-12-01 01:23:48 16099 [Note] InnoDB: Completed initialization of buffer pool 2017-12-01 01:23:48 16099 [Note] InnoDB: Highest supported file format is Barracuda. 2017-12-01 01:23:48 16099 [Note] InnoDB: 128 rollback segment(s) are active. 2017-12-01 01:23:48 16099 [Note] InnoDB: Waiting for purge to start 2017-12-01 01:23:48 16099 [Note] InnoDB: 5.6.38 started; log sequence number 1625977 2017-12-01 01:23:48 16099 [Note] RSA private key file not found: /mnt/data//private_key.pem. Some authentication plugins will not work. 2017-12-01 01:23:48 16099 [Note] RSA public key file not found: /mnt/data//public_key.pem. Some authentication plugins will not work. 2017-12-01 01:23:48 16099 [Note] Binlog end 2017-12-01 01:23:48 16099 [Note] InnoDB: FTS optimize thread exiting. 2017-12-01 01:23:48 16099 [Note] InnoDB: Starting shutdown... 2017-12-01 01:23:49 16099 [Note] InnoDB: Shutdown completed; log sequence number 1625987 OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/local/mysql/bin/mysqladmin -u root password "new-password" /usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password "new-password" Alternatively you can run: /usr/local/mysql/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd . ; /usr/local/mysql/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd mysql-test ; perl mysql-test-run.pl Please report any problems at http://bugs.mysql.com/ The latest information about MySQL is available on the web at http://www.mysql.com Support MySQL by buying support/licenses at http://shop.mysql.com New default config file was created as /usr/local/mysql/my.cnf and will be used by default by the server when you start it. You may edit this file to change server settings WARNING: Default config file /etc/my.cnf exists on the system This file will be read by default by the MySQL server If you do not want to use this, either remove it, or use the --defaults-file argument to mysqld_safe when starting the server [1]+ 完成 /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mnt/data
查看以下mysql的狀態:
[root@localhost scripts]# service mysqld status MySQL is not running, but lock file (/var/lock/subsys/mysql[FAILED]
啟動與重啟均沒問題:
[root@localhost scripts]# service mysqld start Starting MySQL.Logging to "/mnt/data/localhost.localdomain.err". [ OK ] [root@localhost scripts]# service mysqld restart Shutting down MySQL. [ OK ] Starting MySQL. [ OK ]
登陸:
# mysql -h 127.0.0.1
步驟四:安裝php-fpm
Nginx本身不能處理PHP,作為web服務器,當它接收到請求后,不支持對外部程序的直接調用或者解析,必須通過FastCGI進行調用。如果是PHP請求,則交給PHP解釋器處理,并把結果返回給客戶端。PHP-FPM是支持解析php的一個FastCGI進程管理器。提供了更好管理PHP進程的方式,可以有效控制內存和進程、可以平滑重載PHP配置。
1、安裝依賴包。
yum install libmcrypt libmcrypt-devel mhash mhash-devel libxml2 libxml2-devel bzip2 bzip2-devel
2、解壓官網下載的源碼包,編譯安裝。
# tar xvf php-5.6.23.tar.bz2 -C /usr/local/src # cd /usr/local/src/php-5.6.23 # ./configure --prefix=/usr/local/php --with-config-file-scan-dir=/etc/php.d --with-config-file-path=/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --with-openssl --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-bz2 --with-curl # make && make install
3、添加php和php-fpm配置文件。
# cp /usr/local/src/php-5.6.23/php.ini-production /etc/php.ini # cd /usr/local/php/etc/ # cp php-fpm.conf.default php-fpm.conf # sed -i "s@;pid = run/php-fpm.pid@pid = /usr/local/php/var/run/php-fpm.pid@" php-fpm.conf
4、添加php-fpm啟動腳本。
# cp /usr/local/src/php-5.6.23/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm # chmod +x /etc/init.d/php-fpm
5、添加php-fpm至服務列表并設置開機自啟。
# chkconfig --add php-fpm # chkconfig --list php-fpm # chkconfig php-fpm on
6、啟動服務。
# service php-fpm start
若出現如下情況:
[root@localhost etc]# service php-fpm start Starting php-fpm [01-Dec-2017 02:31:24] WARNING: Nothing matches the include pattern "/usr/local/php/etc/php-fpm.d/*.conf" from /usr/local/php/etc/php-fpm.conf at line 125. [01-Dec-2017 02:31:24] ERROR: No pool defined. at least one pool section must be specified in config file [01-Dec-2017 02:31:24] ERROR: failed to post process the configuration [01-Dec-2017 02:31:24] ERROR: FPM initialization failed failed
執行此操作:
[root@localhost etc]# cd php-fpm.d/ [root@localhost php-fpm.d]# ll 總用量 20 -rw-r--r-- 1 root root 18517 12月 1 02:27 www.conf.default [root@localhost php-fpm.d]# cp www.conf.default www.conf [root@localhost php-fpm.d]# service php-fpm start Starting php-fpm done [root@localhost php-fpm.d]#
7、添加nginx對fastcgi的支持,首先備份默認的配置文件。
# cp /etc/nginx/nginx.conf /etc/nginx/nginx.confbak # cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
編輯/etc/nginx/nginx.conf,在所支持的主頁面格式中添加php格式的主頁,類似如下:
location / { root /usr/local/nginx/html; index index.php index.html index.htm; }
取消以下內容前面的注釋:
location ~ .php$ { root /usr/local/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; }
重新載入nginx的配置文件。
# service nginx reload
在/usr/local/nginx/html/新建index.php的測試頁面,內容如下。
# cat index.php php $conn=mysql_connect("127.0.0.1","root",""); if ($conn){ echo "LNMP platform connect to mysql is successful!"; }else{ echo "LNMP platform connect to mysql is failed!"; } phpinfo(); ?>
瀏覽器訪問測試,如看到以下內容則表示LNMP平臺構建完成。
Done!
如有疑問,歡迎各位大佬指點、批評。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26148.html
摘要:準備工作服務器最好使用服務器,小白推薦安裝寶塔面板。備案域名小程序賬號建議注冊企業賬號,可以使用已認證的公眾號快速創建。七牛賬號使用,加快網站訪問速度。如需使用小程序發帖,也會用到。注意不要使用以下的。 showImg(https://segmentfault.com/img/bVUUeU?w=600&h=280); 準備工作 1服務器 最好使用Linux服務器,小白推薦安裝寶塔面板。...
摘要:本文是本人在搭建阿里云的服務器環境的時候,結合阿里云提供的文檔和自己編譯安裝過程中的各種得來。適用對象適用于熟悉操作系統,剛開始使用阿里云進行建站的個人用戶。 本文是本人在搭建阿里云的ECS服務器環境的時候,結合阿里云提供的文檔和自己編譯安裝過程中的各種ERROR得來。 適用對象 適用于熟悉Linux操作系統,剛開始使用阿里云進行建站的個人用戶。 基本流程 使用云服務器 ECS 搭建L...
閱讀 2761·2021-09-24 10:34
閱讀 1862·2021-09-22 10:02
閱讀 2252·2021-09-09 09:33
閱讀 1458·2021-08-13 15:02
閱讀 3270·2020-12-03 17:10
閱讀 1180·2019-08-30 15:44
閱讀 2144·2019-08-30 12:58
閱讀 3229·2019-08-26 13:40