成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用URLOS低門檻快速開發(fā)和分發(fā)docker應(yīng)用,未來微服務(wù)發(fā)展大趨勢

張巨偉 / 2390人閱讀

摘要:使用技術(shù)可以幫助企業(yè)快速水平擴(kuò)展服務(wù),從而到達(dá)彈性部署業(yè)務(wù)的能力。例如我們要安裝然后使用查看我們的擴(kuò)展是否安裝成功。啟動(dòng)和,檢查是否正常運(yùn)行。單容器運(yùn)行若勾選,則表示安裝此應(yīng)用時(shí),每個(gè)服務(wù)只運(yùn)行一個(gè)容器。

使用Docker技術(shù)可以幫助企業(yè)快速水平擴(kuò)展服務(wù),從而到達(dá)彈性部署業(yè)務(wù)的能力。在云服務(wù)概念興起之后,Docker的使用場景和范圍進(jìn)一步發(fā)展,如今在微服務(wù)架構(gòu)越來越流行的情況下,微服務(wù)+Docker的完美組合,更加方便微服務(wù)架構(gòu)運(yùn)維部署落地。

如何快速入門docker,開發(fā)屬于自己的容器應(yīng)用?我們今天不整虛的,來點(diǎn)實(shí)打?qū)嵉母韶洠豪肬RLOS快速開發(fā)docker應(yīng)用,并可隨意將應(yīng)用導(dǎo)出給他人使用。

對URLOS不了解的朋友,這里大概介紹一下,URLOS是一個(gè)容器云管理面板,基于Docker容器技術(shù)打包和運(yùn)行應(yīng)用,可自動(dòng)識別機(jī)器和云應(yīng)用的故障并將云應(yīng)用轉(zhuǎn)移至可用的機(jī)器上,單機(jī)故障并不影響業(yè)務(wù)開展,配合云存儲(chǔ)便可輕松搭建7x24小時(shí)持續(xù)運(yùn)行的應(yīng)用環(huán)境。
URLOS官網(wǎng):https://www.urlos.com/
URLOS安裝方法:https://www.urlos.com/center-...
URLOS開發(fā)交流QQ群:695164700,147882180
URLOS微信公眾號:

安裝URLOS:

curl -SO https://www.urlos.com/install && chmod 544 install && ./install

安裝完成后,地址欄輸入 http://ip:9968 即可訪問。

劃重點(diǎn):利用URLOS開發(fā)docker應(yīng)用的最基本的流程:

這里我們以制作一個(gè)LNP(linux+nginx+php)網(wǎng)站環(huán)境為例,快速制作一個(gè)可以導(dǎo)出給他人使用的docker應(yīng)用。

在開始制作之前,我們先到docker官網(wǎng)注冊一個(gè)賬號,這樣我們才能將制作好的鏡像上傳到docker倉庫,打開https://hub.docker.com/

有了hub賬號,那么我們開始制作吧!

第一步:拉取鏡像,啟動(dòng)容器,進(jìn)入容器

使用SSH工具連接主機(jī),輸入以下命令拉取一個(gè)php:7.3.3-fpm-stretch鏡像,啟動(dòng)容器并進(jìn)入這個(gè)容器內(nèi)部:

docker run -it php:7.3.3-fpm-stretch bash


看到類似上圖中類似的字符串時(shí),表示已經(jīng)成功進(jìn)入容器內(nèi)部,這個(gè)便是當(dāng)前容器的ID

第二步:更新鏡像,安裝我們要的nginx以及PHP相關(guān)擴(kuò)展

先更新一下鏡像源,國內(nèi)用阿里的會(huì)快一些

set -ex  && sed -i "[email protected]@mirrors.aliyun.com@" /etc/apt/sources.list
set -ex  && sed -i "[email protected]@mirrors.aliyun.com@" /etc/apt/sources.list
apt-get update

更新完成之后,再來安裝nginx,默認(rèn)安裝目錄為/etc/nginx

apt-get install -y nginx

官方鏡像默認(rèn)是沒有ps -ef 命令,因此需要手動(dòng)安裝

apt-get install -y procps

安裝PHP擴(kuò)展。安裝php自帶的一些擴(kuò)展時(shí),可以使用docker-php-ext-configuredocker-php-ext-install。
例如我們要安裝pdo_mysql:

docker-php-ext-configure pdo_mysql
docker-php-ext-install pdo_mysql

然后使用 php -m查看我們的擴(kuò)展是否安裝成功。使用這種方式安裝,系統(tǒng)會(huì)自動(dòng)生成一個(gè)配置文件,提供給
php加載,使用命令查看:

ls -l /usr/local/etc/php/conf.d/

gd擴(kuò)展安裝

apt-get install -y libfreetype6-dev 
libjpeg62-turbo-dev 
libpng-dev
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpegdir=/usr/include/
docker-php-ext-install gd

如果需要安裝memcached、redis擴(kuò)展,則需要下載擴(kuò)展到容器,然后手動(dòng)編譯安裝。地址:
https://pecl.php.net/package/...
https://pecl.php.net/package/...
memcached擴(kuò)展安裝:

curl -O https://pecl.php.net/get/memcached-3.1.3.tgz
tar xf memcached-3.1.3.tgz && cd memcached-3.1.3
phpize
./configure

編譯過程中若出現(xiàn)以下錯(cuò)誤提示:

則執(zhí)行安裝命令,然后重新編譯安裝memcached擴(kuò)展:

apt-get install -y libmemcached-dev
./configure
make && make install

添加extension=memcached.so語句到php.ini文件。安裝完成后通過命令查看擴(kuò)展存放的位置

ls /usr/local/lib/php/extensions/no-debug-non-zts-20170718/

php安裝目錄:/usr/local/php
php.ini的配置文件目錄:/usr/local/etc/php/。在這個(gè)目錄下有兩個(gè)文件:php.ini-developmentphp.iniproduction。
因此,我們需要將php.ini-production文件重命名為php.ini。以后手動(dòng)編譯安裝php擴(kuò)展后需要添加extension=xx.so到php.ini。
啟動(dòng)Nginx和php,檢查是否正常運(yùn)行。

nginx && php-fpm -D
第三步:打包鏡像

在打包成鏡像之前,我們先將nginx、php-fpm關(guān)閉,刪除一些不需要的應(yīng)用以及清理一些安裝的緩存文件,從而減小最終打包成鏡像的大小。

apt-get purge vim make
apt-get autoremove
apt-get autoclean
rm -f /usr/local/etc/php/conf.d/* #統(tǒng)一將php擴(kuò)展寫入到php.ini文件

然后,輸入exit退出容器,通過以下命令將更新過的容器重新打包成一個(gè)新鏡像:

docker commit -m="php-nginx-website" -a="yourname" 96b3f038590b yourhubid/php-nginx:v0.1.0

參數(shù)說明:

-m:提交的描述信息
-a:指定鏡像作者
96b3f038590b:容器ID
yourhubid/php-nginx:v0.1.0:指定要?jiǎng)?chuàng)建的目標(biāo)鏡像名

可以使用docker images命令來查看我們的新鏡像

第四步:上傳鏡像

使用docker login命令登錄 hub.docker.com,按提示輸入賬號和密碼即可
使用docker push命令將打包好的新鏡像上傳至鏡像倉庫:

docker push yourhubid/php-nginx:v0.1.0
第五步:登錄URLOS制作應(yīng)用

注意:需要修改將/data/urlos/master-config/config.jsonc文件的envType的值設(shè)置為dev(開發(fā)環(huán)境):

vim /data/urlos/master-config/config.jsonc

添加鏡像

瀏覽器地址欄輸入http://主機(jī)ip:9968,登錄URLOS,在左側(cè)菜單欄選擇鏡像管理,然后點(diǎn)擊右上角的添加按鈕。

輸入鏡像名稱

鏡像地址

開發(fā)者信息

添加LNP應(yīng)用

在左側(cè)菜單中選擇應(yīng)用管理。然后點(diǎn)擊右上角的添加應(yīng)用按鈕:


應(yīng)用的基本信息如上圖所示。
鏡像:選擇上一步驟添加的鏡像。
URLOS最低版本號:如設(shè)置此選項(xiàng)則表示安裝URLO的版本高于或者等于當(dāng)前設(shè)置的值,才允許用戶安裝
使用。
容器端口:容器啟動(dòng)時(shí)對外通信的端口,即參數(shù)-p。網(wǎng)站的80、443等端口默認(rèn)是對外開發(fā)的,在這里可
以不用設(shè)置。如必須特定端口時(shí),設(shè)置的格式{"22":true}。
標(biāo)簽:應(yīng)用標(biāo)簽多用于搜索場景。

選項(xiàng)開關(guān)注解:
固定節(jié)點(diǎn)運(yùn)行:若勾選,則表示用戶在安裝此應(yīng)用時(shí)(創(chuàng)建此應(yīng)用的服務(wù))需要選擇安裝在某個(gè)節(jié)點(diǎn)(云
主機(jī))。若取消勾選,則表示此應(yīng)用安裝在選擇的集群(單容器運(yùn)行也取消勾選),可達(dá)到負(fù)載均衡,故障
轉(zhuǎn)移的效果。
單容器運(yùn)行:若勾選,則表示安裝此應(yīng)用時(shí),每個(gè)服務(wù)只運(yùn)行一個(gè)容器。與固定節(jié)點(diǎn)運(yùn)行配合使用,即固
定節(jié)點(diǎn)運(yùn)行時(shí),則單容器運(yùn)行。
允許特權(quán)允許:若勾選,則容器內(nèi)的root擁有了真正的root權(quán)限(宿主機(jī)器的root),在容器內(nèi)部就可以做
任何事情(包括修改宿主機(jī)器的文件,啟動(dòng)宿主機(jī)器其他容器,執(zhí)行mount等操作),不建議勾選。
以root用戶允許容器:這里的root用戶是容器外部的一個(gè)普通用戶,默認(rèn)勾選。若容器內(nèi)部的程序禁止
root用戶允許,則取消(如:MySQL)。
掛載存儲(chǔ)目錄:如需要從宿主機(jī)器掛載文件到容器,則勾選。即參數(shù) -v。
掛載時(shí)區(qū)定義文件:容器的時(shí)間與宿主機(jī)器的時(shí)間保持一致。
容器只讀:禁止向容器寫數(shù)據(jù)。
全局網(wǎng)絡(luò):允許同一集群不同容器網(wǎng)絡(luò)的容器通信。
允許快照備份:勾選則允許執(zhí)行快照備份(僅掛載了本地存儲(chǔ)時(shí)有效)

開啟反向代理,則可以實(shí)現(xiàn)多容器共享端口,反之則不能。



注解:
插件:由PHP語言編輯的腳本文件組成。插件的使用會(huì)讓用戶在安裝應(yīng)用(創(chuàng)建服務(wù))時(shí)更便捷,更智
能。這里選擇phpWebSite:v0_1_0 --- Liu Xin ---php網(wǎng)站環(huán)境這個(gè)插件即可。(制作插件后續(xù)會(huì)有詳細(xì)說
明)
服務(wù)別名:創(chuàng)建服務(wù)時(shí),在左上角顯示的描述。
應(yīng)用數(shù)據(jù)別名:創(chuàng)建服務(wù)完成后,服務(wù)產(chǎn)生的數(shù)據(jù)或者用戶基于創(chuàng)建的服務(wù)需要添加新的數(shù)據(jù),對這些數(shù)
據(jù)管理取的名字,即為應(yīng)用數(shù)據(jù)別名。(如:創(chuàng)建MySQL數(shù)據(jù)庫服務(wù),用戶可以手動(dòng)添加數(shù)據(jù)庫,創(chuàng)建網(wǎng)
站服務(wù)時(shí)也可以新增數(shù)據(jù)庫。)
服務(wù)表單步驟:創(chuàng)建服務(wù)時(shí),用戶填寫表單的步驟。(數(shù)字表示必填,其他符號表示選填)
額外掛載:將宿主機(jī)器的除存儲(chǔ)目錄外的其他目錄掛載到容器。
額外啟動(dòng)參數(shù):通過docker run運(yùn)行容器時(shí)的額外參數(shù),如:--add-host a.com:192.168.0.1

注解:
安裝腳本:安裝應(yīng)用時(shí)需要執(zhí)行的腳本命令。

test -d /etc/nginx/conf.d/ || mkdir -p /etc/nginx/conf.d/

啟動(dòng)腳本:需要啟動(dòng)程序的命令。

nginx
php-fpm -D

狀態(tài)腳本:每隔2秒執(zhí)行此腳本,用來檢查程序是否正常允許。當(dāng)前的腳本命令用來檢查apache是否啟動(dòng)。

status1=0 && (ps -ef|grep "php-fpm"|grep "master process"|grep -v "grep") &&
status1=1;
status2=0 && (ps -ef|grep "nginx"|grep "master process"|grep -v "grep") &&
status2=1;
if [ ${status1} != 0 ] && [ ${status2} != 0 ]; then
statusScriptResult=1
fi

監(jiān)控腳本:每隔1秒執(zhí)行此腳本,檢查狀態(tài)腳本返回的結(jié)果判斷程序是否正常允許。若異常,則執(zhí)行退腳本。

{w:statusScript:w}
[ "$statusScriptResult" != 1 ] && exit 1

退出腳本:容器關(guān)閉時(shí)之前,執(zhí)行的腳本。如同,我們關(guān)閉電腦時(shí),系統(tǒng)會(huì)關(guān)閉正在允許的程序。

添加LNP模板

在這個(gè)應(yīng)用,我們需要添加模板php.ini、vhost.conf,然后在這兩個(gè)模板的參數(shù)設(shè)置一些變量,這樣用戶在安裝應(yīng)用時(shí),就可以根據(jù)自己的需要?jiǎng)討B(tài)的調(diào)整。(如:設(shè)置php的上傳大小,最大內(nèi)存等)那么如何添加模板呢?我們在應(yīng)用管理列表中找到上述創(chuàng)建的應(yīng)用,然后點(diǎn)擊右側(cè)的更多選擇管理模板。


添加一個(gè)php.ini模板,然后在模板內(nèi)容將php.ini文件內(nèi)容復(fù)制進(jìn)入,同時(shí)設(shè)置變量{w:upload_max_filesize:w}{w:PHP_memory_limit:w}。

[PHP]
engine = On
short_open_tag = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = -1
disable_functions =
disable_classes =
zend.enable_gc = On
expose_php = On
max_execution_time = 30
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = {w:PHP_memory_limit:w}
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
default_charset = "UTF-8"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = {w:upload_max_filesize:w}
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
extension=gd.so
extension=memcached.so
extension=sockets.so
extension=mysqli.so
extension=pdo_mysql.so
[CLI Server]
cli_server.color = On
[Date]
[filter]
[iconv]
[imap]
[intl]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.cookie_samesite =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.sid_length = 26
session.trans_sid_tags = "a=href,area=href,frame=src,form="
session.sid_bits_per_character = 5
[Assertion]
zend.assertions = -1
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[dba]
[opcache]
[curl]
[openssl]

添加Nginx的虛擬站點(diǎn)配置vhost.conf模板

server {
server_name {w:domains:w};
{w:listenLines:w}
set $websiteRoot "/data/www/{w:indexDirName:w}";
root $websiteRoot;
index index.html index.htm index.php;
client_max_body_size {w:upload_max_filesize:w};
client_body_buffer_size 128;
location / {
{w:rewriteContents:w}
}
location ~ .(php|phtml)$ {
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
}
location ~ /.ht {
deny all;
}
}
添加變量

變量分為:環(huán)境變量、數(shù)據(jù)變量和擴(kuò)展變量。在這里只需要添加擴(kuò)展變量。
環(huán)境變量:在操作系統(tǒng)中用來指定操作系統(tǒng)運(yùn)行環(huán)境的一些參數(shù),與平常使用的環(huán)境變量相同。有時(shí)容器啟動(dòng)需要設(shè)置一些參數(shù)提供給容器內(nèi)部的程序。如:MySQL容器啟動(dòng)時(shí)可以設(shè)置MYSQL_ROOT和MYSQL_ROOT_PASSWORD。
數(shù)據(jù)變量:添加存儲(chǔ)數(shù)據(jù)時(shí)設(shè)置的一些參數(shù)。如:往MySQL數(shù)據(jù)服務(wù)添加數(shù)據(jù)庫時(shí),需要填寫dbName,dbPassword,status,charset。具體可以使用可以創(chuàng)建MySQL服務(wù),然后在管理數(shù)據(jù)庫中添加數(shù)據(jù)庫。
擴(kuò)展變量:即普通變量。如:上述在模板中設(shè)置的變量{w:upload_max_filesize:w}、{w:PHP_memory_limit:w}。變量的格式:{w:變量名:w}。
添加PHP最大內(nèi)存變量:PHP_memory_limit


添加上傳大小限制:upload_max_filesize


至此,LMP應(yīng)用已經(jīng)制作完成,我們在應(yīng)用管理列表中,選擇剛才制作好的應(yīng)用,點(diǎn)擊創(chuàng)建服務(wù)

部署完成后,地址欄輸入域名訪問一下,如果訪問正常,說明我們制作的應(yīng)用沒有問題了,可以導(dǎo)出供他人安裝!

第六步:導(dǎo)出應(yīng)用

將我們制作的應(yīng)用導(dǎo)出,可將導(dǎo)出的文件發(fā)布到任何地方,供他人安裝使用,只要對方的主機(jī)安裝了URLOS,都可以完美運(yùn)行(無需考慮兼容性問題)我們制作的應(yīng)用。

導(dǎo)出的文件為txt文本。只要其他用戶使用URLOS直接導(dǎo)即可。下面是導(dǎo)入方法:
打開文本,全選復(fù)制其中內(nèi)容

登錄URLOS,在左側(cè)菜單點(diǎn)擊導(dǎo)入應(yīng)用,將內(nèi)容粘貼進(jìn)去,提交


導(dǎo)入成功?。↑c(diǎn)擊安裝即可。哈哈,太爽了吧。任何服務(wù)器環(huán)境可以使用的應(yīng)用都可以用這個(gè)方法來制作,比如微信小程序后端部分等等都可以這樣制作,方便分發(fā)和安裝。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27771.html

相關(guān)文章

  • 誰是云計(jì)算市場的新變量?

    摘要:云計(jì)算深入,驅(qū)動(dòng)市場過去十年,云計(jì)算服務(wù)取得了長足的發(fā)展。之于云計(jì)算的重要性,相當(dāng)于操作系統(tǒng)之于電腦。細(xì)分市場投融資活躍全球云計(jì)算服務(wù)模式中,雖然市場份額最小,但是增速卻是最快的。向進(jìn)軍已是云計(jì)算產(chǎn)業(yè)投資者和創(chuàng)業(yè)者的新戰(zhàn)略方向。1. 互聯(lián)網(wǎng)應(yīng)用風(fēng)口快速迭代,為企業(yè)提供風(fēng)口型解決方案的PaaS服務(wù)商重要性凸顯。2. PaaS領(lǐng)域資本熱度增高,Docker技術(shù)平臺和通訊云平臺是今年最熱的細(xì)分領(lǐng)域...

    justjavac 評論0 收藏0
  • 當(dāng)智能汽車變成一個(gè)超級計(jì)算機(jī),傳統(tǒng)車廠還有機(jī)會(huì)嗎?

    摘要:由于汽車對安全性可靠性實(shí)時(shí)性,和傳感器帶寬算力的高要求,及其復(fù)雜的軟件供應(yīng)鏈生態(tài),智能汽車會(huì)催生下一代計(jì)算操作系統(tǒng)。軟件生態(tài)與容器放眼智能汽車的生態(tài)圈,今天的座艙與兩個(gè)域計(jì)算機(jī)都是以整體解決方案的方式售賣給整車廠。 ?【CSDN 編者按】智能汽車正在被軟件定義,而以軟件為中心的新架構(gòu)也...

    不知名網(wǎng)友 評論0 收藏0
  • 詳解云原生應(yīng)用實(shí)踐與未來趨勢

    摘要:近日,愛分析在京舉辦了愛分析中國云計(jì)算高峰論壇,本次論壇以云化萬物,智動(dòng)未來為主題,探討云計(jì)算行業(yè)的發(fā)展趨勢。演講實(shí)錄黃啟功大家好首先做一下自我介紹,我是時(shí)速云黃啟功,感謝愛分析的邀請,我今天分享的主題叫云原生應(yīng)用實(shí)踐與未來趨勢。 近日,愛分析在京舉辦了 2018 愛分析·中國云計(jì)算高峰論壇,本次論壇以云化萬物,智動(dòng)未來為主題,探討云計(jì)算行業(yè)的發(fā)展趨勢。愛分析邀請了云計(jì)算領(lǐng)域標(biāo)桿公司時(shí)...

    wujl596 評論0 收藏0

發(fā)表評論

0條評論

張巨偉

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<